![为什么在 Windows Server 2012 R2 上运行的 Apache Tomcat 8.5 上的端口 9721 会间歇性地拒绝连接?](https://linux22.com/image/756017/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%20Windows%20Server%202012%20R2%20%E4%B8%8A%E8%BF%90%E8%A1%8C%E7%9A%84%20Apache%20Tomcat%208.5%20%E4%B8%8A%E7%9A%84%E7%AB%AF%E5%8F%A3%209721%20%E4%BC%9A%E9%97%B4%E6%AD%87%E6%80%A7%E5%9C%B0%E6%8B%92%E7%BB%9D%E8%BF%9E%E6%8E%A5%EF%BC%9F.png)
网络服务器:Apache Tomcat 8.5
操作系统:Windows Server 2012 R2
港口:9721
我们在内部网络上运行 Web 服务器,大约有 8500 个信息亭通过我们的 VPN 连接到在此端口上运行的 Java servlet::9721
该 Web 服务器是由一位前雇员设置的,我们不确定它最初是如何配置的。
我们最近注意到,大约 25% 的连接尝试被拒绝(连接被拒绝错误)。我们通过使用 PRTG 监控端口 9721 发现了此信息,此监控工具报告称,该端口在一天中的每个小时内多次拒绝连接。我无法找到被拒绝连接的模式...它似乎是间歇性的。
我们的网络管理员说这不是防火墙问题,但我没有排除这种可能性。我们尝试检查 Tomcat server.xml 配置文件中的“maxconnections”设置,但找不到该配置文件中包含的“maxconnections”属性。我找到的这台服务器上没有安装 Tomcat Manager 应用程序。
如何排除故障并解决此端口连接问题?
答案1
为了确定这里的问题,我将使用以下步骤进行监控和测试情况:
创建 PRTG 传感器,它将告诉您当前有多少个 TCP 连接连接到端口 9721。为此,我们将在 PRTG 安装 (EXE/show-connections.ps1) 中创建包含以下内容的 powershell 文件:
调用命令 -计算机名称替换为 Web 服务器主机名-ScriptBlock { $CountConnections = $(Get-NetTCPConnection -LocalPort 9721).Count echo "0:$CountConnections 仅信息传感器 - 我们目前有 $CountConnections 个客户端连接到端口 9721" }
安排此传感器每 30 秒运行一次,每分钟向您提供两次信息
- 在该服务器上针对端口 9721 远程运行 Jmeter,并确保在使用 100、1000 和 10000 个同时连接时不会出现任何连接拒绝。我敢打赌,如果你运行 10k 测试,你将达到最大值,你会看到 PRTG 传感器显示你可以同时使用的最大连接数
我相信 PRTG 传感器永远不会无法连接到服务器 - 这意味着 Windows 防火墙没有问题,但我相信您会遇到应用程序服务器(Tomcat)的限制,下面的文章可以帮助您尝试调整一些参数:
使用 JMeter 对 1000 个用户进行负载测试时出现 Apache Tomcat 连接被拒绝错误
如果您对 PRTG/PowerShell 或 JMeter 有更多疑问,请告诉我。如果您发现问题,请告诉我