2 votes

apache ne répond pas aux demandes même si l'utilisation du processeur est très faible

Je travaille à la mise au point d'un serveur apache dans une pile LAMP sur une instance ec2 m3.medium fonctionnant sous Amazon Linux.

Il y a quelques semaines, mysql a commencé à planter tout le temps et il semblait que c'était apache (2.2) qui causait le problème en raison de problèmes de mémoire. Nous avons procédé à une analyse et modifié la configuration pour réduire le nombre de serveurs. Cela a résolu le problème de mysql mais c'était à Noël quand il y avait des niveaux de trafic beaucoup plus bas, nous avons depuis augmenté progressivement le nombre de serveurs pour essayer de trouver le niveau optimal pour le serveur.

Apache présente maintenant un comportement inattendu. Après une certaine période de temps, il met des siècles à servir les nouvelles requêtes (minutes), quand je vérifie le top etc., quand cela se produit, l'utilisation du CPU peut être aussi basse que 0% mais est toujours très basse, c'est comme si Apache ne faisait rien. Il y a un tas de processus apache dans la lecture de top mais c'est comme s'ils ne faisaient rien. J'ai essayé de désactiver KeepAlive au cas où ils seraient bloqués de cette façon, mais cela n'a fait aucune différence.

Nous utilisons toujours prefork MPM (en cours de mise en place d'un nouveau serveur pour changer cela). La configuration est donc

StartServers       10
MinSpareServers    10
MaxSpareServers   30
ServerLimit      40
MaxClients       40
MaxRequestsPerChild  2000

KeepAlive Off

Quelqu'un peut-il m'aider à comprendre ce qui se passe ? Ma compréhension d'Apache est trop limitée pour comprendre ce qui ne va pas, mais mon intuition me dit que les processus Apache sont bloqués d'une manière ou d'une autre. J'ai essayé de regarder le mod_status mais il ne sert à rien dans cette situation car la requête reste là à attendre la réponse d'Apache. Pour le moment, je dois simplement réinitialiser régulièrement Apache, ce qui est loin d'être idéal. J'ai inclus un certain nombre d'entrées de surveillance ci-dessous, en espérant qu'elles m'éclairent sur ce qui se passe ou sur ce que je devrais regarder ensuite.

Merci beaucoup.

sortie de libre :

             total       used       free     shared    buffers     cached
Mem:          3578       3481         96          0         22        550
-/+ buffers/cache:       2909        669
Swap:         1023        226        797

sortie du haut

top - 10:35:15 up 12 days, 14:14,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 189 total,   1 running, 188 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3664028k total,  3559768k used,   104260k free,    21076k buffers
Swap:  1048572k total,   232500k used,   816072k free,   559268k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
19973 apache    20   0 1042m 346m 271m S  0.0  9.7   1:17.08 httpd
19964 apache    20   0 1030m 327m 266m S  0.0  9.2   1:11.35 httpd
19970 apache    20   0 1019m 316m 265m S  0.0  8.9   0:59.22 httpd
19981 apache    20   0 1034m 316m 249m S  0.0  8.8   1:10.28 httpd
19962 apache    20   0 1103m 312m 176m S  0.0  8.7   1:15.58 httpd
19966 apache    20   0 1040m 306m 233m S  0.0  8.6   1:24.83 httpd
19971 apache    20   0 1037m 304m 235m S  0.0  8.5   1:03.00 httpd
20848 apache    20   0 1023m 304m 248m S  0.0  8.5   1:11.44 httpd
19969 apache    20   0 1022m 303m 248m S  0.0  8.5   1:06.99 httpd
 2199 mysql     20   0  929m 299m 7656 S  0.0  8.4   2137:27 mysqld
27961 apache    20   0 1162m 288m 195m S  0.0  8.1   0:33.04 httpd
19968 apache    20   0 1049m 275m 194m S  0.0  7.7   1:09.61 httpd
20846 apache    20   0 1027m 272m 212m S  0.0  7.6   1:08.45 httpd
30931 apache    20   0 1062m 270m 177m S  0.0  7.6   0:21.48 httpd
21038 apache    20   0 1049m 269m 187m S  0.0  7.5   1:03.50 httpd
19984 apache    20   0 1023m 267m 211m S  0.0  7.5   1:01.80 httpd
19960 apache    20   0 1060m 259m 166m S  0.0  7.3   1:01.87 httpd
19972 apache    20   0 1025m 258m 202m S  0.0  7.2   1:01.66 httpd
19965 apache    20   0 1031m 256m 192m S  0.0  7.2   1:05.59 httpd
19963 apache    20   0 1022m 248m 192m S  0.0  6.9   0:55.78 httpd
19961 apache    20   0 1037m 247m 177m S  0.0  6.9   1:18.43 httpd
30934 apache    20   0 1019m 242m 189m S  0.0  6.8   0:07.20 httpd
30932 apache    20   0 1062m 233m 140m S  0.0  6.5   0:09.04 httpd
24211 apache    20   0 1020m 230m 177m S  0.0  6.4   0:39.03 httpd
19974 apache    20   0 1020m 227m 174m S  0.0  6.4   1:14.78 httpd
31298 apache    20   0 1015m 215m 168m S  0.0  6.0   0:05.64 httpd
  406 apache    20   0 1146m 181m  94m S  0.0  5.1   0:08.68 httpd
31297 apache    20   0 1033m 161m  96m S  0.0  4.5   0:08.05 httpd
  408 apache    20   0 1020m 139m  86m S  0.0  3.9   0:02.53 httpd
 1370 apache    20   0 1041m 136m  53m S  0.0  3.8   0:02.26 httpd
 1372 apache    20   0 1019m 125m  73m S  0.0  3.5   0:01.01 httpd
 1392 apache    20   0 1041m 111m  37m S  0.0  3.1   0:02.18 httpd
 1402 apache    20   0 1107m 100m  52m S  0.0  2.8   0:00.33 httpd
 1542 apache    20   0 1013m  97m  51m S  0.0  2.7   0:00.88 httpd
 1362 apache    20   0  999m  92m  52m S  0.0  2.6   0:01.03 httpd
 1424 apache    20   0  997m  91m  53m S  0.0  2.6   0:00.60 httpd
 1410 apache    20   0  997m  91m  53m S  0.0  2.6   0:00.38 httpd
  407 apache    20   0 1019m  91m  39m S  0.0  2.6   0:01.17 httpd
 1427 apache    20   0  997m  91m  52m S  0.0  2.6   0:00.57 httpd
 1371 apache    20   0 1013m  83m  37m S  0.0  2.3   0:00.31 httpd
 1541 apache    20   0  981m  57m  34m S  0.0  1.6   0:00.17 httpd
32187 root      20   0  967m  26m  17m S  0.0  0.7   0:02.49 httpd

sortie de sar -u

06:10:01 AM     all     18.23      0.00      2.03      2.42     15.23     62.09
06:20:01 AM     all     50.85      0.00      2.84      0.46     40.40      5.45
06:30:02 AM     all     48.69      0.00      2.76      0.63     38.56      9.35
06:40:01 AM     all     47.25      0.00      2.85      1.60     37.61     10.70
06:50:02 AM     all     50.16      0.00      3.52      0.57     40.73      5.03
07:00:01 AM     all     47.51      0.00      2.76      0.75     37.77     11.21
07:10:01 AM     all     35.43      0.00      2.65      1.73     28.79     31.40
07:20:02 AM     all     19.84      0.00      2.10      2.21     16.67     59.19
07:30:02 AM     all     24.34      0.00      2.30      2.28     20.17     50.91
07:40:02 AM     all     18.45      0.00      1.66      1.97     15.14     62.78
07:50:01 AM     all     22.23      0.00      2.32      2.92     18.55     53.98
08:00:02 AM     all     19.60      0.00      1.98      2.31     16.21     59.90
08:10:02 AM     all     18.17      0.00      2.00      3.72     15.07     61.04
08:20:01 AM     all     13.80      0.00      1.72      3.27     11.73     69.48
08:30:01 AM     all     11.79      0.00      1.50      3.40     10.03     73.28
08:40:01 AM     all     16.59      0.00      1.95      2.73     14.02     64.71
08:50:01 AM     all     18.04      0.00      1.96      2.37     15.26     62.38
09:00:02 AM     all     17.94      0.00      2.16      2.79     15.20     61.91
09:10:01 AM     all      4.97      0.00      0.82      1.07      4.46     88.69
09:20:01 AM     all      0.18      0.00      0.28      0.19      0.50     98.85
09:30:01 AM     all      0.13      0.00      0.19      0.05      0.41     99.21
09:40:01 AM     all      0.17      0.00      0.19      0.07      0.43     99.14
09:50:01 AM     all      0.13      0.00      0.21      0.03      0.45     99.18
10:00:02 AM     all      0.17      0.00      0.23      0.05      0.47     99.08
10:10:02 AM     all      0.14      0.00      0.20      0.04      0.44     99.18

10:10:02 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
10:20:01 AM     all      0.16      0.00      0.24      0.03      0.49     99.08
10:30:01 AM     all      0.14      0.00      0.21      0.03      0.43     99.19
Average:        all     19.78      0.03      1.78      2.19     16.21     60.01

sortie de sar -r

06:00:02 AM    135820   3528208     96.29    194768   1170836   2544680     54.00
06:10:01 AM    140220   3523808     96.17    196932   1174256   2531460     53.72
06:20:01 AM    133368   3530660     96.36    199088   1180468   2534200     53.77
06:30:02 AM     75624   3588404     97.94    201796   1187420   2590456     54.97
06:40:01 AM     56112   3607916     98.47    201388   1138840   2669548     56.65
06:50:02 AM     83040   3580988     97.73    195960   1120028   2659192     56.43
07:00:01 AM     56500   3607528     98.46    198812   1128004   2688464     57.05
07:10:01 AM     82508   3581520     97.75    201584   1080180   2699568     57.28
07:20:02 AM    118984   3545044     96.75    204008   1061088   2681724     56.91
07:30:02 AM     48180   3615848     98.69    206580   1053828   2757888     58.52
07:40:02 AM     98828   3565200     97.30    208404   1010216   2752216     58.40
07:50:01 AM     53364   3610664     98.54    181868    961276   2943300     62.46
08:00:02 AM     72516   3591512     98.02    132032    820096   3182764     67.54
08:10:02 AM     97400   3566628     97.34     81824    793872   3254192     69.05
08:20:01 AM    105988   3558040     97.11     77336    796660   3239836     68.75
08:30:01 AM    110324   3553704     96.99     71368    805276   3242836     68.81
08:40:01 AM     89500   3574528     97.56     79736    814620   3255128     69.07
08:50:01 AM    137284   3526744     96.25     83296    817316   3192548     67.74
09:00:02 AM     28812   3635216     99.21     62000    723488   3599616     76.38
09:10:01 AM     42524   3621504     98.84     28976    601588   3792068     80.47
09:20:01 AM     71276   3592752     98.05     25720    583384   3782844     80.27
09:30:01 AM     81648   3582380     97.77     22472    573408   3784820     80.31
09:40:01 AM     87440   3576588     97.61     21816    573048   3784832     80.31
09:50:01 AM     80876   3583152     97.79     21860    572996   3785180     80.32
10:00:02 AM     88716   3575312     97.58     22032    569412   3783548     80.29
10:10:02 AM     90332   3573696     97.53     22312    569088   3779908     80.21

10:10:02 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
10:20:01 AM     88780   3575248     97.58     22612    567108   3783600     80.29
10:30:01 AM     90904   3573124     97.52     22932    566772   3780868     80.23
Average:       168071   3495957     95.41    129184    898526   2965883     62.94

UPDATE : J'apprécie vraiment les commentaires et l'aide sur ce sujet. J'ajoute plus d'informations de base ici :

Je m'interroge sur la taille des processus apache (et donc sur le nombre de serveurs). La taille importante des processus pourrait-elle être le symptôme d'un problème ? Lorsque j'ai réduit le nombre de serveurs à 8, la taille des processus apache est passée à (200Mb-400Mb) même immédiatement après le redémarrage. Lorsque j'ai augmenté le nombre de serveurs, la taille a considérablement diminué pour atteindre quelque chose comme (60 Mo), mais au fil du temps, elle a augmenté, comme on peut le voir dans la sortie supérieure ci-dessus. Je suis donc un peu incertain en ce qui concerne le nombre de serveurs - Il semble qu'Apache se contentait de prendre la mémoire disponible lorsqu'il y avait un nombre réduit de serveurs - est-ce une interprétation raisonnable ?

Nous utilisons l'apc sur certains des hôtes virtuels, en particulier les 2 installations magento qui sont sur le serveur.

J'ai désactivé KeepAlive pour voir si cela affectait l'augmentation de la taille du processus, cela ne semble pas avoir d'effet mais je l'ai gardé désactivé pendant que j'essaie de résoudre ce problème pour l'éliminer de l'équation. Nous avons également essayé d'utiliser une faible valeur pour MaxRequestsPerChild de 200 au cas où il y aurait un problème à ce niveau.

Le serveur a 4G de mémoire mais comme je n'arrive pas à déterminer la taille moyenne des processus (à cause de la variabilité qui dépend des paramètres d'Apache), j'ai adopté la méthode suivante : commencer par une taille faible puis augmenter l'application et voir la mémoire libre dans free -m (en regardant la ligne buffers/cache).

Merci pour votre contribution.

1voto

BillThor Points 27096

Il semble qu'il y ait une incohérence entre la sar -u y top les listes. Un élément non répertorié utilise beaucoup de CPU. Essayez de changer l'ordre de tri de top à %CPU pour voir où va le CPU.

Il semble que vous ayez une fuite de mémoire importante dans l'application que vous exécutez sous Apache. Essayez de réduire MaxRequestsPerChild à 200 ou 100. Cela devrait permettre de recycler les serveurs avant qu'ils ne perdent trop de mémoire.

Réduire MaxSpareServers à 10 ou plus peut libérer un peu plus de mémoire.

J'utilise un format de journal modifié pour montrer le temps d'exécution des demandes. Vous pouvez utiliser le champ du temps d'exécution pour déterminer si les demandes prennent trop de temps à être traitées. C'est le format de journal que j'utilise pour un hôte avec plusieurs serveurs virtuels dans le même fichier journal. Le site %(ms)T remplace la valeur %l qui est toujours - . sauf si IdentityCheck est activé. (IdentityCheck s'appuie sur ident étant activé sur le serveur distant, ce qui est hautement improbable).

# Modified log format with virtual host, execution time, and query params
LogFormat "%v:%p %a %{ms}T %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" local

0 votes

Merci de votre réponse. Lorsque j'ai fait top, j'ai utilisé > pour faire défiler l'utilisation du CPU. Je pensais que le sar -u montrait la même chose que la sortie top ? A 9:10, le % d'inactivité commence à augmenter pour atteindre près de 100%. J'ai pensé que c'était cohérent avec quelque chose qui attachait apache mais qui ne servait pas réellement quelque chose. Pourriez-vous m'aider à comprendre pourquoi vous pensez qu'il y a cette utilisation du CPU et ce qu'il y a dans les sorties qui vous fait penser qu'il y a une fuite de mémoire. J'apprécierais vraiment, j'essaie d'apprendre à interpréter ces données.

0 votes

@Tofuwarrior sar avait montré beaucoup d'unités centrales utilisées et volées. Je chercherais à sar -B y/o sar -W éventuellement sar -q . Il semble que vous ayez trop de gros serveurs Apache en cours d'exécution et que la pagination soit trop importante. Les temps de réponse augmentent généralement rapidement lorsque ce type de problème se développe. Avez-vous suffisamment de mémoire pour 40 processus ?

0 votes

J'apprécie vraiment votre aide. Je me pencherai sur ces questions. J'ai ajouté quelques informations supplémentaires à la question concernant vos réflexions, en particulier sur les serveurs.

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