最近在关注性能的事情,所以对于多线程程序中,如何设置最佳的线程数,找了一些文章。虽然有公式可以套用,
但是,其实最佳的话只是相对的,了解了过程之后,处理线程数的设置就会游刃有余了。
名字解释:
1、QPS:系统每秒处理的请求数(query per second)
2、RT:系统的响应时间,一个请求的响应时间,也可以是一段时间的平均值
3、最佳线程数量:刚好消耗完服务器瓶颈资源的临界线程数
QPS和RT的关系:
对于单线程:QPS=1000/RT
对于多线程:QPS=1000*线程数量/RT
性能的两个点:
吞吐量和延迟,其实通俗的解释就是QPS和RT(我的理解),虽然有上面的公式,但是两者的关系并不是完全线性的。
至于为啥?原因很多,系统表现远远比我们想想的要复杂。
最佳线程数有公式吗?
答案是肯定的。
服务器端最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间) * cpu数量 (CPU瓶颈类型)
在达到最佳线程数的时候,线程数增加,则QPS不变,而响应时间变长,线程数量继续增加,则QPS下降(上下文切换耗时)。
最佳线程数是动态的,在不同的状态下会进行变化。
瓶颈资源可以是CPU、内存、数据库连接池、锁资源、IO等。
超过最佳线程数,会导致资源竞争加剧,同时响应时间也会增加。
如何获取最佳线程数呢?
有了公式,其实并没有实质性的解决问题。
1、逐步压测,不断的调整线程数来观察系统的负载,这个最土,但是最实用
2、如果确切的知道瓶颈资源的使用情况,则可以直接使用公式;
3、单用户压测,查看CPU的使用情况,然后基于公式得出一个值,上下微调;
http://www.ibm.com/developerworks/library/j-jtp0730/index.html
http://www.thejoyofcode.com/tuning_the_threadpool.aspx
http://www.infoq.com/articles/Java-Thread-Pool-Performance-Tuning
相关推荐
用于WEB服务器端开发,介绍如何有效提升QPS、RT
例子简介:通过CPU和IO的测试模型,观察CPU和IO时间消耗变化,而带来的QPS和RT的变化1、准备资源3台linux服务器(保证服务器的资源不会互相干扰,服
在做db基准测试的时候,qps,tps 是衡量数据库性能的关键指标。...在对数据库的性能监控上经常会提到QPS和TPS这两个名词,下面就分别简单的分享一下关于MySQL数据库中的QPS和TPS的意义和计算方法。 1 QPS:
批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。 2.数据批量导出。 3任务数据异步执行。 4.多线程请求第三方接口限流。
阶梯加压目标线程增加,cpu、qps不变的分析.pdf
主要介绍了吞吐量(TPS)、QPS、并发数、响应时间(RT)概念,在开发中需要先搞懂这些基础知识,才能更好运用,需要的朋友可以参考下
MYSQL QPS TPS全揭秘,很多DBA都不知道的这个概念,呵呵
awk测试从nginx查询qps的测试日志
线程池的多线程并发控制技术研究.caj 线程池的多线程并发控制技术研究.caj 线程池的多线程并发控制技术研究.caj
基于ELK的nginx-qps监控解决方案.docx
给DBA与运维工程师的QPS,PV和需要部署机器计算
sysbench基准测试并数据统计--TPS、QPS、TPMC及响应时间,让你第一时间了解数据库的运行情况。
主要介绍了TPS(吞吐量)、QPS(每秒查询率)、并发数、RT(响应时间)是什么意思,需要的朋友可以参考下
王亚雷-Twitter 千万 QPS 分布式系统的架构设计和高效运维
QPS 高性能 qps 计数器安装$ npm install qps用法 var QPSCounter = require ( 'qps' ) ;var counter = new QPSCounter ( ) ;// plus onecounter . plus ( ) ;// current qpscounter . get ( ) ;应用程序接口...
QPS、PV和需要部署机器数量计算公式
QPS289Setup 2.04
对qps以及接口的平均耗时进行统计 特点 轻量: 共219KB(代码量约300行), 无需安装,加压即可使用 低侵入: 基于日志文件进行统计,无需修改原程序 使用说明 ...
基于cms的高并发低延时的gc参数,生产实战参数,各位看官烦请点赞