Linux kernel: les packages réseau sortants sont bloqués?

ESX VM: 2 vCPU. RedHat Ent 5.6. Apache 2.2.3 / python cgi et une application J2EE.

Nous avons un script de moniteur tirant une page de cet Apache, qui appelle un simple script python cgi, chaque minute, en utilisant curl, avec un maximum de time réglé à 30 secondes.

Tous les jours, à 9 heures du matin, le logiciel NetBackup démarre, ce qui augmente la CPU et la charge d'E / S sur le système pendant environ 20 minutes environ … assez souvent, le moniteur échouerait, disant qu'il n'a rien obtenu en 30 secondes, peut-être tous les deux jours ou deux ….

J'aimerais savoir exactement quel est le problème …

Les journaux d'Apache ont été traités correctement. Le cgi python qui s'appelait également enregistré que tout allait bien et rapidement.

La CPU pendant la sauvegarde affiche 40% d'attente d'E / S, 40% de l'user 10% inactif.

Les lecteurs de lecture de disque font un pic à ce moment-là, mais le time de lecture du disque ne dépasse pas du tout.

Je me suis attaché aux process httpd, pendant le time de sauvegarde, et j'ai eu de la chance de capturer une trace d'une telle sonde de surveillance défaillante. La chose étrange est que la trace indique que la requête a été complétée en environ 1,3 seconde … mais le client n'a jamais reçu datatables de réponse dans les 30 secondes qu'il a attendues.

Je n'ai pas pris de tcpdump au cours de cette sonde straced, mais j'ai déjà remarqué, en effet, que le système prend simplement 10, 20 et plus, secondes, pour envoyer les packages de données, alors que Apache aurait enregistré que c'était fait avec la réponse .

Strace ressemble à ceci:

28259 09:25:01.617226 accept(6, {sa_family=AF_INET, sin_port=htons(34106), sin_addr=inet_addr("192.168.151.84")}, [17179869200]) = 24 <0.000045> ... 18130 09:25:01.670991 execve("/var/path/to/script.py", ... 28259 09:25:01.661924 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x2b8bf4a3c3d0) = 18130 <0.003602> ... 18130 09:25:02.965223 write(1, "content-type: text/html\n\n1001 Missing Required Parameter \r\n", 88) = 88 <0.000084> 28259 09:25:02.965408 <... epoll_wait resumed> {{EPOLLIN, {u32=261317976, u64=47880556733784}}}, 2, 300000) = 1 <1.297266> 18130 09:25:02.966161 exit_group(0) = ? 28259 09:25:02.966299 read(29, "content-type: text/html\n\n1001 Missing Required Parameter \r\n", 8000) = 88 <0.002616> 28259 09:25:02.969791 epoll_wait(27, 

Ma question est de savoir comment puis-je décomposer cela? Où la réponse a-t-elle été bloquée? Est-il possible de disposer de plus de vCPU pour savoir ce que ce système doit faire face à l'augmentation des opérations d'E / S? Est-ce que c'est une question d'E / S?

Aussi, comment pourrait-on save une requête avec 200 code d'état, lorsque le client n'a jamais reçu datatables et a fini par fermer activement la connection TCP? Ce n'est peut-être pas le cas en fait. peut-être que Apache n'a pas enregistré la request du tout.

One Solution collect form web for “Linux kernel: les packages réseau sortants sont bloqués?”

Vous voudrez peut-être consulter les tampons de sonnerie sur vos maps réseau. Étant donné que vous effectuez une sauvegarde réseau, cela risque probablement d'avoir un impact. Voici un article dans la base de connaissances de RH: Quelle est la première chose à essayer lorsque je vois mes périphériques réseau abandonner des packages .

Pour résumer le document: plusieurs fois les packages abandonnés sont dus à une memory tampon de réseau remplie, souvent le tampon de réception. Vérifiez l'interface en question en utilisant ifconfig pour voir si les packages sont abandonnés. S'ils envisagent d'augmenter la taille des tampons d'anneau en utilisant l'éthool.

En outre, puisque vous utilisez votre système en tant que VM invité, modifiez votre planificateur IO sur "noop". C'est le meilleur planificateur à utiliser lorsque vous exécutez un invité virtualisé. Le planificateur de noop ne s'efforce pas de prioriser ses opérations d'IO, ce qui réduit également les frais généraux du processeur. Normalement, cela peut provoquer une certaine congestion, mais dans cette situation, la planification de l'IO sera mieux transmise à l'hyperviseur, ce qui lui permettra de planifier plus facilement les opérations d'IO pour tous les invités.

  • Comment définir un dossier racine individuel pour chaque user ftp autre que le dossier de base
  • Quelqu'un a-t-il des problèmes avec une mise à niveau de la production de MySQL 5.1 à 5.5 en place?
  • LVM: resize2f pas de redimensionnement
  • Réglage de MySQL et Linux pour réduire le time de réponse maximal spécifiquement
  • "Adresse déjà utilisée" erreur de binding socket, lorsque les ports ne sont pas utilisés
  • La configuration NTP n'est pas reconnue?
  • La configuration iptables ne fonctionne pas
  • Désactiver, pas unisntall, perl sur Red Hat Enterprise 5.X?
  • Cause de battre le statut Nagios UNKNOWN?
  • KVM est un hyperviseur de type 1 ou type 2?
  • Comment puis-je installer automake et autoconf sur RedHat Enterprise 5?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.