6 votes

Comment corriger l'erreur "proxy_http:error" AH01102 : erreur de lecture de la ligne d'état du serveur distant localhost:4382

Comment réparer apache2 "proxy_http:error" AH01102 : error reading status line from remote server localhost:4382.

J'ai un serveur web apache2 qui est utilisé pour servir quelques applications nodejs dans le backend.

Version du serveur web Apache2 : Version du serveur : Apache/2.4.41 (Ubuntu) Serveur construit : 2019-08-21T20:43:05

Version de Nodejs : v10.18.1

Version de la base de données Mongo : v4.0.15

Nous sommes confrontés à l'erreur suivante (voir les journaux) sur toutes nos applications backend. "proxy_http:error" AH01102 : error reading status line from remote server localhost:4382.

[Mon Apr 27 20:09:05.697271 2020] [proxy_http:error] [pid 26792:tid 140063099688704] (70007)The timeout specified has expired: [client 178.153.198.97:52385] AH01095: prefetch request body failed to 127.0.0.1:4381 (localhost) from 178.153.198.97 (), referer: https://www.example.com/sub-admin/menus/add-menu
[Mon Apr 27 20:21:51.617095 2020] [proxy_http:error] [pid 26764:tid 140062901626624] (104)Connection reset by peer: [client 178.153.195.206:61268] AH01102: error reading status line from remote server localhost:4382, referer: http://www.example.com/restaurant/dashboard
[Mon Apr 27 20:21:51.617117 2020] [proxy:error] [pid 26764:tid 140062901626624] [client 178.153.195.206:61268] AH00898: Error reading from remote server returned by /restaurant/assets/img/avatars/5.jpg, referer: http://www.example.com/restaurant/dashboard
[Tue Apr 28 03:51:28.498423 2020] [proxy_http:error] [pid 26793:tid 140062868055808] (104)Connection reset by peer: [client 89.211.117.185:57622] AH01102: error reading status line from remote server localhost:4382, referer: http://www.example.com/restaurant/dashboard
[Tue Apr 28 03:51:28.498455 2020] [proxy:error] [pid 26793:tid 140062868055808] [client 89.211.117.185:57622] AH00898: Error reading from remote server returned by /restaurant/static/css/main.f8d32764.chunk.css, referer: http://www.example.com/restaurant/dashboard

Jusqu'à présent, j'ai essayé les choses suivantes pour résoudre cette erreur.

  1. ProxyPreserveHost On - Cela n'a pas fonctionné.

  2. disablereuse=on. Cela n'a pas fonctionné.

  3. Timeout=600, puis Timeout=900. Cela n'a pas fonctionné.

  4. retry=1 acquire=3000 timeout=600 Keepalive=On. N'a pas fonctionné.

  5. SetEnv force-proxy-request-1.0 1
    SetEnv proxy-nokeepalive 1

Travail de courte durée (12 heures). La même erreur s'est reproduite avec à peu près la même fréquence que précédemment.

  1. SetEnv proxy-initial-not-pooled 1
    SetEnv proxy-nokeepalive 1

Celui-ci a fonctionné pendant 24 heures. Puis, après 24 heures, cette erreur s'est reproduite. Bien que cette fois-ci, après 24 heures, l'erreur ne se produit qu'une fois par heure, parfois seulement. une fois toutes les deux heures, parfois une fois toutes les deux-cinq heures.

1Q. Tout d'abord, pourquoi cette erreur se produit-elle ?

2Q. Cette erreur se produit-elle uniquement à cause d'Apache ou l'application nodejs peut-elle aussi être coupable ?
(Mais il n'y a pratiquement aucun journal d'erreur de l'application, lorsque cette erreur apache se produit).

3Q. Comment/Quelle est la meilleure façon d'identifier, de diagnostiquer et de résoudre cette erreur, car après avoir cherché sur différents forums, personne ne semble avoir résolu cette erreur. sur différents forums, personne ne semble avoir résolu cette erreur parfaitement ou avoir une bonne et ce depuis 2006, en regardant certains forums.

Voici mon fichier de configuration apache

<VirtualHost *:443>
  ServerAdmin root@example.com
  ServerName  www.example.com
  ServerAlias example.com

  SSLEngine On
  SSLProxyEngine On
  SSLCertificateFile "/etc/ssl/private/server.crt"
  SSLCertificateKeyFile "/etc/ssl/private/server.key"

  ProxyRequests Off

    #Admin
    ProxyPass /admin http://localhost:4380/
    ProxyPassReverse /admin http://localhost:4380/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1

    ProxyPass /restaurant http://localhost:4382/
    ProxyPassReverse /restaurant http://localhost:4382/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1

    ProxyPass /sub-admin http://localhost:4385/
    ProxyPassReverse /sub-admin http://localhost:4385/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1

    #API
    ProxyPass /admin-api/ http://localhost:4381/
    ProxyPassReverse /admin-api/ http://localhost:4381/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1

    ProxyPass /restaurant-api/ http://localhost:4379/
    ProxyPassReverse /restaurant-api/ http://localhost:4379/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1

</VirtualHost>

4voto

Venkatesh Appala Points 572

Si vous regardez votre journal, vous verrez d'abord apparaître (70007)Le délai spécifié a expiré : [client 178.153.198.97:52385] AH01095 le reste du journal est une sorte de conséquence de cela.

Ce qui se passe ici, c'est que l'implémentation de votre serveur local prend beaucoup de temps pour renvoyer une réponse. Vous pouvez peut-être vérifier la raison de cette lenteur dans votre implémentation et essayer de l'optimiser. Mais dans Apache, vous pouvez définir le temps de connexion et le délai d'attente pour l'implémentation localhost.

ProxyPass /restaurant http://localhost:4382/ connectiontimeout= [durée en secondes] timeout= [durée en secondes[

par exemple 60 secondes (1 min)

ProxyPass /restaurant http://localhost:4382/ connectiontimeout=60 timeout=60

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X