我们有两个 AIX 机箱,一个用于生产系统,另一个用于测试。
两个系统都运行ATM机交换机,其中ATM设备通过TCP套接字连接。
我们在生产系统上遇到了一个问题,机器会关闭或断开连接,但netstat -na | grep <IP of machine >
仍然会提到插座已打开
当在 UAT 环境中模拟该情况时,问题并未发生,套接字将在 3 到 5 分钟内终止。
当我们嗅探机器和 ATM 之间的流量时,我们发现生产中没有发生任何流量,而 UAT 上有某种心跳,但它不是由应用程序发起的。
$>tcpdump | grep -v "10.2.2.71" | grep -v "HSRP" | grep "10.3.1.30"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en6, link-type 1, capture size 96 bytes
09:08:13.323421 IP server073.afs3-callback > 10.3.1.30.impera: . 278204201:278204202(1) ack 3307884029 win 164
09:08:13.335334 IP 10.3.1.30.impera > server073.afs3-callback: . ack 1 win 64180
09:08:23.425771 IP 10.3.1.30.impera > server073.afs3-callback: . 1:2(1) ack 1 win 64180
09:08:23.425789 IP server073.afs3-callback > 10.3.1.30.impera: . ack 2 win 65535
09:09:13.628985 IP server073.afs3-callback > 10.3.1.30.impera: . 0:1(1) ack 1 win 164
09:09:13.633900 IP 10.3.1.30.impera > server073.afs3-callback: . ack 1 win 64180
09:09:23.373634 IP 10.3.1.30.impera > server073.afs3-callback: . 1:2(1) ack 1 win 64180
09:09:23.373647 IP server073.afs3-callback > 10.3.1.30.impera: . ack 2 win 65535
但在生产过程中,并不存在这种流量。
我们想知道这些流量是从哪里发起的,以便在生产中实现感知断开连接
我们的通信参数是:
tcp_keepcnt = 2
tcp_keepidle = 100
tcp_keepinit = 150
tcp_keepintvl = 150
tcp_finwait2 = 1200
有人可以帮忙吗?
编辑问题: 由于我当时急着去开会,所以错过了一点。生产环境和 UAT 在设置上的区别在于,在生产环境中,我们有一个名为 F5 的应用程序作为 ATM 和 AIX 盒之间的负载均衡器,而对于 UAT 来说,它是通过 MPLS 直接连接。
注意:我们在 UAT 上有一个 MPLS 和一个 GPRS 连接的 ATM,拔掉电源后大约 4 分钟内两个连接都会终止
编辑2
该no -o tcp_timewait
命令在生产和 UAT 中均返回 1