AH00161: le serveur a atteint le paramètre MaxRequestWorkers, pensez à augmenter 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’a rien à voir avec les 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 augmenté MaxRequestWorkers à 100, puis à 500, maintenant c’est à 1024. Mais ça arrive toujours.

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

  StartServers 256 MinSpareThreads 256 MaxSpareThreads 256 MaxClients 256 ServerLimit 256 ThreadLimit 256 ThreadsPerChild 256 MaxRequestWorkers 1024 MaxConnectionsPerChild 0 MaxRequestPerChild 1000  

Il y a beaucoup de mémoire vive disponible, et la moyenne de charge est d’environ 0,5, parfois supérieure à 1. Mais jamais plus élevée que 2. Ainsi, le serveur semble en bonne santé 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

Fondamentalement, la configuration a été remplacée par: /etc/apache2/mods-available/mpm_prefork.conf

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

J’espère 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.

Vous avez modifié le mauvais fichier. Votre journal indique l’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. Par exemple, 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) 

vous devriez éditer mpm_prefork

StartServers 10 MinSpareServers 10 MaxSpareServers 20 ServerLimit 2000 MaxRequestWorkers 1500 MaxConnectionsPerChild 10000

Vous voudrez peut-être vérifier votre journal d’access au serveur Web. Vous pouvez être la cible d’une attaque xml-rpc au cas où le journal serait inondé de messages xml-rpc (par exemple, “POST /xmlrpc.php HTTP / 1.1” 200 403). Il existe plusieurs moyens de l’empêcher de se produire, mais WordPress est sujet à cela.