![[Linux]](../images/linux.gif)
SIP-Servlets für Linux optimieren
Verwenden Sie die Optimierungstipps für SIP-Servlets (Session Initiation Protocol), wenn Sie mit einem Linux-2.6-Kernel arbeiten.
Informationen zu diesem Vorgang
Ein SIP-Servlet (Session Initiation Protocol), das unter Belastung steht, kann Nachrichten erneut übertragen
oder Aufrufe übergehen.
Die Warteschlangen des UDP-Socket können sich füllen. Bei einer Überprüfung der Ausgabe einer ausführlichen Garbage-Collection
kann sich herausstellen, dass die Garbage-Collections relativ lang dauern, z. B.
0,5 bis 1,5 Sekunden. Die Ursache dieses Problems ist die fehlende Optimierung von WebSphere® Application
Server und/oder des Ethernet-Treibers und/oder des Betriebssystems Linux® für SIP-Anwendungen.
Sie können die folgenden Optimierungsstufen anwenden.
Anmerkung: Die folgenden Empfehlungen wurden nur unter
Red Hat Enterprise Linux 4 getestet und werden hier ohne gesetzliche Gewährleistung bereitgestellt.
Vorgehensweise
- Linux-Ethernet-Treiber optimieren.
Die Optimierung des Linux-Ethernet-Treibers beginnt mit der Auswahl des besten Ethernet-Treibers. Der empfohlene Treiber für HS20-Blades ist beispielsweise der Treiber tg3-3.43b (oder höher). Die folgenden Shell-Befehle wurden zum Optimieren des Ethernet-Treibers für den Linux-Kernel verwendet:
Je nach installiertem Ethernet-Treiber müssen einige dieser Optionen geändert werden./sbin/ifconfig eth0 txqueuelen 2000 /sbin/ifconfig eth1 txqueuelen 2000 ethtool -s eth0 autoneg off speed 1000 duplex full ethtool -A eth0 autoneg off rx on tx on ethtool -C eth0 adaptive-rx off adaptive-tx off rx- usecs 20 rx-frames 5 tx-usecs 60 tx-frames 11 ethtool -G eth0 rx 511 rx-jumbo 255 tx 511
- Linux-Kernel optimieren. Für die Optimierung des Linux-Kernel wurden die folgenden Befehle verwendet:
Diese Konfiguration kann für eine bestimmte Anwendung nicht optimal sein. In diesem Fall müssen Sie die Konfiguration anpassen, um die beste Leistung zu erzielen. Sie können diese Werte jedoch als Ausgangspunkt verwenden.echo 16777216 > /proc/sys/net/core/rmem_max echo 2097152 > /proc/sys/net/core/rmem_default echo 16777216 > /proc/sys/net/core/wmem_max echo 2097152 > /proc/sys/net/core/wmem_default echo 10000000 > /proc/sys/net/core/optmem_max echo 4096 87380 16777216 > /proc/sys/net/ipv4/tcp_rmem echo 4096 87380 16777216 > /proc/sys/net/ipv4/tcp_wmem echo 8388608 8388608 8388608 > /proc/sys/net/ipv4/tcp_mem echo 400 > /proc/sys/net/unix/max_dgram_qlen echo 400 > /proc/sys/net/core/message_burst echo 2800 > /proc/sys/net/core/mod_cong echo 1000 > /proc/sys/net/core/lo_cong echo 200 > /proc/sys/net/core/no_cong echo 2900 > /proc/sys/net/core/no_cong_thresh echo 3000 > /proc/sys/net/core/netdev_max_backlog
- SIP-Optimierung für WebSphere Application Server. Führen Sie die folgenden Schritte aus, um SIP für
WebSphere Application Server zu optimieren:
- Erstellen Sie einen separaten Thread-Pool für den SIP-Servlet-Container. Verwenden Sie in der Administrationskonsole den folgenden Navigationspfad:
- Klicken Sie auf Server > Servertypen > WebSphere-Anwendungsserver > Servername.
- Klicken Sie unter "Weitere Eigenschaften" auf Thread-Pools > Neu.
- Geben Sie SipContainer im Feld "Name" ein.
- Geben Sie in den Feldern Mindestgröße und Maximale Größe jeweils 15 ein. Diese Werte sind für die meisten Anwendungen ausreichend.
- Klicken Sie auf OK.
- Erstellen Sie angepasste Eigenschaften für den SIP-Servlet-Container. Verwenden Sie in der Administrationskonsole den folgenden Navigationspfad:
- Klicken Sie auf Server > Servertypen > WebSphere-Anwendungsserver > Servername.
- Klicken Sie auf SIP-Container.
- Klicken Sie unter Weitere Eigenschaften auf Angepasste Eigenschaften > Neu.
- Geben Sie javax.sip.max.object.pool.size im Feld Name ein.
- Geben Sie 1000 im Feld Wert ein.
- Klicken Sie auf OK.
- Geben Sie max.tu.pool.size im Feld Name ein.
- Geben Sie 1000 im Feld Wert ein.
- Klicken Sie auf OK.
- Geben Sie com.ibm.sip.sm.lnm.size im Feld "Name" ein.
- Geben Sie 8 im Feld "Wert" ein.
- Klicken Sie auf OK.
- Erstellen Sie angepasste Eigenschaften für den SIPUDP-Kanal, wenn User Datagram Protocol
(UDP) der primäre Transport für den SIP-Datenverkehr ist. Verwenden Sie in der Administrationskonsole den folgenden Navigationspfad:
- Klicken Sie auf Server > Servertypen > WebSphere-Anwendungsserver > Servername.
- Klicken Sie auf SIP-Container > Transportkette > SIPCInboundDefaultUDP > UDP-Kanal für eingehende Anforderungen (UDP1).
- Klicken Sie unter Weitere Eigenschaften auf Angepasste Eigenschaften > Neu.
- Geben Sie receiveBufferSizeSocket im Feld Name ein.
- Geben Sie 3000000 im Feld Wert ein.
- Klicken Sie auf OK.
- Geben Sie sendBufferSizeSocket im Feld Name ein.
- Geben Sie 3000000 im Feld Wert ein.
- Geben Sie die allgemeinen Eigenschaften für den SIP-Servlet-Container an. Verwenden Sie in der Administrationskonsole den folgenden Navigationspfad:
- Klicken Sie auf Server > Servertypen > WebSphere-Anwendungsserver > Servername.
- Geben Sie einen Wert für "Maximale Anzahl der Sitzungen" ein. Der Wert für die maximale Anzahl der Sitzungen kann wie folgt berechnet werden: Maximale Haltezeit oder Sitzungszeitlimit x Aufrufrate x Sicherheitsfaktor.
- Geben Sie einen Wert für "Maximale Anzahl an Nachrichten pro Zeitraum für Durchschnittsermittlung". Der Wert für die maximale Anzahl an Nachrichten pro Zeitraum für Durchschnittsermittlung kann wie folgt berechnet werden: Maximale Aufrufhaltezeit oder Sitzungszeitlimit x Maximale Rate an SIP-Nachrichten x Sicherheitsfaktor.
- Geben Sie einen Wert für "Maximale Größe der Verteilerwarteschlange" ein. Die maximale Größe der Verteilerwarteschlange kann wie folgt berechnet werden: Maximale Rate an SIP-Nachrichten x Maximale Latenzzeit für SIP-Verarbeitung x Sicherheitsfaktor.
- Setzen Sie den Thread-Pool auf den neu erstellten Thread-Pool für den SIP-Container (Dropdown-Name "SipContainer").
- Optimieren Sie die Richtlinie für die JVM-Garbage-Collection. Verwenden Sie in der Administrationskonsole den folgenden Navigationspfad:
- Klicken Sie auf Server > Servertypen > WebSphere-Anwendungsserver > Servername.
- Klicken Sie unter "Serverinfrastruktur" auf Java- und Prozessverwaltung > Prozessdefinition.
Klicken Sie auf Steuerung.
- Klicken Sie unter Weitere Eigenschaften auf Java Virtual Machine.
- Geben Sie im Feld "Generische JVM-Argumente" den folgenden Wert in einer fortlaufenden Zeile ein: "-Xmn150m -Xgcpolicy:gencon -Xgc:scvNoAdaptiveTenure,scvTenureAge=1,stdGlobalCompactToSatisfyAllocate -Xcompactexplicitgc -XX:MaxDirectMemorySize=256000000".
Bewährtes Verfahren:
- Sie können in den Feldern "Anfangsgröße des Heap-Speichers" und "Maximale Größe des Heap-Speichers" den Wert 1500 (MB) eingeben.
- Außerdem empfiehlt es sich, für die Leistungstests und Optimierungsoperationen die Option Ausführliche Garbage-Collection zu aktivieren.
- Wenn Ihre Anwendung Objekte zuordnet, die größer als 64 KB sind, kann es nützlich sein, einen großen Objektbereich (Large Object Area, LOA) im Heapspeicher zu reservieren. Dies geschieht durch Hinzufügen des JVM-Arguments -Xloaminimum0.xy, wobei xy den für große Objekte zu reservierenden Heapspeicher in Prozent angibt. Nähere Informationen zu den JVM-Argumenten finden Sie in der Veröffentlichung Java Diagnostics Guide 6.
- Erstellen Sie einen separaten Thread-Pool für den SIP-Servlet-Container. Verwenden Sie in der Administrationskonsole den folgenden Navigationspfad:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsip_tunelinux
Dateiname:tsip_tunelinux.html