web-dev-qa-db-fra.com

Apache proxfy_fcgi - Erreur lors de l'envoi de la demande à

J'ai un hébergement cloud sur Google, ça craint pour être honnête mais j'essaie de continuer, j'ai installé la pile LAMP sur un VM et mis mon site Web en htdocs. Quand j'essaie de accéder à mon site ça me donne request timeout mais parfois cela fonctionne pendant environ 5 minutes.

Lorsque je vois les journaux d'erreurs Apache, cela me donne ceci

075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:55.185819 2015] [proxy_fcgi:error] [pid 4995:tid 140183521683200] (70007)The timeout specified has expired: [client 162.158.255.169:34198] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:55.487458 2015] [core:notice] [pid 2953:tid 140183785137920] AH00052: child pid 4995 exit signal Segmentation fault (11)
[Tue Oct 27 18:12:55.787973 2015] [proxy_fcgi:error] [pid 5063:tid 140183530075904] (70007)The timeout specified has expired: [client 199.27.133.137:13151] AH01075: Error dispatching request to : (polling), referer: http://whichtube.com/watch/g9-4dCeFQng/allama-nasir-abbas-jawab-ALi-as-nae-talwar-kayou-na-uthai.html
[Tue Oct 27 18:12:57.542883 2015] [proxy_fcgi:error] [pid 5329:tid 140183521683200] (70007)The timeout specified has expired: [client 173.245.56.198:51348] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:57.976752 2015] [proxy_fcgi:error] [pid 5063:tid 140183479719680] (70007)The timeout specified has expired: [client 173.245.56.198:63779] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:58.993666 2015] [proxy_fcgi:error] [pid 5194:tid 140183496505088] (70007)The timeout specified has expired: [client 162.158.255.141:16226] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:59.196701 2015] [proxy_fcgi:error] [pid 5329:tid 140183513290496] (70007)The timeout specified has expired: [client 173.245.56.198:32819] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:01.462039 2015] [proxy_fcgi:error] [pid 5329:tid 140183504897792] (70007)The timeout specified has expired: [client 199.27.128.166:48057] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:07.518999 2015] [proxy_fcgi:error] [pid 5063:tid 140183471326976] (70007)The timeout specified has expired: [client 173.245.56.198:13694] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:16.804990 2015] [proxy_fcgi:error] [pid 5261:tid 140183513290496] (70007)The timeout specified has expired: [client 199.27.128.134:28694] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:33.055860 2015] [proxy_fcgi:error] [pid 5328:tid 140183236331264] (70007)The timeout specified has expired: [client 39.41.139.220:52154] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:57.391361 2015] [proxy_fcgi:error] [pid 5063:tid 140183521683200] (70007)The timeout specified has expired: [client 39.41.139.220:52029] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:57.552542 2015] [core:notice] [pid 2953:tid 140183785137920] AH00052: child pid 5063 exit signal Segmentation fault (11)

Mon site Web est en PHP, je n'ai rien changé d'autre que l'autorisation de répertoire, y a-t-il quelque chose qui me manque?

12
require_once

J'ai eu ce problème également. Vous voudrez peut-être rechercher une partie de code dur et une connexion à un autre serveur indisponible, dans votre code. (par exemple une adresse IP locale qui n'est pas accessible en ligne).

Pour le mien, j'ai vérifié php-fpm.log sur mon serveur et j'ai trouvé que mon application essayait de se connecter à un ancien serveur (mauvaise IP) et qu'il faisait face à un délai dépassé.

3
Saeed Sepehr

J'avais le même problème, il s'avère qu'Apache a un module qui gère les délais d'attente appelés mod_reqtimeout

La valeur par défaut (vous ne la verrez pas dans le http.conf par défaut) est:

RequestReadTimeout handshake=0 header=20-40,MinRate=500 body=20,MinRate=500

Dans mon cas, je téléchargeais un fichier via une soumission de formulaire HTML simple, donc le fichier fait techniquement partie de l'en-tête et la configuration par défaut indique que l'en-tête expirera au bout de 20 à 40 secondes. La chose 20-40 est assez cool car elle expirera à 20 secondes, mais si 500 octets sont envoyés en une seconde, cela ajoutera une seconde de temps d'attente jusqu'à ce qu'elle atteigne 40 secondes, puis un délai d'expiration quoi qu'il arrive.

Je télécharge des fichiers plus volumineux sur mon site Web, j'ai donc ajouté cette ligne à mon fichier httpd.conf:

RequestReadTimeout handshake=0 header=20-600,MinRate=500 body=20,MinRate=500

Donc, tant que mon utilisateur envoie des données à un minimum de 500 octets/s, la demande n'expirera pas avant un maximum. de 600 secondes est atteint (mieux lire la documentation, ne me citez pas sur le débit)

C'est en fait un module Apache assez cool mais pas très bien connu car les gens recommandent de changer d'autres paramètres de délai d'attente Apache dans d'autres similaires "Le délai spécifié a expiré:" des problèmes liés à PHP-FPM, mais ce problème se produit avec tout message qui prend plus de 40 secondes à soumettre par défaut dans Apache.

Pour moi, un redémarrage de php-fpm a fait le travail. Après avoir consulté le journal comme le conseille @varlogtim. Le journal montre qu'il n'y a eu aucune activité au cours des 12 dernières heures ...

2
David

Il semble que votre code PHP prend plus de temps que le délai configuré pour se terminer. Quand Apache charge une page PHP en utilisant fcgi, il envoie la demande à PHP- Service FPM à traiter. Si PHP-FPM met trop de temps à répondre, vous verrez ce type de délai d'attente. Les causes possibles sont que votre PHP pourrait être bloqué dans une boucle ou en attente d'un réponse d'une base de données qui prend un temps particulièrement long.

Pour résoudre les problèmes, j'utiliserais la version CLI de php pour voir si le script se termine dans un délai raisonnable ($ time php /path/to/file.php). Il peut y avoir des informations supplémentaires dans le journal PHP-FPM (par défaut: /var/log/php-fpm.log).

1
varlogtim