Uptime ko régulièrement mais pas partout

Bonjour,

Y a-t-il une configuration particulière côté NGINX en reverse proxy afin d’éviter des uptime ko ?

J’ai une 30aine de service Web derrière mon reverse problème, certains sont régulièrement en uptime , mais pas tous.

Si vous avez des avis…

Merci

J’utilise nginx en reverse proxy depuis quelques temps et ça tourne plutôt très bien pour mon besoin basique: du http/s seulement, sans les streams.

Je comprends pas bien ta question: qu’est-ce que tu entends par uptime ko? Des services qui ne répondent plus temporairement ou qui demandent carrément une intervention pour repartir?

Ola

En fait tu vas sur ce lien par exemple : Libre Currency : Coming soon

Des fois ça ne répond pas, ça mouline.Maos si tu rafraichies la page. C’est ok.
Ça me le fait sur certaines pages , mais pas toutes.

Ok, pas tellement d’idée sur le pourquoi du comment mais je viens de visiter la page avec mon tél puis sur le pc et à chaque fois j’ai eu le même comportement:

  • première visite normale j’ai juste ouvert un nouvel onglet: chargement ok
  • deuxième visite avec un onglet incognito: ça pédale quelques secondes (<10) puis ça charge correctement
  • dans les deux cas un refresh de la page fonctionne correctement, idem si je ferme la fenêtre incognito pour y retourner de cette manière, aucun délai d’attente
  • jamais eu de timeout ou autre erreur bloquante, juste du délai

Pas sûr que ça puisse t’aider mais bon au cas où…

J’essaierai à nouveau un peu plus tard pour voir si ça peut être une question de création de nouvelle session côté serveur ou quelque chose dans ce genre. À chaud je dirais que ça peut être ça plutôt qu’une question de proxy, ou bien dans la couche réseau en amont, peut-être du routage… Je dis ça au pif mais t’as sûrement une raison qui te pousses à incriminer le reverse proxy?

[edit] Testé deux heures plus tard et j’ai eu un délai de 70 secondes avant l’affichage de la page.

J’ai également fait des tests avec Firefox etje n’ai pas eu de problème, seulement de temps en temps de la latence comme le mentionne Rob-air.

Quand tu dis que ça ne réponds pas, tu as quoi comme erreur, une 408 ou 504 correspondant au timeout ou banal 404, 500 ou 502 ?
ça peut déjà donner des pistes si c’est plutot le reverse proxy ou le serveur lui même.

Est-ce que tu as configurer des timeout dans ton reverse proxy ?
Est-ce que tu as du cache ?

Au passage même si le site est en construction, j’ai vu des erreurs de chargement de css

Erreur dans les liens source : Error: request failed with status 404
URL de la ressource : https://g1currency.org/styles/vendor/bootstrap/css/bootstrap.min.css?v=4.1.5
URL du lien source : bootstrap.min.css.map

ainsi que des erreurs de cross-origin

Hello

merci pour tes remarques. J’avais configuré un timeout. L’erreur est plus souvent une erreur 500 .
Ca me le fait des fois aussi https://www.ethicit.fr

edit : j’ai des remontées récurrentes sur g1currency , via uptimerobot

Un problème de résolveur DNS surchargé ou qui ne réponds pas ?

Cela peut venir de plusieurs choses, effectivement comme le mentionne ljf d’un probleme de dns surchargé, mais également d’une configuration différentes entre le reverse proxy et le serveur http lui même, entre autre chose les timeout comme précisé précédemment mais également par exemple les workers connections plus élevées sur le reverse que sur le serveur lui meme.

Est-ce que sans le reserve tu as des problèmes ou c’est juste avec le reverse proxy ?

Est-ce que tu peux nous partager tes configs du reverve et du serveur ?
Si tu préfères en privé…

Ensuite l’étape suivante et d’augmenter le niveau de log pour voir ce qu’il se passe.

J’ai déjà eu ce genre de symptômes avec nginx et des CGI en upstream.

Le soucis peut venir d’un service upstream qui gère mal les connexions multiples.

Nginx gère les connexions multiples entrantes (d’un mm utilisateur ou de plusieurs utilisateurs) et interroge les services upstream aussi avec des connections multiples.

Dans mon cas la première connection passait mais pas les suivantes.

Je n’ai pas trop creusé de solution car cela se produit sur des CGI qui sont pour mon seul usage, je m’en accommode.

Qu’est ce que tu utilises côté upstream ?

merci pour vos retours . Pas le trop de répondre malheureusement .
Mais en enlevant le swap du proxmox , ça marche de suite mieux …
Ah je vous avais pas dit que c’était sur proxmox :confused:

Mon serveur proxmox sur lequel les services tournes sur des CT , chacun avec un nginx/ apache .
Et mon serveur proxmox fait office de reverse proxy , avec pour chaque reverse proxy , un fichier de conf spécifique ( mais globalement tous identique identique , a part l’ip de la VM cible qui change et le nom dns évidement :slight_smile: )

Je viens de tester à nouveau sans problème d’accès spécifique.
J’ai testé aussi avec des services pour voir si cela pouvait provenir de DNS, ou autre et apparemment tout va bien :

Est-ce que tes alertes avec uptimerobot sont à des heures fixes ? Ce qui pourrait être lié à un programme ou autre qui tourne en même temps…

Si tu penses que c’est lié au swap, il faut peut être regarder au niveau de la charge mémoire de ton serveur proxmox en lui même mais également au niveau de la mémoire que tu as alloué à tes containers qui en ont peut être par moment plus besoin que ce que tu leurs a alloué.

On en avant échangé à ce sujet ici : Proxmox/LXC gestion SWAP - #6 par ManchotManosquin
Mais ça n’a pas peut être rien à voir aussi

Ton problème ne semble pas résolu :

$ time curl -I https://g1currency.org/
HTTP/2 302
server: nginx/1.18.0
date: Fri, 10 Jun 2022 23:38:20 GMT
content-type: text/html; charset=UTF-8
x-frame-options: deny
content-security-policy: frame-ancestors 'none';
set-cookie: YesWiki-main=1n93llt9t5b9bl3918g177e7e9; path=/; HttpOnly
expires: Thu, 19 Nov 1981 08:52:00 GMT
cache-control: no-store, no-cache, must-revalidate
pragma: no-cache
location: https://g1currency.org/?PagePrincipale
strict-transport-security: max-age=31536000
x-content-type-options: nosniff


real	1m4,124s
user	0m0,036s
sys	0m0,007s

(1 minute 4 seconde pour envoyer une redirection 302 c’est un peu long).

J’ai fait tourner en boucle pour voir, et juste à des moment ça spike :

$ while true; do time curl https://g1currency.org/; sleep 1; done
(...)
real	0m0,175s
user	0m0,032s
sys	0m0,005s

real	0m31,856s <---------------- 31 secondes
user	0m0,050s
sys	0m0,008s

real	0m3,266s
user	0m0,034s
sys	0m0,006s

real	0m0,172s
user	0m0,034s
sys	0m0,003s

real	0m0,172s
user	0m0,030s
sys	0m0,006s
(...)

C’est pas lié au DNS à mon avis parce qu’il est déjà en cache à ce moment (et un test similaire avec dig montre qu’il y a pas de problème).

J’ai aussi observé un 504 Gateway timeout sur ton site.
Ça veut dire que ton reverse proxy n’arrive pas à contacter ton service en backend (ici probablement ton Apache ou PHP-FPM).

Le problème ressemble donc plus à quelque chose de décrit par @setop.
Typiquement d’autres gens ont ce type de problème aussi : codeigniter - Nginx + php-fpm random hang - Stack Overflow

Je ne serais pas étonné que ce soit lié à ta configuration de PHP-FPM / Apache qui acceptent au plus x connexions en simultané et mettent les autres en attente. Pour peu qu’un bot martelle un peu, et zouh le site devient lent.

Ça n’est cependant pas trivial car ton site supporte sans peine 200 connexions simultanées (aka slow loris) de ce que j’ai pu voir. Donc c’est potentiellement un truc un peu tricky.

J’irais faire un tour dans tes logs nginx/apache/php-fpm à ta place, on sait jamais, tu pourrais découvrir des trucs… Peut etre que quelqu’un essaye de forcer un mot de passe par batch et fait monter la load sur ton serveur ?

Je pense avoir trouvé, la conf bginx semblaient limité niveau workers connection
J’ai changé la valeur de 20000 a 50000.