apache/mysql 的推荐设置

apache/mysql 的推荐设置

我有一台配备 1GB 内存的专用服务器,用于服务一些 wordpress 网站,但是在对一些 wordpress 网站进行测试(ab:apache benmark,使用 -n 100 -c 10)时,服务器开始交换,然后就像死机一样......

因此,我的问题是,如何为此目的调整 apache 和 mysql?我在 apache 中使用 php5 中的 mpm_worker

关于调整 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 | 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

免费-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。

此外,1GB 的 RAM 不足以运行一个稍微繁忙的 WordPress 网站。如果可能,您当然应该增加 RAM,因为这将提供最佳的性能提升。有了更多的 RAM,您可以确保您的 MySQL 索引得到缓存,使用 APC 等。

运行MySQL 调优入门脚本还将帮助您的 MySQL 设置良好的基线配置,以确保您不会浪费宝贵的资源。

还可以考虑在 /etc/sysctl.conf 中设置 vm.swappiness = 10 或 20,以防止发生早期交换。

相关内容