1 votes

Configuration recommandée pour apache/mysql

J'ai un serveur dédié avec 1 Go de mémoire qui sert à quelques sites wordpress, mais lors des tests (ab: apache benmark, avec -n 100 -c 10) sur certains de ces wordpress, le serveur commence à faire du swap et ensuite c'est comme s'il mourait...

Alors, ma question est, comment régler apache et mysql dans ce but? J'utilise mpm_worker dans apache pour php5

Des conseils sur les fichiers apache.conf et my.cnf?

ÉDIT : J'essayais de collecter plus de données à publier ici, mais comme mon serveur continue de mourir en faisant du swap, je vais publier ce que j'ai maintenant :

apache2.conf

    StartServers          2
    MinSpareThreads      20
    MaxSpareThreads      50
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients           75
    MaxRequestsPerChild   0

my.cnf (dans [mysqld])

key_buffer_size         = 32M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
join_buffer_size        = 128K
myisam-recover          = BACKUP
max_connections         = 120
table_cache             = 128
max_heap_table_size     = 32M
tmp_table_size          = 32M
table_open_cache        = 128
query_cache_limit       = 1M
query_cache_size        = 16M
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time         = 2
log_queries_not_using_indexes = 1
expire_logs_days        = 10
max_binlog_size         = 100M

ps aux --sort -pcpu,-rss | head -n 30

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
www-data 11558 13.0  1.9 173280 20112 ?        R    13:59   0:00 /usr/lib/cgi-bin/php5
www-data 11529 14.0  3.6 190352 37192 ?        R    13:59   0:00 /usr/lib/cgi-bin/php5
www-data 11528 14.0  3.7 190784 37628 ?        R    13:59   0:00 /usr/lib/cgi-bin/php5
www-data 11526 16.5  3.9 192836 39580 ?        R    13:59   0:00 /usr/lib/cgi-bin/php5
svn       1909  4.2  0.3  91780  3628 ?        S    12:49   3:01 /usr/bin/svnserve --daemon --foreground -T -r /home/svn
mysql     7780  1.1  6.4 263812 64816 pts/1    Sl   13:43   0:11 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
root       856  1.1  0.0      0     0 ?        D    12:48   0:49 [md3_resync]
root       325  0.5  0.0      0     0 ?        S    12:48   0:22 [md3_raid1]
www-data  1731  0.3  1.1 449516 11232 ?        Sl   12:49   0:13 /usr/sbin/apache2 -k start
www-data  1732  0.2  1.0 383548 10408 ?        Sl   12:49   0:12 /usr/sbin/apache2 -k start
bind      1244  0.0  1.0 125576 11096 ?        Ssl  12:48   0:02 /usr/sbin/named -u bind
root      1235  0.0  0.0   3864   300 ?        SNs  12:48   0:02 /usr/sbin/powernowd -q
postgres  1420  0.0  0.6 105560  6764 ?        S    12:48   0:01 /usr/lib/postgresql/8.4/bin/postgres -D /var/lib/postgresql/8.4/main -c config_file=/etc/postgresql/8.4/main/postgresql.conf
danikaze  5068  0.0  0.4  24512  4112 pts/1    Ss   13:17   0:00 -bash
root         1  0.0  0.0   8356   788 ?        Ss   12:48   0:00 init [2]
root      1143  0.0  0.2  41148  2636 ?        Sl   12:48   0:00 /usr/sbin/monit -c /etc/monit/monitrc -s /var/lib/monit/monit.state
danikaze  2778  0.0  0.4  24632  4216 pts/0    Ss   12:49   0:00 -bash
postgres  1535  0.0  0.2 105668  2860 ?        Ss   12:49   0:00 postgres: writer process
root        56  0.0  0.0      0     0 ?        S    12:48   0:00 [kswapd0]
danikaze  2777  0.0  0.1  70496  1816 ?        S    12:49   0:00 sshd: danikaze@pts/0
postgres  1536  0.0  0.1 105560  1584 ?        Ss   12:49   0:00 postgres: wal writer process
root      2529  0.0  0.0      0     0 ?        S    12:49   0:00 [flush-253:2]
root      1627  0.0  0.5  90628  5360 ?        Ss   12:49   0:00 /usr/sbin/apache2 -k start
root      1689  0.0  0.0  16780   804 ?        S    12:49   0:00 /usr/sbin/rotatelogs -l /home/***.com.log.%Y-%m-%d 86400
postgres  1538  0.0  0.1  77108  1516 ?        Ss   12:49   0:00 postgres: stats collector process
root       968  0.0  0.0      0     0 ?        S    12:48   0:00 [flush-253:1]
root      7639  0.0  0.1  13940  1484 pts/1    S    13:43   0:00 /bin/sh/usr/bin/mysqld_safe
ntp       1237  0.0  0.2  38340  2148 ?        Ss   12:48   0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 105:106

free -m

             total       used       free     shared    buffers     cached
Mem:           986        769        216          0         37        532
-/+ buffers/cache:        199        787
Swap:         3827          0       3827

Je vais essayer de récupérer des données à nouveau lorsque le serveur fera du swap, mais je ne connais pas la raison de cela, même si je stresse le serveur avec ab, la seule chose que j'obtiens est l'utilisation du CPU et de la mémoire mais pas de swap maintenant j'ai installé un cache pour wordpress... et j'ai toujours le serveur qui fait du swap et qui plante à certains moments :-/

Autre chose : le serveur utilise essentiellement apache + mysql, même s'il y a aussi svnserver, proftpd et pgsql, ils sont presque jamais utilisés.

0 votes

Veuillez fournir plus d'informations telles que les parties pertinentes de la configuration d'Apache et la sortie de la commande top ou similaire

0 votes

Fait ! Maintenant, vous avez des infos de configuration ainsi que des sorties ps et free

0voto

daemonofchaos Points 1181

Comme vous utilisez mpm_worker, je recommande vivement d'utiliser php5-fpm plutôt que mod_php.

De plus, 1 Go de RAM n'est pas beaucoup pour faire fonctionner un site WordPress même légèrement occupé. Vous devriez certainement augmenter votre RAM si possible, car cela vous offrira les meilleures performances. Avec plus de RAM, vous pouvez vous assurer que vos index MySQL sont mis en cache, utiliser APC, etc.

Exécuter le script MySQL Tuning Primer vous aidera également à définir une bonne configuration de base pour votre MySQL afin de vous assurer que vous ne gaspillez pas de précieuses ressources.

Considérez également définir vm.swappiness = 10 ou 20 dans votre /etc/sysctl.conf pour éviter les premiers échanges.

0 votes

Php5-fpm semble intéressant. De toute façon, je veux savoir comment régler le mpm_worker (car je ne veux pas installer d'autres choses pour le moment). Je sais que 1 Go de RAM n'est pas beaucoup, mais c'est ce que je peux me permettre pour le moment. De toute façon, j'ai installé des plugins de cache donc l'utilisation de php/mysql devrait être beaucoup moins importante à partir de maintenant. Au fait, j'ai exécuté le script MySQL Tuning Primer, mais comme mon serveur est en train de s'effondrer, je n'avais pas MySQL qui fonctionnait pendant 48h. Je vais essayer de poster les données dès que possible.

0 votes

Sachez simplement que tout cache (par exemple, APC) que vous utilisez réduit également la quantité de RAM disponible. Vous pourriez potentiellement réduire la quantité de mémoire nécessaire à Apache et PHP en désactivant des modules dont vous n'avez pas réellement besoin. Naturellement, je ne peux pas vous conseiller sur ce que vous pourriez désactiver car je ne connais pas votre environnement, mais c'est là qu'il faudrait regarder en premier. Les éléments les plus importants concernant l'optimisation de MySQL sont vos paramètres key_buffer et innodb_buffers. Vous pourriez également éviter le swapping en réduisant le MaxClients d'Apache à une valeur qui n'épuiserait pas votre RAM.

0 votes

Ne vous inquiétez pas. Le plugin de cache Wordpress est basé sur des fichiers HTML statiques et mod_rewrite. Des conseils sur key_buffer et les autres valeurs?

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