`

最佳线程数和QPS以及RT

 
阅读更多

最近在关注性能的事情,所以对于多线程程序中,如何设置最佳的线程数,找了一些文章。虽然有公式可以套用,

但是,其实最佳的话只是相对的,了解了过程之后,处理线程数的设置就会游刃有余了。

名字解释:

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 

分享到:
评论

相关推荐

    服务器端性能优化-提升QPS:RT1

    - 通过逐步增加线程数进行压力测试,观察QPS和RT的变化。 - 使用公式计算,结合实际测试结果微调。 9. **资源竞争**: - 当线程数量超过最佳值时,资源竞争加剧,响应时间增长,QPS不再提升甚至下降。 总结,...

    web性能调优1

    【Web性能调优1】 ...性能优化的目标是找到系统的"最佳线程数",这需要通过实际压测来确定,确保所有资源协调工作在最优状态。同时,识别并解决CPU、内存、磁盘I/O等各个层面的瓶颈是提升Web应用性能的关键。

    大型网站性能优化实战从前端网络CDN到后端大促的全链路性能优化 带书签完整版

    - **4.1.2 单线程QPS**:QPS(Queries Per Second)是指每秒处理的查询数量。在单线程环境下,计算最大QPS有助于评估服务器的极限性能。 - **4.1.3 最佳线程数**:通过调整线程数来找到最优配置,既能充分利用服务器...

    sentinel-dashboard-1.7.1.zip

    - **流量控制**:Sentinel 提供多种流量控制策略,如线程数限制、RT(平均响应时间)限制、QPS(每秒请求数)限制等,以防止系统过载。 - **熔断降级**:当系统出现故障或者不稳定时,Sentinel 可以自动触发熔断...

    使用Sentinel进行微服务流量控制.pptx

    Sentinel 的实现涉及到多个指标的实时监控,如响应时间(RT)、异常比例、QPS(每秒请求数)和线程数等。通过这些指标,Sentinel 实现了动态的流量控制和熔断降级策略。例如,当 RT 超过设定阈值,或者 QPS 和线程...

    高级篇.pdf

    进程间通信、服务器性能指标如load、CPU利用率、内存使用情况、QPS和RT是监控系统健康的关键。理解分段和分页、虚拟内存管理以及换页算法对于优化系统性能至关重要。数据库知识,特别是MySQL,包括执行引擎、执行...

    Demo.AspNetCore2.EF6-master_DEMO_sentinel_

    3. **Sentinel**: Sentinel的核心功能包括流量控制(如基于RT(响应时间)、线程数、QPS(每秒查询率)的限流)、熔断降级、系统保护和健康检查。在.NET项目中集成Sentinel,开发者可以实现微服务架构下的服务保护,...

    JMeter操作手册大全.docx

    本文档从性能测试的基本概念出发,详细介绍了JMeter的使用方法,包括响应时间、系统处理能力、并发用户数、错误率、CPU、内存、磁盘和网络吞吐量等关键性能指标,并提供了相关标准和最佳实践。 1. **性能测试基本...

    Sentinel讲解,欢迎下载

    - **ClusterBuilderSlot**:负责存储资源的统计信息及调用者信息,比如资源的RT(响应时间)、QPS(每秒查询率)和线程数等。这些信息可以作为多维度限流和降级的依据。 - **StatisticSlot**:用于记录和统计运行...

    sentinel-dashboard.zip

    Sentinel 提供了丰富的流量控制策略,如基于 RT(响应时间)、线程数、QPS(每秒请求数)等,以及多种熔断降级策略,能够有效地保护系统免受异常流量冲击,保持系统的稳定运行。 Sentinel Dashboard 是 Sentinel 的...

    淘宝应用架构升级——反应式架构的探索与实践(27页).pdf

    在【架构升级的效果】部分,文档指出这次升级带来了显著的性能提升,例如“我的淘宝”应用的响应时间(RT)降低了40%以上,每秒请求数(QPS)提升了30%,而“猜你喜欢”功能的QPS更是提高了90%以上,负载(LOAD)...

    sentinel课件_sentinel_

    通过设置系统的最大负载(如 RT、线程数等)来触发流控或降级,确保系统在高负载情况下仍能正常运行。比如,我们可以设置平均响应时间超过某个阈值后启动降级,或者当系统利用率超过某个百分比时启动流量控制。 五...

    Sentinel.rar

    在"push模式"下,实例化监控数据意味着系统能够动态地收集并存储服务运行过程中的各种监控指标,如QPS(每秒请求数)、RT(响应时间)、线程数等,这些数据对于理解和优化系统的性能至关重要。通过集成MySQL,我们...

    Sentinel 原理-调用链1

    2. ClusterBuilderSlot 用于收集并存储资源的统计信息,如响应时间(RT)、每秒请求数(QPS)、线程数等,这些信息是进行多维度限流和降级决策的重要依据。 3. StatisticsSlot 则专注于记录和统计运行时信息,帮助...

    sentinel.zip

    7. **监控与统计**:Sentinel 提供丰富的监控指标,如 QPS(每秒请求数)、RT(平均响应时间)、线程数等,帮助开发者了解系统的运行状态。 8. **适配器支持**:Sentinel 支持多种框架和环境,如 Spring Cloud、...

    sentinel-dashboard-1.7.1

    通过 Sentinel Dashboard,用户可以实时查看应用的 QPS(每秒查询率)、RT(响应时间)、线程数等关键指标,有助于快速发现和定位问题。 4. **流量控制** - **限流**:Sentinel 提供了多种限流策略,如固定窗口、...

    sentinel-dashboard-1.8.0.jar

    - **监控分析**:通过 Dashboard 的监控页面,可以查看应用的实时 QPS、RT、线程数等关键指标,以及异常情况。 5. **应用场景**: - **限流**:防止服务因高并发请求而崩溃,保护系统资源不被过度消耗。 - **...

    java sentinel-dashboard-1.8.0 控制面板(非源码)

    1. **流量控制**:Sentinel 提供了多种流量控制策略,如最大请求量控制(RT)、并发线程控制(QPS)和令牌桶算法等。这些策略可以帮助防止服务雪崩,确保系统的稳定性和可用性。通过 Dashboard,用户可以直观地设置...

Global site tag (gtag.js) - Google Analytics