web-dev-qa-db-fra.com

AH00161: le serveur a atteint le paramètre MaxRequestWorkers, envisagez de relever le paramètre MaxRequestWorkers.

J'ai un serveur très occupé: PHP (Wordpress) utilisant W3TotalCache APC, Varnish pour Apache et Cloudflare pour gérer tout le trafic . Ubuntu 14.04.4 LTS

Un seul site Web avec une moyenne d'environ 60 000 visites/jour.

Je reçois ce message de temps en temps, quelques fois par jour. N'ayant rien à voir avec des pics de trafic temporaires, nous avons comparé les temps avec Google Analytics.

Thu Apr 28 14:14:42.938075 2016] [mpm_prefork:error] [pid 19137] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
[Thu Apr 28 15:43:25.594147 2016] [core:notice] [pid 19137] AH00051: child pid 19866 exit signal Segmentation fault (11), possible coredump in /etc/Apache2
[Thu Apr 28 15:43:25.594313 2016] [core:notice] [pid 19137] AH00051: child pid 20386 exit signal Segmentation fault (11), possible coredump in /etc/Apache2
[Thu Apr 28 15:43:25.594407 2016] [core:notice] [pid 19137] AH00051: child pid 19143 exit signal Segmentation fault (11), possible coredump in /etc/Apache2
[Thu Apr 28 15:43:25.594498 2016] [core:notice] [pid 19137] AH00051: child pid 19144 exit signal Segmentation fault (11), possible coredump in /etc/Apache2
[Thu Apr 28 15:43:25.594572 2016] [core:notice] [pid 19137] AH00051: child pid 20597 exit signal Segmentation fault (11), possible coredump in /etc/Apache2
[Thu Apr 28 15:43:25.594642 2016] [core:notice] [pid 19137] AH00051: child pid 20395 exit signal Segmentation fault (11), possible coredump in /etc/Apache2
[Thu Apr 28 15:43:25.594704 2016] [core:notice] [pid 19137] AH00051: child pid 20424 exit signal Segmentation fault (11), possible coredump in /etc/Apache2
[Thu Apr 28 15:43:25.594785 2016] [core:notice] [pid 19137] AH00051: child pid 20598 exit signal Segmentation fault (11), possible coredump in /etc/Apache2
[Thu Apr 28 15:43:25.594870 2016] [core:notice] [pid 19137] AH00051: child pid 19861 exit signal Segmentation fault (11), possible coredump in /etc/Apache2
[Thu Apr 28 15:43:25.594957 2016] [core:notice] [pid 19137] AH00051: child pid 19782 exit signal Segmentation fault (11), possible coredump in /etc/Apache2
....
....

J'ai donc d'abord porté MaxRequestWorkers à 100, puis 500, maintenant à 1024. Mais cela se produit toujours.

Ceci est mon Apache2.conf pour le moment . Code:

<IfModule mpm_worker_module>
StartServers 256
MinSpareThreads 256
MaxSpareThreads 256
MaxClients 256
ServerLimit 256
ThreadLimit 256
ThreadsPerChild 256
MaxRequestWorkers 1024
MaxConnectionsPerChild 0
MaxRequestPerChild 1000
</IfModule>

Il y a beaucoup de RAM libre, et la charge moyenne est d'environ 0,5, parfois plus de 1. Mais jamais vu plus haut que 2. Le serveur semble donc sain pour gérer le trafic.

top - 16:07:47 up 3 days, 18:18,  2 users,  load average: 0.57, 0.46, 0.55
Tasks: 113 total,   1 running, 112 sleeping,   0 stopped,   0 zombie
%Cpu(s): 10.5 us,  2.0 sy,  0.0 ni, 87.4 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   8176816 total,  2372560 used,  5804256 free,   189684 buffers
KiB Swap:        0 total,        0 used,        0 free.  1286692 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                              
21930 www-data  20   0  337212  83308  60072 S  24.9  1.0   0:52.89 Apache2                                                                                                                                              
21945 www-data  20   0  327640  72684  58816 S  24.3  0.9   0:48.37 Apache2                                                                                                                                              
 1182 nobody    20   0  702868 442268  83496 S   0.7  5.4  42:41.32 varnishd

Des idées pour lesquelles Apache interrompt?

// j

7
Joakim Ling

En gros, config a été surchargé dans: /Etc/Apache2/mods-available/mpm_prefork.conf

Je mets le nouveau paramètre dans ce fichier et semble qu'Apache fonctionne correctement maintenant.

Espérons que cela aide quelqu'un d'autre, ne mettez pas votre configuration directement dans Apache2.conf ou httpd.conf. Assurez-vous de changer tous les fichiers de configuration chargés.

8
Joakim Ling

vous devriez éditer mpm_prefork

<IfModule mpm_prefork_module> StartServers 10 MinSpareServers 10 MaxSpareServers 20 ServerLimit 2000 MaxRequestWorkers 1500 MaxConnectionsPerChild 10000 </IfModule>

4
Yort

Vous avez modifié le mauvais fichier. Votre journal indique une erreur "mpm_prefork". Vous devez donc modifier mpm_prefork.conf plutôt que mpm_worker.conf.

Vous pouvez également utiliser "apachectl -M" pour voir quel module vous utilisez . Ex. Mon Apache2 utilise mpm_event_module, je dois donc modifier mpm_event.conf.

$ Apache2ctl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_Host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 filter_module (shared)
 mime_module (shared)
 **mpm_event_module (shared)**
 negotiation_module (shared)
 setenvif_module (shared)
 status_module (shared)
 wsgi_module (shared)
3
redice

Vous voudrez peut-être consulter le journal d’accès de votre serveur Web. Vous pouvez être la cible d'une attaque xml-rpc si le journal est inondé de publications xml-rpc (par exemple, "POST /xmlrpc.php HTTP/1.1" 200 403). Il existe différents moyens pour empêcher cela, mais Wordpress est enclin à cela.

0
Cristi Lepadatu