调整服务器线程池

时间:2018-03-24 23:48:30

标签: multithreading server tomcat8

我只是玩线程,看看他们消耗了多少CPU。我检查过两种情况。

  • 在第一个场景中,我创建了四个线程并使用无限循环启动它们。很快这些线程消耗了我的所有4个CPU内核。检查任务管理器中的性能监视器后,我发现CPU消耗为100%。
  • 在我尝试使用Web应用程序和休息控制器(使用tomcat服务器8.5版本)的第二种情况下,我运行了无限循环。因此,如果我使用浏览器请求URL 4次(显然有不同的标签)。我的CPU消耗应该是100%。我无法看到100%的CPU消耗。

为什么会有区别?

我的第二个问题是:我如何调整服务器线程池。我必须使用超过4个线程,因为可能很少有线程等待IO操作。我使用hibernate作为维护连接池的ORM。那么我应该在线程池和连接池中使用多少个线程。我该如何决定?

1 个答案:

答案 0 :(得分:0)

如果没有看到您的代码,我们无法回答您问题的第一部分。但我怀疑问题是你在webapp案例中实现线程的方式。 (因为你报告的内容不应该发生......)

第二部分的答案是“反复试验”。更具体地说:

  1. 使池大小可调参数
  2. 制定代表您预期系统负载的基准。
  3. 使用不同的设置运行基准测试,测量性能和图表结果。
  4. 根据图表(和其他标准)选择性能和资源(例如内存)利用率之间最佳折衷的设置。
  5. 线程池和连接池不同,并且具有不同的资源含义。第一个是(主要)关于记忆;即线程堆栈和线程在活动时使用的临时对象。第二个是(主要)关于与连接相关的资源(活动或空闲)。