gpt4 book ai didi

java - 生产中的性能问题

转载 作者:行者123 更新时间:2023-11-30 06:34:42 25 4
gpt4 key购买 nike

您好,我正在开发基于 Web 的 Java 工具。我们将工具的两个实例部署在 2 个独立的服务器上——一个在生产环境中(许多客户同时使用),另一个在我很少使用的开发环境中。开发实例和生产实例都部署在具有相同硬件规范的完全等效的服务器中,具有完全相同的代码、堆大小、应用程序服务器、版本等。

但我观察到生产实例比开发实例慢很多,即使是在晚上客户使用量为零的零星时间(我们有工具来监控生产中的客户使用情况)。这是令人惊讶的,因为所有因素都是相同的。我假设由于生产实例被高度使用,那里的堆几乎已满且碎片化,而开发中的堆相对空闲且未碎片化。这就是为什么开发实例要快得多,即使一切都是相同的。这是一个合理的假设,因为碎片化的几乎满满的堆会花费更多时间创建对象,从而降低性能吗?

最佳答案

大多数 GC 执行复制和压缩以避免任何碎片。只有 Concurrent Mark Sweep 会产生一些碎片,但是在大多数情况下这应该不是问题。

与其猜测您的问题可能是什么,我建议您测量系统正在做什么。理想情况下,您想要分析您的生产系统。例如在夜间或低负载下。例如VisualVM(免费)或 YourKit(更好,不是免费!)如果这不是一个选项,您可以监控它的内存使用情况以及它花费了多少时间进行 GC。例如使用 jstat

但是,如果您还没有分析您的应用程序,我建议您这样做,因为您可能可以通过一些明显而简单的事情来提高性能,即使您在开发中以合理的实际工作负载运行它也是如此.

您确定您的服务器没有被网络扫描仪扫描吗? (他们往往不 sleep ,可以在白天/晚上的任何时间 Activity )

关于java - 生产中的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6678724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com