Entwicklung
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
November 2017
- 1 participants
- 1 discussions
Moin,
wie einige mitbekommen haben ist heute/gestern der Apache freigedreht.
Grund dafür war, dass ich im Zuge diverser Performance-Optimierungen auf
unserem Testserver (der noch auf Debian läuft) den MPM-Mode vom Apache
auf Worker gestellt hatte. Nebenbei hatte ich das Konstrukt noch auf
PHP-FPM gedreht, hatte mich aber vorerst dagegen entschieden das auch
direkt auf den Live-Maschinen einzusetzen. Getestet, soweit wie nötig
gehalten, läuft. Denkste. Heute nach dem Deployment sind uns regelrecht
alle CPU-Kerne um die Ohren geflogen, meisten Load von 30, Spitzen von
60, bei 12 Kernen.
Zurückstellen könnte ich nicht, da wir nicht ausschließen können das
gerade Buchalterische Sachen laufen und weil sich da niemand rantraut
konnte ich erst jetzt wieder eingreifen. Was auch gut so ist. Nach
ewigen herumgetüftel auf unsere Devsystem, welches auf CentOS läuft
(PHP-Paket von Webtactic), bin ich auf der Suche nach der OpCache config
darüber gestolpert, dass die PHP-Installationen gar kein Opcache Paket
haben -.- . Japp, so hab ich auch geguckt.
Also OpCache drauf, Speicher, String-Länge und Max-Datei-Anzahl (Default
4000, wir liegen mit vendor aber bei ~15k) hochgesetzt, et voila,
brauchbare Antwortzeiten (Login-Seite, vorher 700ms, danach 280ms).
Statt die Konfig nur zurückzudrehen, konnte ich also doch noch was
brauchbares aus der Aktion ziehen. Warum genau nun Prefork besser ohne
Opcache umgehen kann als MPM-Worker oder Event ist mir nicht ganz klar,
aber das brachte mich zum nächsten Thema. Wenn die Kisten einmal
eingerichtet sind und niemand darauf arbeitet (tatsächlich gar keine
Requests) hab ich gleich noch nach Untersucht, wie sie die Verschiedenen
Modi unter Last verhalten. Leider ist meine Leitung etwas begrent, aber
ab hilft da weiter.
AB - Apache Benchmark
getestet wurden Worker, Event und Prefork (in der Reihenfolge):
Worker:
➜ ~ ab -c 1000 -n 5000 -C "PHPSESSID=ong0fut5892mgr38afqttthu47"
https://www.xmid.de/main/booking/get-partial-service-details/sId/\?bId\=117…
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.xmid.de (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software: Apache/2.4.6
Server Hostname: www.xmid.de
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,4096,128
Document Path:
/main/booking/get-partial-service-details/sId/?bId=11705
Document Length: 0 bytes
Concurrency Level: 1000
Time taken for tests: 116.750 seconds
Complete requests: 5000
Failed requests: 55
(Connect: 0, Receive: 0, Length: 55, Exceptions: 0)
Write errors: 0
Non-2xx responses: 77
Total transferred: 2581822 bytes
HTML transferred: 12939 bytes
Requests per second: 42.83 [#/sec] (mean)
Time per request: 23350.090 [ms] (mean)
Time per request: 23.350 [ms] (mean, across all concurrent requests)
Transfer rate: 21.60 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 8879 11709.4 5515 81112
Processing: 331 11756 3240.6 11938 30144
Waiting: 0 11749 3358.0 11918 42206
Total: 490 20635 12612.5 18063 93474
Percentage of the requests served within a certain time (ms)
50% 18063
66% 19944
75% 21118
80% 21745
90% 28019
95% 47475
98% 84531
99% 84762
100% 93474 (longest request)
==============
Event:
➜ ~ ab -c 1000 -n 5000 -C "PHPSESSID=ong0fut5892mgr38afqttthu47"
https://www.xmid.de/main/booking/get-partial-service-details/sId/\?bId\=117…
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.xmid.de (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software: Apache/2.4.6
Server Hostname: www.xmid.de
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,4096,128
Document Path:
/main/booking/get-partial-service-details/sId/?bId=11705
Document Length: 0 bytes
Concurrency Level: 1000
Time taken for tests: 117.501 seconds
Complete requests: 5000
Failed requests: 167
(Connect: 0, Receive: 0, Length: 167, Exceptions: 0)
Write errors: 0
Non-2xx responses: 332
Total transferred: 2523071 bytes
HTML transferred: 17872 bytes
Requests per second: 42.55 [#/sec] (mean)
Time per request: 23500.233 [ms] (mean)
Time per request: 23.500 [ms] (mean, across all concurrent requests)
Transfer rate: 20.97 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 7972 8189.7 5559 86900
Processing: 313 12832 2812.0 13140 31232
Waiting: 270 12818 2823.8 13132 34819
Total: 482 20804 8694.4 18921 98796
Percentage of the requests served within a certain time (ms)
50% 18921
66% 20231
75% 21485
80% 22528
90% 27933
95% 33931
98% 51330
99% 56858
100% 98796 (longest request)
==============
Prefork:
➜ ~ ab -c 1000 -n 5000 -C "PHPSESSID=ong0fut5892mgr38afqttthu47"
https://www.xmid.de/main/booking/get-partial-service-details/sId/\?bId\=117…
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.xmid.de (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software: Apache/2.4.6
Server Hostname: www.xmid.de
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,4096,128
Document Path:
/main/booking/get-partial-service-details/sId/?bId=11705
Document Length: 0 bytes
Concurrency Level: 1000
Time taken for tests: 110.483 seconds
Complete requests: 5000
Failed requests: 0
Write errors: 0
Total transferred: 2575000 bytes
HTML transferred: 0 bytes
Requests per second: 45.26 [#/sec] (mean)
Time per request: 22096.514 [ms] (mean)
Time per request: 22.097 [ms] (mean, across all concurrent requests)
Transfer rate: 22.76 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 157 7907 11700.4 4872 90004
Processing: 272 12096 3321.8 11865 33737
Waiting: 224 12075 3306.7 11861 33736
Total: 429 20003 12315.3 17096 105157
Percentage of the requests served within a certain time (ms)
50% 17096
66% 18746
75% 20690
80% 22374
90% 26816
95% 34028
98% 78218
99% 83130
100% 105157 (longest request)
Testbedingung: immer die selbe Maschine (der HA Balanced nach Herkunft,
der alte Rassist...), immer 5000 Requests und es wird mit einer
concurrency von 1000 gearbeitet. Ich nehm an, er versucht 1000 Anfragen
gleichzeitig rauszuhämmern, was ich bei meiner Leitung für eher
unwahrscheinlich halte, egal.
Interressant ist: Gesamtzeiten: 116 | 117 | 110s
Der Punkt geht an den Prefork, wobei der auch den ingesamt langsamsten
Request mit 105s dabei hatte. Wenn ich mir das genau ansehe sprechen
alle Werte für den Prefork. Nichtsdestotrotz zeigt der Test die CPU
auslastung nicht. Die lagen nämlich bei max 50 | 30 | 15, was wieder für
den Prefork spricht. Und der Prefork war auch der einzige der keine
Requests gedroppt hat.
Im Endeffekt bin ich gespannt wie die Last morgen auf den Kisten
aussieht, ich hab wieder den Prefork als MPM-Mittel der wahl gesetzt.
Sicherlich könnte man jetzt noch an der Menge der maximalen Requests,
Server, Childs ect herumdoktorn, aber dafür gibts ja das nächste Release ;)
Bei Fragen immer her damit!
VG Felix
--
Mit freundlichen Grüßen
Felix Seidel
- Entwicklung -
________________________________________________________
TraSo GmbH
Nonnenstraße 42
D-04229 Leipzig
Tel: +49 341 355 740 47
E-Mail: f.seidel(a)traso.de
Internet: https://www.traso.de
________________________________________________________
Geschäftsführer: Haiko Gerdes
Handelsregister: Amtsgericht Leipzig, HRB 21850
1
0