-
Notifications
You must be signed in to change notification settings - Fork 382
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SRPC性能测试问题 #376
Comments
你好。我们的性能比首页上的数据要好,因为那是开源之前的数据了。你两台机器之间的ping值是多少呢?有没有其它的测试作对比? |
不过我看到你是一个单核心的虚机,7w多qps好像也不低了啊。或许你那边的CPU占用率统计不太准确? |
This comment was marked as duplicate.
This comment was marked as duplicate.
3 similar comments
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment was marked as duplicate.
你这个CPU占用率是40%不是20%。不过是有点低。 |
你发一下我们测试程序的完整输出吧。 |
谢谢老师,这么晚辛苦解答疑惑了。 1、2个环境之间ping 2、./client 10.200.63.56 8888 srpc pb 1024 32 query 1288657 times, 1287633 success, 0 error. 3、./server 8888 srpc 1 |
latency=15911us |
1、降低并发度的测试结果 query 1232240 times, 1231728 success, 0 error. ./client 10.200.63.56 8888 srpc pb 256 32 query 1223467 times, 1223212 success, 0 error. ./client 10.200.63.56 8888 srpc pb 128 32 query 1152636 times, 1152508 success, 0 error. ./client 10.200.63.56 8888 srpc pb 64 32 query 1241350 times, 1241286 success, 0 error. ./client 10.200.63.56 8888 srpc pb 32 32 query 1146939 times, 1146907 success, 0 error. ./client 10.200.63.56 8888 srpc pb 16 32 query 872128 times, 872112 success, 0 error. 2、拿brpc-1.5.0/example/asynchronous_echo_c++,模仿srpc benchmark代码修改出来,测试结果如下 query(总请求数)=2377344, success(成功应答数)=2377216, error(失败应答数)=0. I0410 23:18:32.203219 29033 client.cpp:238] BenchmarkClient is going to quit ./benchmark_client 10.200.63.56 8003 64 32 query(总请求数)=1758057, success(成功应答数)=1757993, error(失败应答数)=0. I0410 23:19:08.298106 29124 client.cpp:238] BenchmarkClient is going to quit ./benchmark_client 10.200.63.56 8003 32 32 query(总请求数)=1246619, success(成功应答数)=1246587, error(失败应答数)=0. I0410 23:19:40.808943 29237 client.cpp:238] BenchmarkClient is going to quit |
发送的数据大小是一样的吗?
…---原始邮件---
发件人: ***@***.***>
发送时间: 2024年4月10日(周三) 晚上11:40
收件人: ***@***.***>;
抄送: ***@***.******@***.***>;
主题: Re: [sogou/srpc] SRPC性能测试问题 (Issue #376)
1、降低并发度的测试结果
./client 10.200.63.56 8888 srpc pb 512 32
query 1232240 times, 1231728 success, 0 error.
total 20.024 seconds
qps=61538
latency=8316us
./client 10.200.63.56 8888 srpc pb 256 32
query 1223467 times, 1223212 success, 0 error.
total 20.013 seconds
qps=61134
latency=4186us
./client 10.200.63.56 8888 srpc pb 128 32
query 1152636 times, 1152508 success, 0 error.
total 20.006 seconds
qps=57615
latency=2220us
./client 10.200.63.56 8888 srpc pb 64 32
query 1241350 times, 1241286 success, 0 error.
total 20.003 seconds
qps=62058
latency=1030us
./client 10.200.63.56 8888 srpc pb 32 32
query 1146939 times, 1146907 success, 0 error.
total 20.002 seconds
qps=57341
latency=557us
./client 10.200.63.56 8888 srpc pb 16 32
query 872128 times, 872112 success, 0 error.
total 20.001 seconds
qps=43604
latency=366us
2、拿brpc-1.5.0/example/asynchronous_echo_c++,模仿srpc benchmark代码修改出来,测试结果如下
./benchmark_client 10.200.63.56 8003 128 32
query(总请求数)=2377344, success(成功应答数)=2377216, error(失败应答数)=0.
total(客户端延迟持续时间)=20.007 seconds
qps(客户端计算出的QPS)=118826
latency(总的延迟时间)=1075us
I0410 23:18:32.203219 29033 client.cpp:238] BenchmarkClient is going to quit
./benchmark_client 10.200.63.56 8003 64 32
query(总请求数)=1758057, success(成功应答数)=1757993, error(失败应答数)=0.
total(客户端延迟持续时间)=20.006 seconds
qps(客户端计算出的QPS)=87876
latency(总的延迟时间)=726us
I0410 23:19:08.298106 29124 client.cpp:238] BenchmarkClient is going to quit
./benchmark_client 10.200.63.56 8003 32 32
query(总请求数)=1246619, success(成功应答数)=1246587, error(失败应答数)=0.
total(客户端延迟持续时间)=20.006 seconds
qps(客户端计算出的QPS)=62312
latency(总的延迟时间)=512us
I0410 23:19:40.808943 29237 client.cpp:238] BenchmarkClient is going to quit
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
我们明天也重复一下你的实验,顺便对比一下最新代码的性能。 |
1、我使用的测试代码版本号是:workflow-v0.11.1、srpc-0.10.2、brpc-1.5.0。 辛苦老师们,看下是否是我的测试方法有问题。 |
|
@vinnie6seu 我们初步测试,跨机情况下srpc和brpc性能差不多,在我们的测试机上都是15w+ qps。我们这边一直没有复现你试出来的CPU跑不满的情况。 brpc默认使用的是单连接模式,所以看到的连接数非常少。我一会用连接池模式再试一下。 |
你好,我也试了下你的例子,你的brpc client用的是pipeline模式,和连接池模式场景不同,这是你测出brpc性能明显区别比较大的原因。应该把connection_type设置成pooled才是类似的压测,你可以改了之后试一下。 所以以下使用brpc pooled的模式,并且都用brpc协议,分别使用两个client对两个server进行压测(固定client比较可以去掉发送请求模式的差异)。分了两组大实验,每大组实验都是大小32,使用3种并发值发2种server。qps和latency正相关所以只记录qps。机器环境10核,client和server都部署到同一台机器上。
第一组实验
第二组实验
一些目前的结论:
一些目前还未能解释的:
|
非常感谢各位专家的辛苦支持。 1、我把benchmark_c++.tar.gz中connection_type设置成pooled,确实测下来brpc和srpc的性能差异不大了。因为没有研究过brpc的代码,所以模仿示例代码临时改了一个出来,connection_type没有用对,确实不够严谨。 |
我们这边猜测,你虚机的网卡pps是不是有限制,导致pooled模式下qps上不了。而brpc的单连接模式,可能需要的数据包少一些(相邻请求合并了),所以可以传输的请求量也大一些。 我们之前有做过实验,正常情况下brpc的单连接极限qps都是低于pooled的。 |
从packetin, packetout, insize, outsize几个值看,应该就是卡在了pps限制。你本机通过127.0.0.1来测试,应该没这个问题。 |
按照各位老师提到的pooled模式、网卡pps,简单测试了下。 1、跨机单srpc client→单srpc server在不同并发的QPS。 2、跨机单brpc client(pooled模式)→单brpc server在不同并发的QPS。 3、跨机单brpc client(pipeline模式)→单brpc server在不同并发的QPS。 |
嗯嗯,很明显的pipeline模式pps小,所以快。我相信是卡在这里了。 一般正常应用不太会有这种问题,pipeline相当于很多请求一次发送了。 workflow和srpc不支持pipeline模式。 |
感谢各位专家的支持。 1、咨询了系统运维,目前我用的虚机用的是virtio技术的虚拟网卡,pps就不太行。 |
你们可以根据实际业务模型测一下,一般正常业务也不需要那么大的pps。 |
1、测试机器:
(1)CPU 4-chip/1-core/4-processor Intel Xeon Processor (Skylake, IBRS)
(2)万兆带宽
2、测试案例:跨机单client→单server在不同并发的QPS
Client = 1
ClientThread = 64, 128, 256, 512, 1024
RequestSize = 32
Duration = 20s
Server = 1
ServerIOThread = 16
ServerHandlerThread = 16
3、测试代码:srpc-0.10.2/benchmark
4、测试QPS分别是:56140, 59491, 61938, 63486, 74785
5、疑问:客户端和服务端机器CPU繁忙度均在40%左右,网络带宽远没有吃满,加客户端并发QPS提升很不明显,和官方给的SRPC Benchmark结论差距很大,是因为测试机器的原因,还是代码有什么可以调整的地方。
The text was updated successfully, but these errors were encountered: