环境
- 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为例
开始进行压力测试,运行如下的命令
1 |
siege -c 1 -r 10 http://blog.minirplus.com |
-c 参数指定同时访问的连接数, -r 参数指定重复多少次之前指定的同时访问连接,这里先以1个同时连接数访问10次来测试网页的最高可达到性能。
在执行命令前,可以另外再开一个SSH来运行 top 命令查看vps的实时状态
等待siege运行结束后,运行结果将显示如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
root@vps:~# siege -c 1 -r 10 http://blog.minirplus.com ** SIEGE 2.70 ** Preparing 1 concurrent users for battle. The server is now under siege.. done. Transactions: 10 hits Availability: 100.00 % Elapsed time: 22.52 secs Data transferred: 0.15 MB Response time: 1.65 secs Transaction rate: 0.44 trans/sec Throughput: 0.01 MB/sec Concurrency: 0.73 Successful transactions: 10 Failed transactions: 0 Longest transaction: 4.39 Shortest transaction: 1.03 FILE: /var/log/siege.log You can disable this annoying message by editing the .siegerc file in your home directory; change the directive 'show-logfile' to false. |
其中,主要查看 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 参数设置的比最大客户端大一点,然后运行命令
1 |
siege -c 15 -r 10 http://blog.minirplus.com |
通过 top 查看实时内存占用情况,保证剩余的swap大于100M,之后如果swap还有富裕,则每大出100M可以增加一个最大客户端.
There are no comments yet