这是一个创建于 1109 天前的主题,其中的信息可能已经有所发展或是发生改变。
不知道各位大神有没有遇到过这个问题。
用 wrk 或者 ab 给 NIO 做压测,第一轮没什么问题,但是如果第一轮结束后 立刻进行第二轮,第三轮,第四轮, 很快就会出现卡死的情况。 尤其是 wrk,测试结果一轮比一轮惨,惨到极致后又恢复到第一轮的水准。 ab 倒是挺稳的,就是连续多轮后会卡死
已经排查过自己的程序了,卡死期间: 队列 0 积压,CPU 占用也为 0.
在 selector 的循环中 试过打印一段文字,当卡死的情况发生时,这段文字也不打印了,所以初步怀疑是 selector 卡死了。
出现的原因 也大概在两个点:
1. 我的电脑太烂了,可能承受不了这么多的连接频繁访问。
2. 读 channel 的时候卡死了,目前我是读到 read 返回 0 为止,理论上不会卡的。而且如果出现空转了,cpu 不应该为 0.
一头雾水,求各位大神给个排查的思路。
以下是测试的命令
wrk: ./wrk -c 100 -t 3 -d 3s http://127.0.0.1:8080/json
ab: ab -c 100 -n 1000 http://127.0.0.1:8080/json
3 条回复 • 2021-05-09 10:57:37 +08:00
|
|
1
mightofcode 2021-04-29 21:24:56 +08:00 1
多半代码写的太烂了 贴出来,让大家批判下
|
|
|
3
tenghuanhe 2021-05-09 10:57:37 +08:00 via Android
检查下 TCP 连接,看看 TIME_WAIT 多不多
|