我正在对托管在 Glassfish 集群上的 Web 应用程序运行性能测试。
每个集群实例都托管在单独的 Solaris 10 区域上,并且 http 流量通过 F5 BigIp 负载平衡器在实例之间进行负载平衡。我面临的问题是 SOAP 请求会定期因 tcp 连接重置而中止。
现在我需要弄清楚为什么连接被关闭,以及我是否可以采取任何措施来防止这种情况发生。我使用 tcpdump 来监控负载生成器和负载平衡器之间的流量,我可以看到 tcp 连接已建立,SOAP 请求已发送,然后负载平衡器发送 ACK,4-5 秒后,我从负载平衡器的 tcp 帧中获取 RST 和 ACK 标志。
但是我无法监控负载均衡器和集群实例之间的流量,因此我看不到集群上发生了什么。这是因为 tcpdump 无法监听区域中的虚拟网络接口,至少我还没有找到如何做到这一点。
因此,我希望有一种方法可以使用 DTrace 来监视连接重置时集群实例中发生的情况,我猜测某些资源耗尽了,例如 tcp 连接队列(?不确定术语?)
您是否有任何 dtrace 脚本的工作示例可以显示连接重置的原因?
我看过https://blogs.oracle.com/hkchu/entry/diagnose_networking_problems_on_solaris但是该页面上提供的 Dtrace 脚本无法在我的 Solaris 服务器上编译。