Re: tomcat java system cpu usage

From: Lars Engels <lars.engels(at)0x20.net>
Date: Tue, 10 Dec 2013 12:34:07 +0100

Am 2013-12-10 11:47, schrieb Marian Hettwer:
> Hallo Liste,
>
> ich vermute zwar, daß ich am Ende an freebsd-java@ oder
> freebsd-stable@ schreiben muss, aber ich probiers erstmal hier :)
>
> ich teste auf Arbeit gerade FreeBSD mit java.
> Der Cluster in Frage besteht bis jetzt aus 18 Debian Maschinen (Linux
> 3.2) und meine Versuchskiste wäre die 19. Maschine.
> Die Kisten sind das Suchbackend einer der größten deutschen
> kleinanzeigen plattformen.
> Die Referenzmaschinen (also der bestehende cluster) läuft mit Oracle
> Java 7u21, tomcat6 und solr 4.6.0.
> Mein Setup der FreeBSD Maschine ist so identisch wie möglich (OpenJDK
> 7u25 aus packages installiert, ebenso tomcat6).
> FreeBSD ist 9.2-REL mit zfs on root (via mfsbsd installiert).
>
> Das verwunderliche was ich sehe ist, daß sobald ich etwas load auf die
> Maschinen gebe, 90% der CPU zyklen auf system cpu verbraucht werden.
> Das ganze system kommt faktisch zum stillstand.
>
> Details zu dem FreeBSD Server:
>
> hw.machine: amd64
> hw.model: Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
> hw.ncpu: 32
> hw.byteorder: 1234
> hw.physmem: 68657373184
> hw.usermem: 55276363776
>
> Die referenz linux kisten sind identische Hardware.
>
> Bei 50% load im Vergleich zu den restlichen Linux Kisten sieht alles
> gut aus:
>
> vmstat -->
>
> procs memory page disks faults
> cpu
> r b w avm fre flt re pi po fr sr da0 pa0 in sy
> cs us sy id
> 2 0 0 5591M 46G 217 0 0 0 302 0 0 0 156 9021
> 1371 1 1 98
> 1 0 0 5591M 46G 3501 0 0 0 3794 0 0 0 225 107717
> 1425 4 3 93
> 6 0 0 5591M 46G 3457 0 0 0 4033 0 116 0 363 172494
> 4184 8 5 86
> 1 0 0 5637M 46G 5103 0 0 0 5709 0 0 0 289 108938
> 3666 7 3 89
> 1 0 0 5643M 46G 8620 0 0 0 7174 0 0 0 221 122648
> 3380 6 3 91
> 3 0 0 5643M 46G 10521 0 0 0 10622 0 0 0 217 114311
> 2952 6 2 92
> 5 0 0 5643M 46G 10592 0 0 0 10596 0 0 0 228 149292
> 2986 7 4 89
> 2 0 0 5591M 46G 5210 0 0 0 8145 0 133 0 399 171615
> 5310 7 5 88
> 3 0 0 5576M 46G 4526 0 0 0 4820 0 1 0 212 85395
> 1340 4 2 94
> 4 0 0 5576M 46G 191 0 0 0 239 0 0 0 181 152243
> 2655 7 4 89
>
>
> Average time per request:
> Linux 3.2: 34ms
> FreeBSD 9.2: 57ms
>
> Langsamer, aber noch im Rahmen.
>
> Requests per Second:
> Linux 3.2: 85 (die Linux kisten haben 100% traffic)
> FreeBSD 9.2: 42 (die FreeBSD Maschine hier nur 50% von den Linux
> kisten)
>
>
> Jetzt 50% mehr load und damit genauso viel wie auf den restlichen
> Linux basierten Maschinen und die FreeBSD Maschine fällt um:
>
> procs memory page disks faults
> cpu
> r b w avm fre flt re pi po fr sr da0 pa0 in sy
> cs us sy id
> 3 0 0 5740M 46G 231 0 0 0 314 0 0 0 157 311
> 1396 1 1 97
> 7 0 0 5740M 46G 9 0 0 0 64 0 0 0 392 213164
> 23011 15 6 79
> 1 0 0 5740M 46G 11 0 0 0 0 0 0 0 399 270974
> 5079 12 9 79
> 36 0 0 5740M 46G 26 0 0 0 179 0 112 0 700 251200
> 8534 18 68 14
> 49 0 0 5740M 46G 22 0 0 0 64 0 0 0 586 227161
> 5537 20 79 1
> 40 0 0 5740M 46G 100 0 0 0 0 0 0 0 588 224009
> 7435 16 82 3
> 52 0 0 5744M 46G 272 0 0 0 0 0 0 0 506 207838
> 8580 16 82 3
> 40 0 0 5759M 46G 859 0 0 0 64 0 0 0 546 202021
> 2974 13 87 0
> 33 0 0 5803M 46G 3578 0 0 0 151 0 94 0 839 252272
> 38571 27 61 13
> 44 0 0 5840M 46G 1067 0 0 0 324 0 0 0 461 205458
> 10331 17 78 4
>
> und system cpu explodiert. :-/
>
> Average time per request:
> Linux: 34ms
> FreeBSD: 2,8s (!)
>
> Req/s:
> Linux: 85
> FreeBSD: 55
>
> Und die Kiste ist so lahm, daß der load balancer sie raus wirft
> (varnish vor den solr Maschinen).
>
> Um auszuschließen, daß es zu große unterschiede zwischen Oracle
> Java7u21 vs. OpenJDK 7u25 gibt, habe ich noch einen Ubuntu 12.4.3 LTS
> mit ins Rennen geworfen. Ebenfalls Tomcat6 und OpenJDK 7u25, aber
> Linux 3.8. Das system läuft stabil mit den gleichen Kennzahlen wie die
> anderen Debian Systeme.
> Die JVM Parameter (Xmx, Xms, Xmn, GC settings, ...) sind auf meinem
> FreeBSD testsystem identisch mit den anderen Linux kisten.
>
> Also ist irgendwas im FreeBSD setup krumm.
> Aber was?
>
> Irgendeine Idee wie ich mich dem Problem nähern kann?
> Wie würde ich die system cpu usage analysieren? procstat -k war nicht
> sonderlich aufschlussreich.
> Was als nächstes? truss? dtrace?
>
>
> Ich wäre über jede Idee hilfreich :-)
>
> BeSDe Grüße,
> Marian
>
> PS.: Warum das alles eigentlich? Seit Jahren ist hier Debian gesetzt
> als System. Ich bin aber zunehmend erschüttert über die Art und Weise
> wie sich die Linux kernel releases weiter entwickeln. Unglaublicher
> Unfug wenn man einen stabilen Kernel haben will. Treiberversionen
> rausbekommen ist die Hölle. Welcher Release darfs denn sein? Linux
> 3.0, 3.2, 3.4, 3.10? Alle angeblich longterm. Aha. Und was findet sich
> eigentlich in den distributionskerneln für ein MischMasch aus
> treiberversionen? Alles ganz schlimm und schlimmer werdend. grrrr.
> Ergo der Versuch das ganze Setup unter FreeBSD aufzusetzen.
> Schließlich habe ich gute Gründe, daß ich FreeBSD zumindest privat
> seit 4.0-Release einsetze :)
> Leider scheitert schon dieser Versuch. So ist das für mich auf Arbeit
> nicht einzusetzen. Geschweige denn kann man Kollegen vorschlagen von
> Debian auf FreeBSD zu wechseln...

Vergleiche es doch mal testweise mit java/linux-sun-jdk17.

Ansonsten würde ich mal mit truss an den java-Prozess herangehen und
gucken,
was der alles macht.

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 10 Dec 2013 - 12:34:12 CET

search this site