我开发了一个 Web 应用,其中有一个页面仅在我的生产服务器 (RHEL) 上加载速度非常慢。我的本地开发服务器 (Windows) 和测试服务器 (Ubuntu) 远没有那么强大,但这个特定页面的加载速度实际上快了 4 倍。在开发/测试上大约需要 2 秒,在生产上需要 8 秒。
这个应用程序多年来一直运行良好,但在将我的 RHEL 服务器从 6 升级到 7 后,我注意到了这种速度变慢的情况。这也让我将 mysql 升级到了 5.7。我已尽力将我的开发机器上的环境与 Tomcat、mysql、java 的版本相匹配,但它是一台 Windows 机器。
我尝试将 JVM 的内存分配增加一倍,以防止出现内存问题,但这根本没有效果。
-Xms1536m -Xmx2560m
我认为可能是内存泄漏导致了速度随着时间的推移而变慢,但即使在服务器重新启动后,我仍然遇到同样的问题。
我不确定从哪里开始才能找出问题所在。我只能假设这是 Redhat 的问题,但我不确定。有什么想法吗?
配置:
- 雄猫:7
- Java:1.8
- Mysql:5.7
- 服务器:RHEL 7
更新
经过一些更精细的调试后,我能够将其缩小到一个循环,该循环具有大量数据操作,占用了大约 80% 的执行时间。现在可能有方法可以优化它,但我的问题是为什么在我强大的生产服务器上速度会慢这么多?相同的代码、相同的循环、相同的数据集在我较慢的 Windows 和 Ubuntu 机器上完成速度快 4 倍。正如我上面提到的,当我运行 RHEL 6 时这不是一个问题,只有在 RHEL 7 升级后才出现这个问题。