2016-08-11 1 views
0

bitte helfen Sie mir meine Server tun, wenn Anzahl der Verbindung in einer Zeit mehr als 500 mein httpd nur friert und nicht mehr reagiert.Apache Tomcat JVM Heapsize auf Redhat 5 64 Bit 32 RAM 2 Quad-Core Xeon Performance-Probleme

ich seit 2008 gleiche Konfiguration habe und haben nun einige RAM jetzt habe ich 32 Gb auf jedem von zwei Servern

erste hat RHEL 5 installiert 64-Bit-2.6.18-53.1.4.el5xen hinzugefügt es liefert jnlp für Kunden, die nach

Apache 2.2.3 httpd.conf

<IfModule prefork.c> 
StartServers  8 
MinSpareServers 10 
MaxSpareServers 75 
ServerLimit  1100 
MaxClients  1100 
MaxRequestsPerChild 4000 
</IfModule> 

<IfModule worker.c> 
StartServers   2 
MaxClients   150 
MinSpareThreads  25 
MaxSpareThreads  75 
ThreadsPerChild  25 
MaxRequestsPerChild 0 
</IfModule> 

Java 1.6.0_27 Prozess mit folgenden Parametern an den zweiten Server verbunden

java -server -Xmx1280M -XX:MaxPermSize=256M -Djava.awt.headless=true ... 

tomcat server.xml mit folgenden Parametern

... connectionTimeout="12000" maxSpareThreads="250" protocol="AJP/1.3" 
maxHttpHeaderSize="8192" disableUploadTimeout="true" minSpareThreads="25" 
useBodyEncodingForURI="true" maxThreads="500" acceptCount="100" 
enableLookups="false" ... 

Second-Server hat nur JVM Java-Prozess HW wie oben gefriert, wenn die Anzahl der Nutzer mehr verbunden als 600 I Xmx von 4000m bis 26g gestern geändert haben mit der Hoffnung, dass dadurch mehr RAM für diesen Prozess genutzt werden kann. aber sehen Sie nicht, dass es mehr als 4g oben verwendet.

java -server -Xmx26g -Djava.awt.headless=true -Dfile.encoding=UTF-8 -jar 

top - 01:34:10 up 252 days, 8:02, 1 user, load average: 0.00, 0.02, 0.00 
Tasks: 127 total, 1 running, 126 sleeping, 0 stopped, 0 zombie 
Cpu(s): 1.8%us, 0.2%sy, 0.0%ni, 97.7%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 37049860k total, 3225916k used, 33823944k free, 331836k buffers 
Swap: 10223608k total,  0k used, 10223608k free, 2409808k cached 

top - 03:57:04 up 252 days, 8:02, 1 user, load average: 0.01, 0.02, 0.00 
Tasks: 145 total, 1 running, 144 sleeping, 0 stopped, 0 zombie 
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.8%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 37108368k total, 36117600k used, 990768k free, 218364k buffers 
Swap: 2031608k total,  120k used, 2031488k free, 33518948k cached 

bitte helfen Sie mir, dies zu lösen. Ich plane, dies alles zu verbessern, bin mir aber nicht sicher, ob mein Java-Programm mit neuen Versionen von Rhel Apache Tomcat und Jvm funktionieren wird.

+1

Was macht die JVM, wenn das System nicht mehr reagiert? Was macht das zugrunde liegende Betriebssystem? –

+0

Ist die JVM 64 Bit? Auch, 1.6 ist ein bisschen alt, ich wäre ein bisschen besorgt über Sicherheitsprobleme ... – ppeterka

+0

JVM arbeitet, Betriebssystem sehr langsam, zweiter Server funktioniert als Webkonferenz. Bout Server Betriebssysteme sind in Ordnung. – Olzh

Antwort

0

Wahrscheinlich ist dies Ihr Problem auf der Seite Tomcat

maxThreads="500" 

in der server.xml ... Heben Sie es, dass mehr gleichzeitige Verbindungen ermöglicht.

maxThreads

Die maximale Anzahl von Anforderungsverarbeitungsthreads durch dieses Verbindungsstück geschaffen werden, die daher die maximale Anzahl von gleichzeitigen Anforderungen bestimmt, die gehandhabt werden kann. Wenn dieses Attribut nicht angegeben ist, wird es auf 200 gesetzt. Wenn diesem Connector ein Executor zugeordnet ist, wird dieses Attribut ignoriert, da der Connector Tasks mit dem Executor und nicht mit einem internen Thread-Pool ausführt.

From Apache Tomcat documentation

Auch erklärt dieser Teil, warum 600 Clients eine Verbindung herstellen können:

acceptCount="100" 

Diese weitere 100 Kunden ermöglicht in einer Warteschlange zu warten, bis serviert

acceptCount

Die maximale Warteschlangenlänge für eingehende Verbindungsanforderungen, wenn alle möglichen Anfrageverarbeitungsthreads verwendet werden. Alle Anfragen, die bei voller Warteschlange eingehen, werden abgelehnt. Der Standardwert ist 100.

Hinweis: Um in der Lage sein, den Speicher Situation zu überprüfen, können Sie Tomcat mit JMX (jconsole, jvisualvm, etc ...) verbinden, und auch Sie können viel von den tatsächlichen überprüfen Einstellungen, wie in der Monitoring Tomcat FAQ beschrieben.

+0

Wie wäre es mit anderen xmx Optionen und httpd.conf Optionen? – Olzh

+0

@Olzh: Haben Sie den Beweis, dass der Heap voll ist? Was zeigt die Verbindung durch JMX in dieser Hinsicht? Wenn GC-Protokollierung aktiviert ist, was wird angezeigt? – ppeterka

+0

Ich habe morgen auf 1500 erhöht werden große Sitzung sein, wie zu überprüfen ist Tomcat mit diesem Parameter oder nicht – Olzh

Verwandte Themen