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.