【问题标题】:How to nice Java processies running on Tomcat如何优化在 Tomcat 上运行的 Java 进程
【发布时间】:2015-01-02 17:38:58
【问题描述】:

我正在使用 REST 前端创建 Java 应用程序,因此必须具有响应性,并且偶尔(X 分钟)另一个服务正在轮询互联网。为此,产生了数百个线程。

不用说,当数百个线程正在运行时,服务器会变慢(即无响应)。我找到了一个向 Thread 提供 setPriority 参数的选项。但也发现了一些缺陷,这意味着前端几乎没有响应,尽管在没有 Java nicing 的情况下似乎更好。

所以我正在检查我的选择:1)整理线程; 2)打一场战争(没有找到这样的选择) 3)产生另一只雄猫并且不错,这是可能的,但我会失去宝贵的资源。也许将线程池分配给核心的子选择?

我的问题主要是一些有用的指示,最好是选项 1,然后是 2 等。或者,当然,我没有提到的东西,导致其他线程有一些专用的 cpu 时间。

【问题讨论】:

  • 当数百个线程轮询互联网时,为什么您的服务器会无响应?它们大多会在读取或连接中被阻止。如果你有一个线程优先级是解决方案的问题,你通常会有一个完全不同的问题。
  • 除了轮询互联网之外,结果会被解析并对照数据库(无论它们是否已经存在)进行检查,以进行翻译和填充。我知道轮询本身并不昂贵,但这还不是全部......
  • 为什么数百个线程而不是几个工作线程扫描查询列表,特别是因为该集合只需要每 X 分钟运行一次? (我还会检查您的“解析和检查数据库”是否过度同步,但减少线程数似乎是第一步。)
  • 当我从澳大利亚或日本(因为我来自荷兰)投票时需要大约 200 毫秒(ping),所以我需要更多线程。此外,我不明白这与这个问题有什么关系。无论我在做什么,我都想将我机器的某些部分专用于处理新请求,就好像服务器不忙一样。我可以使用 1 个线程进行轮询,但是空闲时间会太长,并且轮询数千个提要会花费太长时间。

标签: java linux multithreading tomcat8 nice


【解决方案1】:

我能够通过编辑来完善流程

/etc/systemd/system/tomcat.service

只需添加Nice=10 或您想要的任何友好级别。所有进程都应该继承父进程的优先级。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多