Hallo Teamcenter 4Tier Anwender,
aufgrund einer bevorstehenden Umstellung auf Teamcenter 8 UA 4Tier möchte ich nach Optimierungspotential suchen bzw. Tuning - Paramater ausfindig machen, um die neue Instanz von Anfang an performanter einrichten zu können. Speziell bei der Einrichtung ORACLE <-> ORACLE .NET LISTENER <-> JBOSS <-> Pool Manager TreeCache sehe ich hier einiges an Optimierungspotential. So ist aus meiner Sicht eine Teamcenter Standard Installation nicht auf optimale Leistung abgestimmt. Bei uns habe ich zum Beispiel festgestellt, dass die Antwortszeiten und die Stabilität der 4Tier Architektur sehr stark von den gwählten Einstelungen abhängen. Zum Beispiel:
- LOCALHOST: Hier habe ich festegestellt, dass man aufpassen sollte, dass in der Windows hosts Dateie der lokale Server auch mit der localhost IP 127.0.0.1 aufgelistet ist, wenn Datenbank und Web Server auf einem Rechner laufen. So wird das Netzwerk zum Teil umgangen. Andernfalls erfolgt jeder Datentransfer erst über das gesamte Netzwerk.
- ORACLE LISTENER: Hier habe ich festgestellt, dass es einen erheblichen Untershied macht, wenn man auch hier auf die Umgehung des Netzwerks achtet.
- JBOSS: Nur mit der Server JVM läuft der auch stabil im produktiven Einsatz. Hier sind die weiteren Optimierungsparameter sehr zahlreich.
- POOL MANAGER: Hier muss man nach meiner Ansicht auf die Time Out Settings achten, da sonst Verbindung unnötig abgebrochen werden.
In diesem Bereich würde ich gerne verschiedene Einstellungen und Szenarien hinsichtlich der möglichen Listungssteigerungen diskutieren bzw. mit anderen Einstellungen abgleichen.
1. Die Windows "hosts" Datei unter C:\WINDOWS\system32\drivers\etc
Hier habe ich den IP Verweis unseres Servers umgestellt von der realen IP auf die LOOPBACK IP 127.0.0.1
#X.X.X.X vmserv2
127.0.0.1 vmserv2
Und schon war eine Beschleunigung bei fast allen Aktivitäten messbar, bei denen Komponenten zusammspielen, die auf den Server vmserv2 verweisen. Da alle diese Komponenten auf dem gleichen Server arbeiten brachte das schon mal einen Geschwindigkeitseffekt
2. ORACLE sqlnet.ora, tnsnames.ora, listener.ora unter ORACLE_HOME\Network\Admin
Derzeit nutze ich folgende Einstellungen im Test
sqlnet.ora:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
DEFAULT_SDU_SIZE=8192
SQLNET.EXPIRE_TIME=10
disable_oob=ON
BREAK_POLL_SKIP=10000
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
tnsnames.ora:
TC =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS =
(PROTOCOL = BEQ)
(PROGRAM = oracle)
(ARGV0 = oracletc)
(ARGS = '(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))')
)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = tc)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
listener.ora:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(epc_disabled = TRUE)
(SDU = 8192)
(TDU = 8122)
(SID_NAME = PLSExtProc)
(ORACLE_HOME = d:\oracle10.2)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = tc)
(GLOBAL_DBNAME = tc)
(ORACLE_HOME = d:\oracle10.2)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)(SEND_BUF_SIZE = 15290)(RECV_BUF_SIZE = 15290))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vmserv2)(PORT = 1521)(SEND_BUF_SIZE = 15290)(RECV_BUF_SIZE = 15290))
)
)
Speziell die SDU / TDU Parameter scheinen spürbare Beschleunigungen zu bringen
3. JBOSS
Wenn man den JBOSS über das zusätzliche JBOSS native Package als Windows Dienst implementiert scheinen sich ebenfalls Beschleunigungseffekte zu ergeben. Zudem habe ich derzeit folgende JVM Optionen in der run.bat im JBOSS_HOME\bin im Einsatz
set JAVA_OPTS=
rem use the server Java Virtual Machine
set JAVA_OPTS=%JAVA_OPTS% -server
rem set the thread priority
rem set JAVA_OPTS=%JAVA_OPTS% -XX:ThreadPriorityPolicy=1
rem set the Heap sizes
set JAVA_OPTS=%JAVA_OPTS% -Xmx256m -Xmx256m
rem set the mem size ratio for the younger generation
set JAVA_OPTS=%JAVA_OPTS% -XX:NewRatio=2
rem set the mem size ratio for the Eden Space
set JAVA_OPTS=%JAVA_OPTS% -XX:SurvivorRatio=6
rem Assign fixed space for each Thread
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseTLAB
set JAVA_OPTS=%JAVA_OPTS% -XX:TLABSize=64k
rem how many carbage coolections have to be passed
rem set JAVA_OPTS=%JAVA_OPTS% -XX:MaxTenuring-Threshold=32
rem set mem size for the permanent generation
rem -XX:MaxPermSize=64m
rem Use New Parallel Garbage Collection
rem set JAVA_OPTS=%JAVA_OPTS% -XX:+UseParNewGC
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseParallelGC
set JAVA_OPTS=%JAVA_OPTS% -XX:ParallelGCThreads=2
rem set the garbage collection time
set JAVA_OPTS=%JAVA_OPTS% -Dsun.rmi.dgc.client.gcInterval=3600000
set JAVA_OPTS=%JAVA_OPTS% -Dsun.rmi.dgc.server.gcInterval=3600000
rem ignore System.gc() requests
set JAVA_OPTS=%JAVA_OPTS% -XX:+DisableExplicitGC
rem use the Aggressive Heap memory
set JAVA_OPTS=%JAVA_OPTS% -XX:+AggressiveHeap
set JAVA_OPTS=%JAVA_OPTS% -XX:+AdjustConcurrency
set JAVA_OPTS=%JAVA_OPTS% -Xconcurrentio
rem Activate the Garbage Collection Report
rem set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintHeapAtGC
rem set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCTimestamp
rem set JAVA_OPTS=%JAVA_OPTS% -Xloggc:C:\temp\GCdata.log
Auch habe ich festgestellt, dass man immer die letzte JVM als Basis einsetzen sollte. Derzeit ist das bei mir die JVM Version: 17.0-b17 (Sun Microsystems Inc.) aus dem Java SE Development Kit 6u21 Win32 Package.
4. Pool Manager (JBOSS TreeCache)
Hier habe ich noch nichts signifikates gefunden. Derzeit arbeite ich mit den folgenden Einstellungen für JVM in der mgrstartc.bat
set JAVA_OPTS=%JAVA_OPTS% -server -Xms256m -Xmx256m
set JAVA_STACK_SIZE=-Xss64k
In der Testumgebung sind derzeit folgende Parameter inder .properties im Einsatz
CACHE_CONFIG_PATH=TreeCacheTCPtc8test.xml
POOL_ID=PoolA
PROCESS_MAX=30
PROCESS_WARM=1
PROCESS_TARGET=0000 4
MAX_CPU_LOAD=80
ENABLE_CPU_LIMIT_CHECK=0
CPU_CHECK_INTERVAL=10
LOGINS_PER_MINUTE=0
JMX_HTTP_ADAPTOR_PORT=8082
In der TreeCache*.xml steht derzeit
<attribute name="ClusterConfig">
<config>
<TCP start_port="17800" end_port="17800" sock_conn_timeout="2000" />
<TCPPING initial_hosts="localhost[17810]" port_range="1" timeout="30000" num_initial_members="1" up_thread="true" down_thread="true" />
<MERGE2 min_interval="5000" max_interval="10000" />
<FD_SOCK />
<VERIFY_SUSPECT timeout="3000" down_thread="false" up_thread="false" />
<pbcast.NAKACK down_thread="true" up_thread="true" gc_lag="100" retransmit_timeout="3000" />
<pbcast.STABLE desired_avg_gossip="20000" down_thread="false" up_thread="false" />
<pbcast.GMS join_timeout="1250" join_retry_timeout="2000" shun="false" print_local_addr="true" down_thread="true" up_thread="true" />
<pbcast.STATE_TRANSFER up_thread="true" down_thread="true" />
</config>
</attribute>
Hat jemand signifikant andere Einstellungen und glaubt, dass sein System eine super Perfomance hat. Ich würde gerne andere Parameter testen.
Zudem habe ich bisher noch keine einfache Lösungen gefunden um die Performance des Systems genauer Monitoren zu können. Derzeit läuft hier sehr viel über Trial and Error. Ich würde jedoch gerne verschiedene Bausteine der Umgebung mittel Parser - Skripten und GNUPLOT oder anderen Werzeugen grafisch darstellen.
So würde ich gerne die Antwortszeiten der verschiedenen Bausteine abprüfen. Dden Netzwerktransfer analysieren. Hat jemand hierzu kostenlose Tools im Einsatz?
Gruß
Matthias
[Diese Nachricht wurde von MAhrens am 03. Feb. 2011 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP