Apache interrompe la pubblicazione dopo aver raggiunto l'impostazione MaxClients


11

Ho il mio server Apache configurato con worker MPM come segue:

<IfModule mpm_worker_module>
    ServerLimit         20
    ThreadLimit         50
    StartServers        3
    MaxClients          1000
    MinSpareThreads     50
    MaxSpareThreads     200
    ThreadsPerChild     50
    MaxRequestsPerChild 10000
</IfModule>

Il server accetta circa 2 milioni di richieste ogni giorno. Quando le richieste arrivano, il server apache smetterà di accettare la nuova connessione (il browser non può connettersi). E il processo rimarrà nell'elenco dei processi. L'utilizzo della memoria è di circa il 10% e la CPU è dello 0%. Sembra che il server Apache non sia in grado di riciclare i processi quando dovrebbe.

Ho trovato qualcosa di correlato all'arresto anomalo nei log degli errori:

[Mon Aug 15 12:36:24 2011] [error] child process 11444 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:24 2011] [error] child process 12090 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:24 2011] [error] child process 10698 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:24 2011] [error] child process 12144 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:24 2011] [error] child process 12032 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:24 2011] [error] child process 10699 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:25 2011] [notice] caught SIGTERM, shutting down
[Mon Aug 15 12:37:31 2011] [notice] mod_python: Creating 8 session mutexes based on 20 max processes and 50 max threads.
[Mon Aug 15 12:37:31 2011] [notice] mod_python: using mutex_directory /tmp 
[Mon Aug 15 12:37:31 2011] [notice] Apache/2.2.17 (Ubuntu) mod_python/3.3.1 Python/2.7.1+ mod_ssl/2.2.17 OpenSSL/0.9.8o configured -- resuming normal operations
[Mon Aug 15 15:36:46 2011] [error] server is within MinSpareThreads of MaxClients, consider raising the MaxClients setting
[Mon Aug 15 15:38:48 2011] [error] server reached MaxClients setting, consider raising the MaxClients setting
[Mon Aug 15 16:17:31 2011] [warn] child process 766 still did not exit, sending a SIGTERM
[Mon Aug 15 16:17:31 2011] [warn] child process 767 still did not exit, sending a SIGTERM

Qualche idea? Grazie!


quali sono le impostazioni keepalive? Esegui una sorta di polling lungo con la tua applicazione?
regilero,

Risposte:


7

Potresti voler controllare lo stato del tuo server usando mod_status. Potresti avere connessioni che non si disconnettono e sono bloccate in uno stato "invio risposta" (W). Dai un'occhiata a questo articolo su come diagnosticare questo rapporto Risoluzione dei problemi relativi a maxclients e modstatus

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.