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?

InformationsquelleAutor faraklit | 2011-03-09