博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thrift不同server模型性能对比
阅读量:5016 次
发布时间:2019-06-12

本文共 1143 字,大约阅读时间需要 3 分钟。

        对于thrift的几种server模型在不同场景下的性能表现做了一个压测,结果仅供参考。

(一)环境

服务端机器:

24核CPU,E5-2430,2.5GHz,96GB内存

客户端机器:

24核CPU,E5-2430,2.5GHz,64GB内存

网络环境:

千兆网

thrift版本:

0.9.1

语言:

C++

服务端处理:

sleep 0.5ms,打印一条日志

(二)不同server特点

  • 多线程-threaded

每新到一个连接就新建一个线程处理,直到连接关闭线程销毁

线程数=当前连接数,线程数无限制

新建线程&销毁线程耗资源

  • 线程池-threadpool

主线程将新连接放入任务队列,工作线程从任务队列区连接处理,直到连接关闭线程再从任务队列取连接

线程数=线程池size

如果线程池设置的不够,可能导致上游等待

  • 非阻塞-nonblocking

使用libevent

(三)压测结果

对每种情况并发执行500000个请求

threadpool的size:2048

nonblocking中,work线程池size:256,IO线程个数:256

qps 线程池+长连接 线程池+短连接 多线程+长连接 多线程+短连接 非阻塞+长连接 非阻塞+短连接
4 5102 3571 5102 3521 5319 4032
8 10416 7352 10416 6944 10416 7352
16 20833 13157 20833 12500 19230 12500
32 35714 17857 35714 15625 31250 19230
64 35714 19230 35714 20833 35714 22727
128 33333 19230 35714 20833 35714 19230
256 27777 19230 35714 19230 41666 20833
512 27777 17857 27777 16129 41666 19230
1024 27777 17857 27777 16666 41666 19230
2048 27777 13888 27777 12820 50000  

对比图如下所示:

(四)结论

1)线程池threadpool和多线程threaded性能差别不大

2)在所有模型中,长连接比短连接性能高30%~50%,且性能最优时均在并发连接为32~256时

3)在并发达到512后,只用非阻塞+长连接的性能逐步提升,其他case的性能都会随着并发的增大而降低

综上,长连接时使用非阻塞方式性能最优;短连接时,各种模型差异不大。

 

转载于:https://www.cnblogs.com/taoxinrui/p/6388052.html

你可能感兴趣的文章
Linux集群及LVS简介
查看>>
简单几何(直线与圆的交点) ZOJ Collision 3728
查看>>
Codeforces Round #327 (Div. 2)
查看>>
如何解决Provisional headers are shown问题(转)
查看>>
实现简单的接口自动化测试平台
查看>>
EXCEL工作表合并
查看>>
ODAC(V9.5.15) 学习笔记(三)TOraSession(2)
查看>>
SQL中的replace函数
查看>>
java中的类型安全问题-Type safety: Unchecked cast from Object to ...
查看>>
如何解决最后一个尾注引用显示与致谢混为一谈的问题-下
查看>>
css文本样式text、字体样式font
查看>>
python判断图片是否损坏
查看>>
MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止
查看>>
KNN与SVM对比&SVM与逻辑回归的对比
查看>>
团队个人冲刺第三天
查看>>
2017-10-17 NOIP模拟赛2
查看>>
How to install ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr)
查看>>
JavaWeb学习——JSP基础
查看>>
黑寡妇黄飞鸿
查看>>
leetcode 217 Contains Duplicate 数组中是否有重复的数字
查看>>