This topic created in 3866 days ago, the information mentioned may be changed or developed.
在做服务器压测,环境是 nginx , php5.2
硬件环境是 4 核 2.7ghz 和 8g 内存虚拟机
php 开 512 进程, nginx 4 worker
用 jmeter 压测 500 线程组,持续压 2 分钟,前 30 秒大概能维持 800QPS ,在请求总数达到 27000(大概 30 秒)后开始卡住, 502 开始出现,卡住 1 分钟后开始恢复响应能力。
这样的状况会是哪里出问题了呢?
9 replies • 2015-11-21 21:11:23 +08:00
 |
|
1
RemRain Nov 21, 2015
进程开太多,平均每核处理 128 个进程, cpu 时间全浪费在进程调度上了。调到 16 或者 32 试试
|
 |
|
2
msg7086 Nov 21, 2015
512 进程……改成 32 试试……? 800qps 挺吓人了(
|
 |
|
3
dndx Nov 21, 2015
开这么多进程 CPU 时间全浪费在 context switching 上面了。建议降低 PHP 进程数。
|
 |
|
5
ryd994 Nov 21, 2015 via Android
你就 4 个核,跑 512 进程有什么用? 一般和核心数一样或者+1 ,如果有比较多的 IO ,那再另外讨论,以刚好用满 CPU 为度。 8g/512 一个进程只能用 16M 内存,呵呵呵 后面卡估计是卡死在 swap 上了
|
 |
|
6
vietor Nov 21, 2015 via Android
cache 刷新间隔
|
 |
|
7
Tianpu Nov 21, 2015 via iPhone
php 多开几个进程池,静态进程,比如 64*8 这样子分配。可能 ulimit 也要设置下。
前 30 秒还有进程分配,然后 php 卡死了,飞快的返回 502 。
还有,你测试脚本是啥?
|
 |
|
9
kran Nov 21, 2015
现在的问题不是上面那个了,我把脚本换成 sleep(0.5); 现在用很小的量压,也会有 502 错误发生,不会卡住了。 php5.5 不会有错误, 5.2 有错误。 @ vietor 请问这个 cache 指的是哪个? @ Tianpu 脚本是 sleep(0.5); @ dndx 很小的量压也有错。 CPU 还不满
|