相关疑难解决方法(0)

Apache 反向代理 Java 应用程序服务器 CLOSE_WAIT 连接

我已经将 Apache 设置为 Java 应用程序服务器 (GlassFish) 的反向代理,我注意到即使在空闲的开发系统上也有大约 100 个连接处于 CLOSE_WAIT 状态:

sudo netstat -n -e -p -a -t | grep httpd | grep CLOSE_WAIT | wc -l
Run Code Online (Sandbox Code Playgroud)

我正在使用以下 HTTP 代理设置:

ProxyPass /myapp http://localhost:8080/myapp ttl=20 max=1 smax=0
ProxyPassReverse /myapp http://localhost:8080/myapp
Run Code Online (Sandbox Code Playgroud)

为什么所有这些联系都存在?我已经设置了“ttl=20 max=1 smax=0”,所以我认为所有连接都会在空闲系统上被清理。应用程序服务器是否没有尽其所能清理连接?

glassfish mod-proxy apache-2.2

9
推荐指数
1
解决办法
4782
查看次数

有时 Windows / .net 应用程序会忽略 tcp fin 标志

我遇到了无法解决的网络问题。在一些运行 Windows 8.1 并与 Linux http 服务器通信的计算机上,TCP 连接在 Windows 端悬而未决,而不是正确关闭。

响应后 [分成几个部分,由 Windows 确认,tcp 数据包] linux 服务器 - 10.14.11.59 - 发送一个包含 FIN 和 ACK 标志设置的 tcp 数据包。 在此输入图像描述

Windows 机器(10.14.10.195)对此进行了确认,数据包仅设置了 ACK 标志。 在此输入图像描述

Linux 会多次重新发送带有 FIN 和 ACK 标志的数据包,而 Windows 机器 - 由于某种原因仍然保持连接打开;Windows 机器永远不会发送带有 RST 标志的数据包。 在此输入图像描述

如果发生这种情况,Windows 应用程序将等待并最终超时。这种情况在 10-50% 的尝试中随机发生。

两台机器之间的流量未经过滤;基于主机的防火墙已关闭。为了避免潜在的问题,我在 Linux 和 Windows 上禁用了 TCP 卸载。另外,在 Windows 上运行以下命令并重新启动机器:

netsh int tcp set global chimney=disabled
netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global rss=disabled
Run Code Online (Sandbox Code Playgroud)

数据包捕获:此处

任何想法将不胜感激!

windows tcpip tcp

5
推荐指数
1
解决办法
1471
查看次数

标签 统计

apache-2.2 ×1

glassfish ×1

mod-proxy ×1

tcp ×1

tcpip ×1

windows ×1