我正在尝试负载测试LAMP 应用程序我的团队使用 jmeter 开发并部署在 AWS ubuntu 14.04 上。我们正在使用AWS CDN提供静态文件,mysql和阿帕奇位于同一主机上。
当只有一个用户执行操作时,响应时间是正常的,根据页面不同,在 2 到 5 秒之间。
我的目标是让它在同一时间做出反应100连接的用户同时做某事。
我用了一个AWS T2.MEDIUM实例 (2 个 vCPU + 4GB RAM)并开始mod_php和预分叉模块,但我一点也不满意。服务器速度慢得离谱。响应时间+20秒和高 CPU和RAM 使用情况。
我尝试过php-fpm和事件模块在查阅了一些 SO 资源之后。内存现在使用起来更好了,但是中央处理器由使用php-fpm进程太高。(我尝试了静态/按需/动态,但没有结果)
这是我的配置,使用动态配置和事件模块来提供服务100 个并发用户在AWS T2.Medium实例 (2 个 vCPU + 4GB RAM) -PHP-FPMCPU 使用率非常高:
top - 17:21:41 up 1:58, 1 user, load average: 5.52, 3.83, 1.86
Tasks: 128 total, 6 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 97.0 us, 2.7 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.2 si, 0.2 st
KiB Mem: 4046848 total, 2170544 used, 1876304 free, 104788 buffers
KiB Swap: 0 total, 0 used, 0 free. 1107856 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14285 www-data 20 0 603996 192688 25096 R 52.3 4.8 2:19.28 php5-fpm
14300 www-data 20 0 814276 402980 29224 R 36.6 10.0 2:25.77 php5-fpm
14318 www-data 20 0 448444 40480 25800 R 34.3 1.0 2:03.65 php5-fpm
14384 www-data 20 0 455808 48472 25860 R 34.3 1.2 2:06.95 php5-fpm
15022 www-data 20 0 447488 38748 24644 R 31.6 1.0 1:25.14 php5-fpm
16309 perf 20 0 321248 39296 9632 S 5.0 1.0 0:00.15 php5
1106 mysql 20 0 1129640 148232 7548 S 1.7 3.7 0:38.17 mysqld
/etc/php5/fpm/php-fpm.conf
[global]
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
include=/etc/php5/fpm/pool.d/*.conf
/etc/php5/fpm/pool.d/www.conf
[www]
pm.status_path = /status
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 100
pm.start_servers = 5
pm.min_spare_servers = 4
pm.max_spare_servers = 6
pm.max_requests =0
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = yes
chdir = /
/etc/apache2/mods-enabled/mpm_event.conf
<IfModule mpm_event_module>
ServerLimit 10
StartServers 5
MinSpareThreads 5
MaxSpareThreads 15
ThreadLimit 50
ThreadsPerChild 10
MaxRequestWorkers 100
MaxConnectionsPerChild 0
</IfModule>
我感觉我已经很接近了,但我做不到。我会用你要求的任何文件、日志或输出来更新我的问题。拜托,这非常关键,我会非常感激你的。非常感谢
==================================== 更新:1
查看 php 错误日志,我可以看到大量 PHP 致命错误:
call to a member function xxxxx() on a non-object
PHP 致命错误会导致 CPU 使用率过高吗?(可能被多个进程写入会消耗更多的 CPU 周期)