Je suis en train de mettre au point un serveur Apache 2.2 (partagé avec MySQL + Courier + Mongo + Postgre). Le serveur est bare metal (pas de virtualisation) avec 2 Xeon quad-core (total 16 core) et 12GB ECC RAM (upgrade à 24GB dans les prochains jours). MySql a un innodb_buffer réglé sur 2G et se porte bien. Mongo et Postgre sont à peine touchés - juste pour le développement.
Le problème est qu'Apache consomme toute la mémoire disponible, finissant par utiliser tout le swap (et donc par faire planter MySql car il utilise plus de mémoire). Nous avons Apache 2.2 avec worker MPM et mod_security. Chaque fois que nous le redémarrons, nous avons environ 8G de RAM libre.
J'essaie de comprendre certaines choses :
- Quelle est la relation entre les processus montrés dans
top
avec les serveurs de travail ? Je m'attendais à voir au maximum 10 processus (comme la ServerLimit dans les paramètres du travailleur - sans prendre en compte le processus principal). - La quantité de mémoire RES est-elle utilisée pour chaque THREAD ou pour chaque PROCESSUS ?
- Dans la sortie mod_status ci-dessous, il y a beaucoup de requêtes READING qui restent là pendant un long moment. J'ai essayé d'activer ExtendedStatus pour découvrir quels clients sont présents, mais je n'ai pas trouvé d'informations utiles - des suggestions ?
- avec l'utilisation réelle de la mémoire, de quelle quantité de RAM aurais-je besoin pour servir 400 connexions simultanées ? (le statut du mod indique que 250 est déjà épuisé).
-
Pourquoi ne pas augmenter ThreadsPerChild au lieu d'augmenter MaxClients/ServerLimit ?
<IfModule worker.c> StartServers 2 MaxClients 250 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 ServerLimit 10 </IfModule>
TOP montre (seulement pour apache) :
top - 16:30:21 up 46 days, 23:12, 2 users, load average: 0.94, 0.97, 1.31
Tasks: 460 total, 1 running, 459 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.8%us, 0.5%sy, 0.0%ni, 96.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 12187448k total, 10686748k used, 1500700k free, 67104k buffers
Swap: 1048568k total, 275904k used, 772664k free, 2371208k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24252 wwwrun 20 0 2216m 161m 7484 S 20.2 1.4 0:09.25 httpd
24750 wwwrun 20 0 1264m 51m 6196 S 9.9 0.4 0:00.93 httpd
23996 wwwrun 20 0 2136m 279m 7292 S 6.0 2.4 0:16.76 httpd
23326 wwwrun 20 0 2216m 276m 7376 S 2.7 2.3 0:16.81 httpd
23582 wwwrun 20 0 2208m 293m 7132 S 2.3 2.5 0:27.30 httpd
23688 wwwrun 20 0 1904m 208m 7304 S 1.0 1.8 0:13.62 httpd
19507 wwwrun 20 0 2182m 229m 8096 S 0.7 1.9 0:18.65 httpd
23616 wwwrun 20 0 1908m 239m 7092 S 0.7 2.0 0:18.48 httpd
18304 wwwrun 20 0 2160m 334m 11m S 0.3 2.8 0:47.38 httpd
23637 wwwrun 20 0 1830m 231m 7556 S 0.3 1.9 0:20.56 httpd
24457 wwwrun 20 0 2196m 174m 6568 S 0.3 1.5 0:04.11 httpd
15694 wwwrun 20 0 2199m 295m 7504 S 0.0 2.5 0:20.54 httpd
15783 wwwrun 20 0 2172m 244m 10m S 0.0 2.1 0:17.45 httpd
16577 wwwrun 20 0 2128m 354m 7436 S 0.0 3.0 0:28.21 httpd
18290 wwwrun 20 0 277m 9880 964 S 0.0 0.1 0:00.05 httpd
18379 wwwrun 20 0 2208m 211m 6864 S 0.0 1.8 0:08.57 httpd
18480 wwwrun 20 0 2096m 305m 7540 S 0.0 2.6 0:17.72 httpd
18791 wwwrun 20 0 1920m 251m 7244 S 0.0 2.1 0:20.24 httpd
19348 wwwrun 20 0 2060m 310m 7388 S 0.0 2.6 0:22.07 httpd
19619 wwwrun 20 0 2206m 235m 7340 S 0.0 2.0 0:15.30 httpd
19999 wwwrun 20 0 2178m 144m 7132 S 0.0 1.2 0:05.50 httpd
20697 wwwrun 20 0 2002m 193m 7276 S 0.0 1.6 0:08.12 httpd
20838 wwwrun 20 0 1890m 127m 7260 S 0.0 1.1 0:07.44 httpd
21407 wwwrun 20 0 1988m 290m 7708 S 0.0 2.4 0:39.33 httpd
22252 wwwrun 20 0 2216m 295m 7732 S 0.0 2.5 0:27.04 httpd
22723 wwwrun 20 0 2020m 187m 7444 S 0.0 1.6 0:39.80 httpd
22753 wwwrun 20 0 1850m 206m 7448 S 0.0 1.7 0:10.62 httpd
23174 wwwrun 20 0 1990m 229m 7332 S 0.0 1.9 0:07.71 httpd
23383 wwwrun 20 0 1504m 76m 6372 S 0.0 0.6 0:01.25 httpd
23720 wwwrun 20 0 1906m 225m 7080 S 0.0 1.9 0:20.12 httpd
24778 wwwrun 20 0 970m 30m 5604 S 0.0 0.3 0:00.80 httpd
Enfin, la sortie mod_status :
Server Version: Apache/2.2.23 (Unix) mod\_ssl/2.2.23 OpenSSL/1.0.0-fips Domain Server PHP/5.3.24 with Suhosin-Patch mod\_perl/2.0.5
Perl/v5.10.1
Server Built: May 15 2013 10:17:30
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
Current Time: Monday, 12-May-2014 16:41:08 BRT
Restart Time: Monday, 12-May-2014 15:36:37 BRT
Parent Server Generation: 1
Server uptime: 1 hour 4 minutes 31 seconds
Total accesses: 36446 - Total Traffic: 1.6 GB
CPU Usage: u213.3 s13.65 cu0 cs0 - 5.86% CPU load
9.42 requests/sec - 442.8 kB/second - 47.0 kB/request
249 requests currently being processed, 0 idle workers
WWRRKRKRRKRRRRWRRWWWRWCRR.......................................
RWWWRRWRRRRKKRKRWRRRRRWWR.......................................
WRWRCRRWRRWWRKRRWWRRWRWWW.......................................
WRWKKWWWRWKRRWRCRRRWWRWWW.......................................
WRWRWCRKCWWWRWWRRWWCRWRWW.......................................
WRWKRWRRKKRKRRRRCWWKWWWRW.......................................
RWWKWRRWKRRRWRRWWCRRRRRRW.......................................
WWWRRWRKWWWKRWWWWRWWWKRRW.......................................
RRRRRRRK.WKRRWRWWKRRWRRKR.......................................
KCRRRRWRWWKRWWWRRKWRWRWRK.......................................
アップデート1:
J'ai essayé de désactiver mod_security2, j'ai modifié les paramètres des travailleurs, mais Apache finissait par consommer près de 20 Go de RAM (j'ai ajouté un fichier d'échange de 13 Go pour éviter le plantage du serveur).
Finalement, j'ai désactivé KeepAlive, et maintenu MaxRequestsPerChild à 100 - maintenant Apache utilise 2-3G, et les demandes sont nettoyées, comme le montre la sortie d'état ci-dessous :
Current Time: Tuesday, 13-May-2014 17:07:48 BRT
Restart Time: Tuesday, 13-May-2014 16:49:14 BRT
Parent Server Generation: 0
Server uptime: 18 minutes 33 seconds
Total accesses: 6637 - Total Traffic: 133.2 MB
CPU Usage: u34.43 s3.05 cu0 cs0 - 3.37% CPU load
5.96 requests/sec - 122.5 kB/second - 20.5 kB/request
14 requests currently being processed, 86 idle workers
..................R.............................................
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_RR\_\_R\_R\_\_RC\_RWC\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_..............
R\_WC\_\_R\_\_\_R\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_..............
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................