191 votes

NGINX : upstream timed out (110 : Connection timed out) lors de la lecture de l'en-tête de réponse depuis upstream

J'ai Puma comme serveur d'applications en amont et Riak comme cluster de base de données. Lorsque j'envoie une requête qui réduit un morceau de données pour environ 25 000 utilisateurs et le renvoie de Riak vers l'application, j'obtiens une erreur dans le journal de Nginx :

upstream timed out (110 : Connection timed out) lors de la lecture du l'en-tête de réponse de l'amont

Si j'interroge mon amont directement sans proxy nginx, avec la même requête, j'obtiens les données requises.

Le délai d'attente de Nginx se produit une fois que le proxy est mis en place.

**nginx.conf**

http {
    keepalive_timeout 10m;
    proxy_connect_timeout  600s;
    proxy_send_timeout  600s;
    proxy_read_timeout  600s;
    fastcgi_send_timeout 600s;
    fastcgi_read_timeout 600s;
    include /etc/nginx/sites-enabled/*.conf;
}

**virtual host conf**

upstream ss_api {
  server 127.0.0.1:3000 max_fails=0  fail_timeout=600;
}

server {
  listen 81;
  server_name xxxxx.com; # change to match your URL

  location / {
    # match the name of upstream directive which is defined above
    proxy_pass http://ss_api; 
    proxy_set_header  Host $http_host;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_cache cloud;
    proxy_cache_valid  200 302  60m;
    proxy_cache_valid  404      1m;
    proxy_cache_bypass $http_authorization;
    proxy_cache_bypass http://ss_api/account/;
    add_header X-Cache-Status $upstream_cache_status;
  }
}

Nginx dispose d'un grand nombre de directives de délai d'attente. Je ne sais pas si je manque quelque chose d'important. Toute aide serait très appréciée....

0voto

David Mercer Points 1

Pour proxy_upstream timeout, j'ai essayé les paramètres ci-dessus mais ils n'ont pas fonctionné.

Réglage de resolver_timeout a fonctionné pour moi, sachant qu'il fallait 30s pour produire le message de dépassement de délai en amont. Par exemple me.atwibble.com n'a pas pu être résolu (110 : Operation timed out) .

http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver_timeout

0voto

Jagdish Bhadra Points 1

Nous avons rencontré un problème lors de l'enregistrement du contenu (type de contenu personnalisé) donnant une erreur de délai d'attente. Nous avons résolu ce problème en ajoutant tous les délais ci-dessus, en configurant le client http à 600s et en augmentant la mémoire du processus php à 3 Go.

0voto

salman Points 1

Si vous utilisez wsl2 sur Windows 10, vérifiez votre version par cette commande :

wsl -l -v

vous devriez voir 2 sous la version. Si ce n'est pas le cas, vous devez installer _wsl_update_x64_ .

-1voto

Maurício Otta Points 1

J'espère que cela aidera quelqu'un : J'ai rencontré cette erreur et la cause était une mauvaise permission sur le dossier de log pour phpfpm, après l'avoir changé pour que phpfpm puisse y écrire, tout allait bien.

-2voto

leiting.liu Points 1

Nouveau ajouter une ligne de configuration à location ou nginx.conf, par exemple : proxy_read_timeout 900s ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X