mod_fcgid: impossible d'appliquer le processus de fente pour l'erreur
mise à jour: Juste regardé le cache de mise à jour de temps de longue requêtes et ils n'ont pas entrer en collision avec crash du serveur de temps.
update2: Trouvé la cause du problème. Ad serveur est en panne et que le serveur se bloque, même s'il semble nous fixer socket délais d'attente correctement. Est-il possible de tester délai de comportement?
Nous avons un serveur occupé. ~3K connexions simultanées
Le serveur dispose de 32 GO de ram 2xCPUs. Nous avons le service est indisponible problèmes d'erreur.
Le serveur répond avec une erreur 500 et le journal des erreurs montre des centaines/milliers de lignes:
[warn] mod_fcgid: can't apply process slot for /var/www/fcgi-bin.d/php5-default/php-fcgi-wrapper
Nous pensons qu'il peut être une erreur de configuration ou une connexion de base de données/requêtes d'erreur.
Un processus php met à jour un cache, ce qui est très très complexe, résultat de la requête. 3 séparer les requêtes exécutées deux fois par jour. J'ai activé le slow query log. Je suppose que si la requête dépasse l'exécution de php limite de temps de 20 secondes dans notre cas (défini dans les fichiers suivants). Toute aide est appréciée.
Nous utilisons apache mpm worker modèle avec mod_fcgid.
Ici est fcgid.fichier conf:
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
SocketPath /var/lib/apache2/fcgid/sock
# Communication timeout: Default value is 20 seconds
IPCCommTimeout 20
# Connection timeout: Default value is 3 seconds
IPCConnectTimeout 3
Et /etc/apache2/conf.d/php-fcgid.fichier conf:
<IfModule !mod_php4.c>
# Chemin d'accès à php.ini <96> valeur par défaut est /etc/phpX/cgi
DefaultInitEnv PHPRC/etc/php5/cgi
# Number of PHP childs that will be launched. Leave undefined to let PHP decide.
# DefaultInitEnv PHP_FCGI_CHILDREN 8
# Maximum requests before a process is stopped and a new one is launched
DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000
# Maximum requests a process handles before it is terminated
MaxRequestsPerProcess 1500
# Maximum number of PHP processes.
MaxProcessCount 45
# Define a new handler "php-fcgi" for ".php" files, plus the action that must follow
AddHandler php-fcgi .php
Action php-fcgi /fcgi-bin/php-fcgi-wrapper
# Define the MIME-Type for ".php" files
AddType application/x-httpd-php .php
# Define alias "/fcgi-bin/". The action above is using this value, which means that
# you could run another "php5-cgi" command by just changing this alias
Alias /fcgi-bin//var/www/fcgi-bin.d/php5-default/
# Turn on the fcgid-script handler for all files within the alias "/fcgi-bin/"
<Location /fcgi-bin/>
SetHandler fcgid-script
Options +ExecCGI
</Location>
Apache2 mpm worker config:
<IfModule mpm_worker_module>
StartServers 10
MaxClients 2048
ServerLimit 2048
MinSpareThreads 30
MaxSpareThreads 100
ThreadsPerChild 64
ThreadLimit 100
MaxRequestsPerChild 5000
Nous avons regardé les instructions sur cette page web et chargé de haut dans la configuration du serveur:
http://2bits.com/articles/apache-fcgid-acceptable-performance-and-better-resource-utilization.html
mise à jour: Juste regardé le cache de mise à jour de temps de longue requêtes et ils n'ont pas entrer en collision avec crash du serveur de temps.
update2: Trouvé la cause du problème. Ad serveur est en panne et que le serveur se bloque, même s'il semble nous fixer socket délais d'attente correctement. Est-il possible de tester délai de comportement?
Vous devez vous connecter pour publier un commentaire.
Votre problème est assez bien couvert par google. Il semble que vous avez à jouer un peu avec la configuration (avec des options comme MaxProcessCount).
Je serais d'avis de remplacer apache, nginx. J'ai connu de meilleures performances. Aussi, nginx utilise beaucoup moins de mémoire que celle de apache. Je suis à l'aide de php-fpm pour fast cgi.
redémarrer votre serveur.J'ai soveled ce problème utiliser ce moyen~
Déplacez -> pour nginx comme soons que possible.
Essayez -> mise en Cache avec l'APC pour seul serveur memcached pour les systèmes distribués ou cache des fichiers systèmes
Utilisez -> index de base de données correctement. C'est l'une des choses les plus importantes que j'ai jamais connu.