Рекомендуемая настройка для apache/mysql

У меня есть выделенный сервер с 1 ГБ памяти для обслуживания некоторых сайтов WordPress, но это происходит при выполнении тестов (ab: apache benmark, с -n 100 -c 10) для некоторых из этих WordPress, сервер начинает меняться, а затем это похоже на смерть...

Итак, мой вопрос, как настроить Apache и MySQL для этой цели? Я использую mpm_worker в apache для php5

Какой-нибудь совет по настройке файлов apache.conf и my.cnf?

РЕДАКТИРОВАТЬ: Я пытался собрать больше данных, чтобы опубликовать здесь, но так как мой сервер продолжает умирать при замене, я буду публиковать все, что у меня есть сейчас:

apache2.conf

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      20
    MaxSpareThreads      50
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients           75
    MaxRequestsPerChild   0
</IfModule>

my.cnf (в пределах [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 | голова -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

бесплатно -m

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

Я попытаюсь получить данные снова, когда сервер меняет местами, но я не знаю причину этого, даже если я подчеркиваю сервер с ab, единственное, что я получаю, это использование CPU и MEM, но без подкачки, сейчас я установил кеш для WordPress... и все же я получаю перестановку и зависание сервера в некоторые моменты:-/

Другое дело: сервер в основном использует apache + mysql, даже если есть также svnserver, proftpd и pgsql, они почти не используются.

1 ответ

Поскольку вы используете mpm_worker, я настоятельно рекомендую использовать php5-fpm вместо mod_php.

Кроме того, 1 ГБ - это не много ОЗУ для запуска даже слегка загруженного сайта WordPress. Вам, безусловно, следует увеличить объем оперативной памяти, если это возможно, поскольку это обеспечит наилучшее увеличение производительности. С большим объемом оперативной памяти вы можете обеспечить кэширование ваших индексов MySQL, использовать APC и т. Д.

Запуск сценария MySQL Tuning Primer также поможет установить хорошую базовую конфигурацию для MySQL, чтобы гарантировать, что вы не тратите впустую драгоценные ресурсы.

Также рассмотрите возможность установки vm.swappiness = 10 или 20 в вашем /etc/sysctl.conf, чтобы предотвратить раннюю замену.

Другие вопросы по тегам