当前位置: 首页 > 知识库问答 >
问题:

怎么能判断tomcat线程池配置的太小了?

段干浩荡
2023-09-22

在高并发场景下,有可能带来性能下降,请求时长增加
但是怎么能判断出来,瓶颈仅仅是服务节点 tomcat的线程池太小
而不是数据库读写瓶颈、数据库集群数量少、网络带宽等问题?

共有1个答案

晏晨朗
2023-09-22

个人猜测:
根据公式:

线程数   =   CPU数量  *  CPU利用率  *  (1 + IO操作时间/CPU操作时间)            (固定的)              (压测同一业务,比例也可认为是固定的)

所以为了保证等式成立,如果tomcat线程数是偏小的,则会导致等式右侧 "CPU利用率" 会随之减小

现象:
使用top命令,可以看到即使是在压测时,每个cpu的使用率也都是偏低的。

解决办法:
判断高并发时,cpu利用率达到多高才算合理(比如90%),从而调整合理的线程池大小。
然后再进行重新压测,进行微调

 类似资料:
  • 数据库连接池在connection达到配置的上限后,会进入一段等待时间 如果一段时间后,仍没有办法获取到连接,就会抛出异常。 现在,想监控一下是不是存在因为连接池太小,导致线程大量排队等待连接的情况。 怎么能发现这些线程?或者怎么监控到这些线程在申请连接具体的等待时间?

  • 我创建了多个camelContext,并希望每个camelContext使用自己的自定义线程池。但是,日志显示我所有的camelContext都使用同一个线程池。我错过了什么? 主要背景 “loadJsontoCreateRoute”方法将读取三个json文件,然后创建三条连接路径 终点“file://xxx1/out“到endpoint”直接vm:out。测试“ 终点“file://xxx2/o

  • 代码如下: 功能点是localStorage存的值 赋值到 row.processName 这样写是错的,请问大佬们,没有被修改过的值保留row.processName,修改了后走myName的值 比如修改这个

  • 本文向大家介绍请问C++怎么实现线程池?相关面试题,主要包含被问及请问C++怎么实现线程池?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1.设置一个生产者消费者队列,作为临界资源  

  • 我不确定的是,在这种情况下,会创建多少个线程?我在一台2核心的机器上运行,所以每核心24个线程,最多48个线程? 当并行度因子设置为4.0时,可以并行运行的线程数将是8。那么,设置最小值和最大值(我的例子是24和48)的需要是什么?

  • 本文向大家介绍html5怎么判断app是否安装?相关面试题,主要包含被问及html5怎么判断app是否安装?时的应答技巧和注意事项,需要的朋友参考一下 例如,打开微信 是用了微信自己的 wechat://xxxx 这样类似http/https的协议,来打开。支付宝是alipay,其他的应用都有不同的自己的协议头,通过这样的链接来唤醒APP。如果打不开就能判断是否安装该APP