webman 进程busy

MarkGo

一个供第三方实时查询的接口,
大概qps是30左右,
查看status时发现线程偶尔出现busy状态,但持续不超3秒,所以用手册中关于busy的排查方法无法定位到问题。
请问有没有什么更加有效的手段进行排查?

CPU和内存都在10%以下;

1439 2 0
2个回答

Tinywan

正常

  • MarkGo 2022-03-28

    原因之前看了很多帖子,其实能肯定就是非webman的问题,主要是想看看有什么手段定位具体产生原因,业务日志1天就几十MB了,通过业务日志定位相对难,而且这个是偶现问题,即如果我用相同条件去发起请求,不一定就busy,但10次有2~3次会出现BUSY。就如下面回复到的,猜测是带宽问题,但还是想确认下。

walkor

短暂busy没有问题,不用管。busy的意思是进程在处理慢业务,本身就是慢业务的不用管。

  • MarkGo 2022-03-28

    好的谢谢,主要是想找出“慢业务”,另外就是想确认下,如果发送不及时会否导致产生busy?因实际上那台服务器上跑了两个类似这样的服务(两个单独的webman),QPS合计估计50~60,但是服务器带宽只有5M,平均每次请求返回包大小10KB,所以猜测是否因为出口带宽打满,导致出现进程BUSY,这个可能性会有吗?

  • walkor 2022-03-28

    如果是每秒60个10KB的包,带宽基本上就满了

  • nitron 2022-03-28

    想找出慢业务,最直接的方式是记录每个请求的实行时间,看status没用

  • MarkGo 2022-03-29

    量过大,实际情况很难筛选出过慢的请求,但是这一步其实也做了,但是就如上面回复的,通过相同参数重发请求也无法100%复现这个问题,想到毕竟还有其他因素的存在,例如busy时数据库是否繁忙,内网是否有波动等客观因素,但结合已有信息猜测是带宽问题,只是无法进一步确定

  • nitron 2022-03-29

    BaseController的beforeAction记录起始时间,afterAction记录结束时间,所有Controller都会自动调用

年代过于久远,无法发表回答
🔝