我已经使用Spring Framework开发了一个REST API。当我在RHEL上的Tomcat8中部署它时,POST和PUT请求的响应时间与在我的本地计算机(Windows 8.1)上部署相比非常高。在RHEL服务器上,它需要7-9秒,而在本地机器上,它不到200毫秒。
RHEL服务器的RAM和CPU是本地机器的4倍。在Windows和RHEL中都使用默认的tomcat配置。排除了网络延迟,因为GET请求花费的时间与本地计算机大致相同,而POST和PUT请求的第一个字节花费的时间更长。
我甚至尝试使用Visual JVM分析远程JVM。在我的自定义代码中没有主要的热点。

我能够在其他RHEL服务器上重现同样的问题。是否有任何tomcat设置可以帮助解决此性能问题?
发布于 2017-08-21 16:44:53
您放置的性能分析日志或多或少没有任何意义。它显示了以下内容:
阻塞队列正在阻塞。这是正常的,因为这就是它的目的--阻止。这意味着没有任何东西可以从中获取。
正在等待套接字上的连接。这也是正常的。
您没有指定什么是RHEL 8物理/硬件设置。这里的操作系统可能不是唯一的东西。你不能消除静止的网络延迟。如果您有SAN,SAN本身可能会有延迟。如果您使用的是SSD驱动器,而RHEL使用的是带复制功能的SAN,则可能会遇到网络延迟问题。
我更倾向于首先检查磁盘上的IO,而不是专注于操作系统。如果服务器是共享的,则可能有其他进程占用该磁盘。
您是说延迟被排除了,因为GET请求花费的时间是相同的。这还不足以否决它,因为我说过这是客户端和应用程序服务器之间的延迟,它不会检查应用程序服务器计算机和SAN或磁盘或任何存储设备之间的延迟。
https://stackoverflow.com/questions/45792636
复制相似问题