
Ich baue eine App für „Surge Traffic“, die innerhalb von Minuten von 0 auf 50.000 Clients gleichzeitig hochfahren kann. Ich dachte, ich bitte euch um Hilfe, um herauszufinden, ob ich hier etwas falsch mache.
Derzeit teste ich mit loader.io. Meine Konfiguration für diesen Belastungstest ist 0 bis 10.000 Clients über 1 Minute. Das einzige, was der Tester tut, ist, die Anmeldeseite zu laden, sonst nichts, nicht einmal die Anmeldung. Die Seitengröße beträgt 793 KB, was einer Ladezeit von ~400 ms in einem echten Browser entspricht.
[01-Mar-2018 09:57:48] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 4244 idle, and 4607 total children
[01-Mar-2018 09:57:49] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 4216 idle, and 4615 total children
[01-Mar-2018 09:57:50] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4211 idle, and 4631 total children
[01-Mar-2018 09:57:52] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4179 idle, and 4663 total children
[01-Mar-2018 09:57:54] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4181 idle, and 4695 total children
[01-Mar-2018 09:57:57] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4244 idle, and 4727 total children
[01-Mar-2018 09:57:58] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4412 idle, and 4759 total children
Meine php-fpm-Konfiguration ist wie folgt:
pm.max_children 3000
pm.max_requests 200
pm dynamic
pm.start_servers 1500
pm.min_spare_servers 300
pm.max_spare_servers 1500
Host-Server-Spezifikationen:
AMD Opteron(tm) Processor 6344
Core Name
Abu Dhabi
# of Cores
12-Core
# of Threads
12
Operating Frequency
2.6 GHz
Hyper Transports
6.40 GT/s
L2 Cache
6 x 2MB
L3 Cache
2 x 8MB
Manufacturing Tech
32 nm
50GB RAM (I have provided this to the container), server has 64 total.
Und seltsamerweise erhalte ich sogar mit dieser Konfiguration immer noch die Meldung „scheint beschäftigt zu sein“!
Das Wichtigste, was Sie hier bedenken sollten, ist, dass wir normalerweise wenig bis gar keinen Verkehr haben, dass wir jedoch innerhalb weniger Minuten mit bis zu 50.000 Benutzern rechnen können. Könnt ihr mir bitte bei diesem Fehler helfen, Leute? Danke!
Antwort1
Sie müssen bedenken, dass das Hochfahren dieser zusätzlichen Worker Zeit braucht und wie Sie in den Protokollen sehen können, erzeugt php-fpm 32 untergeordnete Worker gleichzeitig. Die einfachste „Lösung“ wäre, die Mindest- und Höchstserver auf denselben Wert zu setzen, damit Sie nicht warten müssen, bis sie hochgefahren sind.
Versuchen Sie außerdem, wenn möglich, statt so etwas zu versuchen, die Zwischenspeicherung zu implementieren, da dies immer schneller ist.