- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 Java 7 上有一个 java servlet 应用程序,它在系统资源消耗方面通常非常健康。服务器上的 CPU 使用率通常低于 50%。然而,在启动后的几分钟内,它的行为会大不相同,以至于如果 CPU 在此期间尝试处理大量流量,它可能会在几分钟内保持在 100% 的状态。结果是响应时间变慢、网络超时,有时甚至是长时间的垃圾收集暂停。
为了诊断问题,我在服务器启动时进行了一系列线程转储,同时运行了 top -H。通过将每个 java 线程与 pid 进行匹配,我可以始终看到 C2 CompilerThread
使用了最多的 CPU。我已经研究过这个线程的作用,我知道它是一个基于运行时统计信息优化代码的 Java 编译器。但是从我所做的所有阅读中,我无法说出改善情况的最佳方法。我可以收集的唯一选项是:
最好的方法是什么?是否有其他方法可以尝试减轻启动后的 CPU 使用率?
最佳答案
有几种付费的 JVM 技术可以使用提前编译来缓解您的问题。
但是,如果您想坚持使用标准 JVM,人们使用的一个技巧是在启动后发送一些虚拟请求,以便在实际操作开始之前预热 JVM。这样,您就可以在为客户提供服务之前决定何时支付 JVM 预热费用。
您还可以通过热点的 -Xcomp 命令行选项强制 JVM 编译所有代码,但我们不推荐因为它会通过编译很少使用的代码来减慢应用程序的启动速度。
关于java - C2 编译器在启动时使 CPU 饱和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26245766/
我在 Java 7 上有一个 java servlet 应用程序,它在系统资源消耗方面通常非常健康。服务器上的 CPU 使用率通常低于 50%。然而,在启动后的几分钟内,它的行为会大不相同,以至于如果
我有大约 10k 个视频流需要监控。将有一个小型集群(例如:5-10 个)的异构机器来监视这些流。由于没有足够的 CPU 来完成所有这些工作,我将不得不对流进行洗牌,一次监控其中的几个,然后切换到下一
我已经使用 boost::asio 在 C++ 中开发了一个迷你 HTTP 服务器,现在我正在使用多个客户端对其进行负载测试,但我一直无法接近 CPU 饱和。我在 Amazon EC2 实例上进行测试
我有一个简单的 Ruby 应用程序,基本上它通过 HTTP 端点获取一些数据,对其进行一点处理,将其分组并分批发送到某个远程 HTTP 端点。 当我在裸机上运行它时 - 我将 4 个 CPU 饱和到
我需要使用半径为 17 或更大的 3D 结构元素来计算形状为 (400,401,401)、大小为 64320400 字节的 3D 数组的形态学开度。结构元素ndarray的大小为 42875 字节。使
我一直在看 MMX/SSE,我想知道。有用于无符号字节和字的压缩、饱和减法的指令,但没有双字的指令。 有没有办法做我想做的事,或者如果没有,为什么没有? 最佳答案 如果您有可用的 SSE4.1,我认为
我需要创建一个脚本,让用户可以将一些类似 instagram 的过滤器应用于他们的图像。首先它应该在浏览器中完成。最简单的方法当然是 css3 过滤器。然后图像应该上传到服务器,并且必须使用与在浏览器
我是一名优秀的程序员,十分优秀!