Top Menu

Linode 1024 VPS Apache+PHP-FPM+WordPress压力测试和参数优化

环境

  • Linode 1024 VPS Tokyo, JP
  • Debian 7.8 Wheezy 64-bit
  • Apache/2.2.22 (Debian)
  • PHP 5.4.36-0+deb7u3 (fpm-fcgi)
  • WordPress 4.1.1

压力测试

这里使用一个开源的压力测试工具:Siege ,可以通过 apt-get install siege 来进行安装,下面以SIEGE 2.70为例

开始进行压力测试,运行如下的命令

-c 参数指定同时访问的连接数, -r 参数指定重复多少次之前指定的同时访问连接,这里先以1个同时连接数访问10次来测试网页的最高可达到性能。

在执行命令前,可以另外再开一个SSH来运行 top 命令查看vps的实时状态

等待siege运行结束后,运行结果将显示如下

其中,主要查看 Response time 和 Failed transactions ,前者表示页面的平均响应时间,后者表示是否有响应因为超过了最大用户限制被服务器拒绝。 Longest transaction 和 Shortest transaction 可以作为参考,前者是最长响应时间,一般是由于后期访问量上去后CPU被平均分配导致服务器响应变长。后者是最短响应时间,一般是最初的几个访问,因为这时系统资源非常富裕,所以能占用最大的系统资源来处理连接响应。

参数优化

由于Wordpress是占用资源的大户,所以如果参数设置过大,很容易就在访问高峰的时候引起内存溢出而使mysql进程被系统强制结束,导致网站出现数据库连接错误而无法访问。

根据测试,一个处理wordpress页面的apache2或者php5-fpm进程将会占用70M左右的内存和占用大约50%的CPU,具体参数可以在运行单线程压力测试的时候通过 top 并Shift+m来查看,RES-SHR后就是实际占用的单进程内存量。

所以根据上面的参数,Linode 1024的VPS最多只能支持10个客户端同时访问Wordpress的页面,多于10个则会用到额外的swap交换区,如果swap设置为512M,最多支持到12个客户端同时访问,再多就会导致内存溢出。

如果是使用apache默认的 mpm_prefork_module 模块的,最大客户端在 /etc/apache2/apache2.conf 中的 MaxClients 行设置。

如果是使用FastCGI+php5-fpm的,在 /etc/php5/fpm/pool.d/www.conf 的 pm.max_children 行进行设置

在完成最大客户端的设置后,通过运行压力测试来验证参数设置的可行性,将 -c 参数设置的比最大客户端大一点,然后运行命令

通过 top 查看实时内存占用情况,保证剩余的swap大于100M,之后如果swap还有富裕,则每大出100M可以增加一个最大客户端.

, , , ,

There are no comments yet

  • Hello, guest

Powered by WordPress. Designed by WooThemes