我在不同的机器上有一个 JBoss 应用服务器和一个 Postgres 数据库服务器。我正在对它们之间的 TCP 连接进行故障排除(因为该应用程序总是用尽数据库连接)。
我看到了这一点,但它毫无意义:
- 当我在数据库服务器上执行 netstat 时,我看到来自我的应用服务器的许多已建立的 TCP 连接。
- 当我在应用服务器上执行 netstat 时,我几乎看不到与数据库服务器建立的 TCP 连接。
这些机器是运行 Centos 的 VMware 虚拟机,由云提供商(不是 AWS)管理。机器之间没有防火墙(根据太多已建立的连接处于打开状态) 看起来确实是类似的行为。
我不知道还有什么原因造成这种不对称?
答案1
很奇怪。似乎应用服务器只是没有收到FIN
s 并且其他人正在回答它们,这可能是您的云提供商的问题。但是,您仍然可以尝试解决此问题并偶尔关闭旧连接。请参阅空闲的 PostgreSQL 连接是否有超时?有关如何操作的更多信息。
答案2
为了让其他看到此行为的人受益,我们确认这是云提供商端的 VMware 设置问题,正如@Shmuel Hazan 所建议的那样。
如果我理解正确的话,这是 VShield Edge 的问题,这就是为什么观察到的行为与防火墙切断连接的行为相匹配。
一旦提供商修复故障,正常服务就会恢复。