brpc icon indicating copy to clipboard operation
brpc copied to clipboard

brpc压测,主机CPU压不满

Open zzjshaok opened this issue 2 years ago • 6 comments

Describe the bug (描述bug) brpc/example/multi_threaded_echo_c++ 启动brpc服务端,启动brpc客户端进行压测,thread_num为200,在同一台主机上启动多个客户端,系统CPU始终占不完,top命令查看,最多只能占用到85%左右,还有10%+的idle. server进程的CPU占用在1700%左右。如果启动两个server,一个监听8002端口,一个监听8003端口,在同一台主机上分别启动多个客户端对这两个server进行压测,加大压力,系统CPU还是只能占到85%左右,此时两个server进程的CPU占用合起来在1700%左右。看起来像是rpc服务端受到什么系统资源的限制,压测时无法占满主机的CPU,调整client.cpp中的attachment_size和request_size大小还是如此,压测无法将主机CPU资源占满

To Reproduce (复现方法) 见 (描述bug)

Expected behavior (期望行为) 同一台主机,加大客户端压力,可以压满主机的CPU;或者启动不同的rpc服务端,分别进行压测,可以压满主机的CPU

Versions (各种版本) OS: Linux optane152 Compiler: gcc version 8.3.0 (GCC) brpc: 当前git上最新版本的代码 protobuf:

Additional context/screenshots (更多上下文/截图)

image

zzjshaok avatar Aug 07 '23 07:08 zzjshaok

有可能是网络栈瓶颈

很水 @.***

wanghenshui avatar Aug 07 '23 09:08 wanghenshui

客户端可以用多台主机试试,先排除是客户端侧的问题。另外server端的主机监控可以提供一下么,cpu和网络带宽

lorinlee avatar Aug 08 '23 16:08 lorinlee

客户端可以用多台主机试试,先排除是客户端侧的问题。另外server端的主机监控可以提供一下么,cpu和网络带宽 `7(EJS1LW~_4@TOZK{N{Y~V ${0LDBVVKW47T6%6BD@DC}D OGN}FEKL~0(G~EX(Y ~LQ$Y

同一台主机,启动一个服务端进程,8个客户端进程的server端的主机监控如上,此时client.cpp中thread_num=200,request_size=32,其它代码未调整。此时在另一台主机启动客户端进程, server端主机所在CPU占用没有明显变化,server进程的CPU进程占用也没有明显变化

zzjshaok avatar Aug 14 '23 10:08 zzjshaok

连接方式改成pooled试试

wwbmmm avatar Aug 16 '23 12:08 wwbmmm

连接方式改成pooled试试

连接方式改为pooled之后,压测时CPU占用增大,idle剩下5%左右,但是qps降低了5%左右

zzjshaok avatar Sep 13 '23 06:09 zzjshaok

这是正常的。因为连接方式为single模式下,在单连接上qps很高的情况下可以合并socket读写操作,性能会高一些。但是在真实场景下,client往往分布在多台机器,server会处理较多的连接,每个连接上qps较少,从性能的角度上看,pooled的性能更接近真实的场景。

wwbmmm avatar Sep 19 '23 12:09 wwbmmm