web-dev-qa-db-fra.com

CPU_mod_fcgid élevé: impossible d'appliquer l'emplacement de processus

J'obtiens l'avertissement suivant:

mod_fcgid: impossible d'appliquer l'emplacement de processus pour/var/www/cgi-bin/cgi_wrapper/cgi_wrapper

Dès que cet avertissement apparaît, le CPU du serveur passe à 97% - 101%

Le serveur reçoit environ 140 000 pages vues par jour. Cet avertissement apparaît principalement vers 11h00-12h00. Outre les 140 000 pages vues calculées par Analytics, il envoie également des demandes à des sites Web tiers qui affichent une annonce textuelle sur leur site Web. Environ 2700 sites Web affichent une publicité et adressent au total 22139 demandes par heure au serveur.

J'ai essayé: chmod 755 /var/log/httpd mais il n'y a pas de dossier "httpd" dans/var/log

J'ai essayé d'ajuster MaxSpareServers et MaxClients à toutes les valeurs élevées possibles. Mais cela n'a aucun effet. Après le redémarrage d'Apache, cela semble correct pendant un certain temps (le serveur répond toujours un peu lentement et les avertissements n'apparaissent plus dans le fichier journal). Mais après un certain temps, le même avertissement apparaît et le CPU augmente à nouveau.

Si quelqu'un a des suggestions, faites-le moi savoir, merci à tous.

14
Rens Tillmann

Cet avertissement vous indique que le pool de processus FastCGI est épuisé et qu'il a une limite globale de FcgidMaxProcesses et une limite par script de FcgidMaxProcessesPerClass (voir http://httpd.Apache.org/mod_fcgid/mod/mod_fcgid). html # fcgidmaxprocesses ).

La taille de ce pool peut être ajustée avec les informations suivantes:

  • dans le cas où votre application est liée au processeur et que vous ne voulez pas qu'elle ralentisse, vous définissez FcgidMaxProcesses sur le nombre de cœurs de processeur sur votre serveur; la charge moyenne du serveur tendra à ce nombre aux heures de pointe. Votre serveur servira les clients sans aucun ralentissement mais rejettera également certaines demandes de suivi. Les rejets sont enregistrés "ne peut pas appliquer l'emplacement de processus" côté serveur et considérés comme des erreurs 503 côté client
  • dans le cas (commun) où votre application n'est pas totalement liée au processeur, par exemple, elle attend un montant suffisant de son serveur de base de données pour les réponses (ou d'autres ressources d'E/S ou distantes), vous pouvez avoir FcgidMaxProcesses un peu plus élevé que votre nombre de Cœurs de processeur. En règle générale, je commence avec deux fois le nombre de cœurs de processeur, puis vérifie la charge moyenne de pointe pour une journée entière (une semaine, c'est mieux). Ajustez ensuite jusqu'à ce qu'il atteigne un pic à moy. charge = nombre de cœurs de CPU.

Dans tous les cas, la valeur par défaut de FcgidMaxProcesses (1000) est scandaleuse. Vous exécutez un stupide ab -c100 -n10000

Juste pour être sûr, permettez-moi de le dire d'une autre manière: l'erreur "ne peut pas appliquer l'emplacement de processus" est une erreur normale , car votre serveur a un quantité fixe de ressources, et ces limites peuvent être atteintes. Si vous poussez cette limite à un poids élevé. à vos ressources de serveur, l'avertissement pourrait ne plus apparaître, mais votre serveur s'effondrera sous la charge.

Et BTW, MaxSpareServers et MaxClients ne sont pas liés à votre problème, ils régulent le pool de processus Apache, pas le pool de processus FastCGI. qui est un autre sujet.

31
zerodeux