On Thu, Oct 06, 2016 at 02:44:24PM +0200, Alexandre wrote: > Merci d'avoir pris le temps de me répondre. Je vais faire des diff > entre 2 netstat. Le problème c'est que je suis derrière Akamai, du coup > je ne vois pas les connexions des clients finaux mais les IPs d'Akamai. > > exemple de connexion en close wait par IP : > > --- > 106 88.221.82.37 > 109 95.101.182.150 > 129 81.20.72.165 > 133 88.221.82.14 > 147 2.18.244.28 > 150 2.18.244.38 > 297 173.223.10.118 > 311 173.223.10.111 > 533 95.101.182.143 > 539 95.101.182.125 > 775 2.22.112.181 > 840 92.123.226.166 > 845 92.123.226.174 > 927 88.221.113.45 > 997 88.221.112.246 > 3455 2.22.112.159 > 3573 2.22.112.119 > ---
Il faut prendre le tuple (src ip, dst ip, src port, dst port) pour identifier la connexion de manière unique. L'IP remote ne suffit pas. Si plusieurs connexions s'attardent d'un netstat à l'autre, c'est problématique. Si ça vient principalement de certaines IP, ça serait intéressant de voir ce qu'utilise ce client comme configuration : keep-alive ou pas, HTTP/2 ? Si un seul des sites que tu héberges a ce problème, il doit avoir une caractéristique particulière (HTTP/2 avec pipelining de requêtes ou streaming par exemple). > Autre question bête, si j'ai un vrai poblème de latence, qui est tout à > fait possible, sachant que j'ai plusieurs applications web sur > différents ports (port 10001 -> application 1, port 10002 -> > application2 ...) est-ce-que ces close wait apparaitraient sur tous les > ports, ou que sur le port ou il y a trop de trafic ? Oui effectivement, mais comme je disais ci-dessus il y a peut-être une caractéristique qui amplifie ça sur ce site. Essaie juste de regarder ton requests log et fait un distribution de la latence en ms sur plusieurs buckets. Par exemple (à ajuster en fonction de ce que tu vois) : [0-50] [50-100] [100-500] [500-1000] [1000-5000] [5000-] Eventuellement le faire par site hébergé. Regarde les quelques requêtes avec une grosse latence et essaie de voir s'il elles ont quelque chose en commun que les autre n'ont pas. Je pense que ça doit ce voir à ce niveau, si c'était plus bas dans la stack, ça affecterait problablement tous tes sites. -- Jeremie > Alexandre. > > On Mon, 3 Oct 2016 12:26:24 +0200 > Jeremie Le Hen <jere...@le-hen.org> wrote: > > > On Tue, Sep 27, 2016 at 05:16:12PM +0200, Alexandre wrote: > > > Bonjour à tous, > > > > > > je me permets de vous soumettre un petit problème que j'ai avec mes > > > 2 varnish. (pour info j'ai déjà posé cette question sur la mailing > > > list de Varnish) > > > > > > J'ai une architecture très conventionnelle, voici l'ordre des > > > éléments depuis un internaute. > > > > > > - akamai > > > - load balancer niveau 4 (LVS) > > > - varnish (en direct routing) > > > - backend > > > > > > Il y a plusieurs "applications" web tournant sur des ports > > > différents, mais une d'entre elles pose problème. J'ai des > > > connexions en "CLOSE_WAIT" qui s'accumulent. > > > > > > J'ai passé quelques paramètres dans sans mon sysctl.conf pour > > > essayer d'atténuer ce problème > > > > > > --- > > > net.ipv4.tcp_keepalive_time = 60 > > > net.ipv4.tcp_keepalive_intvl = 30 > > > net.ipv4.tcp_keepalive_probes = 20 > > > net.ipv4.tcp_tw_recycle = 1 > > > net.ipv4.tcp_tw_reuse = 1 > > > --- > > > > > > En passant ces paramètres, j'ai des optimisations pour mes > > > "webservices" (voir WEBSERVICE.png) et aucune optimisation pour le > > > statique (voir IMAGE.png). > > > > > > Qand je fais un netstat, le "close_wait" vient exclusivement > > > d'akamai. Mais mais autres sites sont aussi sur akamai dans le PM. > > > > > > Si je redémarre Varnish, les connexions se ferment, ca serait > > > varnish qui ne ferme pas ses connexions, mais en mm temps Varnish > > > ferme correctement les connections pour les autres sites. > > > > > > Je bloque sur ce problème, auriez-vous une piste ? > > > > Une connexion TCP n'est pas forcément full-duplex. En particulier, en > > HTTP (sans keepalive je pense), le client peut ouvrir une connexion, > > envoyer sa requête et faire un shutdown(2) dessus pour signifier qu'il > > n'enverra plus de données via celle-ci. La connexion est alors > > half-duplex et peut toujours être utilisée pour recevoir la réponse à > > la requête, jusqu'à ce que le serveur ferme lui aussi la socket à son > > tour. Voir le cas 2 de la section 3.5 de la RFC : > > https://tools.ietf.org/html/rfc793#section-3.5 > > > > Si c'est bien la raison pour laquelle tu es en CLOSE_WAIT, le fait > > qu'elle s'accumule indique tu tu reçois trop de traffic pour ta > > latence de réponse. > > > > Imaginons que tu reçoives 1000 qps et que chaque requête prend en > > moyenne 5 ms, ça te fait donc un total de traitement de 5 > > secondes/seconde et en moyenne il y aura 5 requêtes en CLOSE_WAIT à > > tout instant (concurrence = 5). > > > > Disons que ce soit ta charge maximum. Je ne sais pas quel est ton > > pattern de traffic, mais ce calcul n'est valable que pour des > > moyennes. Si tu as quelques requêtes qui prennent 100 ms pour une > > raison ou une autre, ça peut te mettre dedans. Tu auras alors 10 > > requêtes par seconde qui te prendront en tout 1 s de traitement. Il > > reste donc 4 secondes pour gérer les 990 autres. On peut aisément > > imaginer que ça s'accumule. > > > > Bref, je te conseille de prendre un netstat toutes les secondes et de > > faire un diff des connexions en CLOSE_WAIT. Si c'est complètement > > différent, c'est que ton serveur reçoit juste trop de requêtes, essaie > > d'augmenter le temps de caching côté client. S'il y a des requêtes > > qui restent d'une seconde sur l'autre, à mon avis il faut investiguer > > sur la raison de cette latence > > importante. > > > > > > > > > > Alexandre. > > > > > > --- > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:60697 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:34567 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:61335 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:62058 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:40986 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:51570 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 88.221.113.45:54955 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 92.123.224.151:61522 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 95.101.182.125:34379 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.181:38540 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 88.221.112.246:55492 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:60806 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 173.223.10.118:59989 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 81.20.72.214:44728 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 5.178.43.14:49587 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 88.221.112.246:34017 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:47600 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 173.223.10.111:45591 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 95.101.182.143:60799 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:56000 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 88.221.113.45:47618 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:56326 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:38030 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 173.223.10.111:48353 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:45874 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.18.244.38:64988 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.16.156.76:52033 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 88.221.112.246:56818 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:52815 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 88.221.112.246:46618 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:54625 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.16.117.87:50440 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:37357 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.181:34291 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:40424 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:52707 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:59426 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.181:63109 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 173.223.10.111:35693 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 173.223.11.39:58859 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.16.117.103:60576 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 88.221.113.45:47761 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 88.221.113.45:62756 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:42445 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:40627 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:64303 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.16.156.76:40652 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 92.123.64.183:33600 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:53681 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 95.101.182.125:47381 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.16.117.95:54014 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:52454 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:55112 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.181:53757 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:62656 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 88.221.112.246:47238 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 88.221.112.246:33872 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:41944 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.119:35897 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.159:57187 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 2.22.112.181:48931 > > > CLOSE_WAIT 28878/varnishd > > > tcp 1 0 ip_du_lb:7042 173.223.10.111:37577 > > > CLOSE_WAIT 28878/varnishd > > > --- > > > > > > > > > _______________________________________________ > > > Liste de diffusion du FRsAG > > > http://www.frsag.org/ > > > > > -- Jeremie Le Hen My PIN is the last four digits of Pi. _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/