![Apache antwortet nicht auf alle Anfragen](https://rvso.com/image/632734/Apache%20antwortet%20nicht%20auf%20alle%20Anfragen.png)
Setup: Ich habe über 1 Million Telefone, die auf meinen Server zugreifen.
Der Server sieht gut aus. Sowohl CPU als auch RAM sind ausreichend vorhanden - die CPU ist etwa 90% der Zeit im Leerlauf (1)
Die Datenbank wird nicht stark ausgelastet – weniger als 100 Anfragen pro Sekunde (2).
Wenn ich den Server über einen Apache-Proxy wie „Android Lost“ betrete, tritt ein Timeout auf.
Wenn ich den Anwendungsserver direkt über Port 8080 anspreche, erhalte ich sofort eine Antwort.
Was ich bisher getan habe, ist:
- Starten Sie alle Dienste, Datenbank, Apache, Jetty neu
- Den Server neugestartet
- Habe versucht, nginx statt Apache zu installieren (3)
- Habe versucht, Jetty auf Port 80 auszuführen und Apache zu überspringen
- Habe versucht, die Servereinstellungen zu optimieren (4)
Für mich klingt das so, als ob eine riesige Menge an Anfragen versucht, den Server zu erreichen, und irgendwo in Apache gibt es eine Drosselung, die eingestellt werden muss.
Ich wäre also für alle Hinweise und Vorschläge sehr dankbar.
Zu 1:
top - 20:44:33 up 44 min, 2 users, load average: 2.44, 1.86, 2.80
Tasks: 165 total, 2 running, 163 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.0%us, 0.4%sy, 0.0%ni, 90.6%id, 7.5%wa, 0.0%hi, 0.5%si, 0.0%st
Mem: 12296928k total, 12154152k used, 142776k free, 83228k buffers
Swap: 6287292k total, 0k used, 6287292k free, 10461776k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
447 root 20 0 7587m 841m 14m S 9 7.0 0:39.81 java
1287 mongodb 20 0 120g 272m 247m S 3 2.3 1:38.12 mongod
10 root 20 0 0 0 0 S 0 0.0 0:07.57 rcu_sched
364 root 0 -20 0 0 0 S 0 0.0 0:00.96 kworker/0:1H
381 www-data 20 0 1966m 8188 2164 S 0 0.1 0:00.72 apache2
15562 root 20 0 7706m 105m 11m S 0 0.9 0:13.56 java
32636 www-data 20 0 1966m 8012 2236 S 0 0.1 0:00.72 apache2
Zu 2:
insert query update delete getmore command flushes mapped vsize res faults locked % idx miss % qr|qw ar|aw netIn netOut conn time
3 17 2 0 0 6 0 58.2g 120g 293m 11 1.7 0 0|0 0|0 3k 9k 43 20:49:40
11 46 8 0 0 24 0 58.2g 120g 295m 6 5.1 0 0|0 0|0 12k 21k 43 20:49:41
12 63 13 0 0 26 0 58.2g 120g 294m 3 1.3 0 0|0 0|0 17k 35k 43 20:49:42
5 45 6 0 0 12 0 58.2g 120g 296m 6 0.9 0 0|1 2|1 13k 22k 43 20:49:43
5 49 5 0 0 11 0 58.2g 120g 298m 5 0.1 0 0|0 0|0 13k 22k
Zu 3:
Aus dem Nginx-Fehlerprotokoll:
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
Zu 4:
http://www.eclipse.org/jetty/documentation/current/high-load.html#d0e14090
Antwort1
Dies liegt daran, dass nginx nicht genügend Worker-Verbindungen hat. Sie können es im nginx-Fehlerprotokoll sehen:
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
2014/05/12 19:45:51 [alert] 9800#0: 768 worker_connections are not enough
Die maximale Anzahl an Clients, die Nginx bedienen kann, wird mit dieser Formel berechnet:
max_clients = worker_processes * worker_connections - keepalive connections
In nginx.conf
können Sie die Menge von worker_processes
und einstellen worker_connections
. Dies steht normalerweise in der Hauptkonfigurationsdatei irgendwo oben (vor http
der Direktive):
worker_processes 1;
events {
worker_connections 128
}
Sie haben diese höchstwahrscheinlich eingestellt. Ich empfehle, worker_processes
die Anzahl Ihrer CPU-Kerne einzustellen und den Wert zu erhöhen, worker_connection
während Sie die Leistung des Servers prüfen, bis Sie die Zahl gefunden haben, die Ihr Server verarbeiten kann/muss.