解决卡在CLOSE_WAIT状态下的连接问题
我在Windows上有一个Java应用程序在Windows上运行,几天后,该应用程序变得无反应.我注意到的一种可疑症状是,即使服务器闲置,也会出现大量的连接(约3000个),具有近距离状态.由于应用程序服务器正在管理客户端连接,因此我不确定是什么原因引起的.我们还进行了许多Web服务调用,可以回电到同一家服务器,但我相信这些连接可以正确关闭.还有什么可能导致这一点,如何解决这样的问题? 解决方案 问题是通过将"使用JSSE SSL"设置为true true触发的错误.使用WebLogic自己的SSL实现而不是JSSE对于我们的应用程序而言不是问题,因此我只是未选中该设置和问题消失了. 其他解决方案 CLOSE_WAIT是本地TCP状态计算机所在的状态,当远程主机发送FIN(关闭其连接)时,但是本地应用程序没有执行相同的操作并发送了回复鳍.尽管客户端无法接收它,但本地计算机仍然可以发送数据(除非在连接上只有半点). ). 当远程主机关闭(发送鳍片)时,您的本地应用程
0 2023-12-01
编程技术问答社区
使用 WMI 和 VBScript 的 Netstat
我正在研究一个项目,我需要修改用于网络文档的脚本.我们使用的当前脚本是Sydi的修改版本,在此处找到.我想做的就是添加到此脚本中,能够执行A netstat -an 并将其与报告的其余部分返回.我很好奇是否有人使用WMI和VBScript返回NetStat信息以及如何将其合并到此脚本中. 注意:我不是要推广产品,也不隶属于Sydi项目. 解决方案 您可以运行NetStat并像此处的脚本一样捕获结果,但是也可以从ActiveX中获得许多信息,但是我需要知道您需要哪些信息. set sh = CreateObject("Wscript.Shell") set Connections = CreateObject("Scripting.Dictionary") call Main() Function Main() call GetConnections() call ProcessConnections() End Function F
2 2023-11-17
编程技术问答社区
使用Recv-Q和Send-Q
在NetStat的输出中,RECV-Q和Send-Q列的用途是什么?在现实的情况下,如何使用它? 在我的系统上,这两个列始终显示为零.这是什么意思? 解决方案 来自我的男人页面: recv-q 建立:用户程序未复制的字节计数 连接到此插座. 聆听:由于内核2.6.18此列包含当前SYN 积压. send-q 建立:遥控器未承认的字节计数 主机. 听力:由于内核2.6.18此列包含最大尺寸 SYN积压. 如果您陷入了0,则意味着您的应用程序在连接的两侧以及它们之间的网络都可以.实际的即时值可能与0不同,但是以这种短暂的,逃犯的方式,您没有机会实际观察它. 现实生活中的示例,其中可能与0不同(在既定连接上,但我认为您会得到这个想法): 我最近在Linux嵌入式设备上工作,与(设计较差的)第三方设备进行了交谈.在这款第三方设备上,该应用程序有时显然被卡住了,没有读取其在TCP连接上收到的数据,从而导致其TCP窗口下降到0,并停
2 2023-11-08
编程技术问答社区
ES不听从外部请求
我有一个运行Elasticsearch的e2 ubuntu实例,尽管本地工作正常,但我无法使用curl http://ipaddress:9200/从Windows PC进行连接(错误是"无法连接到远程服务器"). 我已经在同一ubuntu实例上设置了apache,curl http://ipaddress:80/ curl http://ipaddress:80/从同一Windows计算机上工作,我可以毫无麻烦. 我的亚马逊安全组允许从所有IP地址访问所有端口. 我认为这是一个ES配置问题,尽管我添加到elasticsearch.yml的唯一行是: http.cors.enabled: true http.cors.allow-origin: "*" 我注意到我运行Netstat时有些奇怪的东西,端口9200和9300(ES端口)的本地地址中有1个 - 这会阻止我的外部请求吗?如果是这样,我该如何更改? ubuntu@ESServer$ netstat
2 2023-11-02
编程技术问答社区
Node.js服务器只听ipv6的声音
我在端口5403上运行了一个node.js服务器.我可以在此端口上的私有ip,但不能在同一端口上触发到公共IP. 我认为这是因为Node.js仅在IPv6上侦听.这是 的结果 netstat -tpln (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN
4 2023-11-02
编程技术问答社区
打开一个Chrome标签会导致多个远程连接
在从事项目时,我观察到,如果打开一个单个Chrome选项卡,则进行了多个socket connections.理想情况下,我认为,应该只有一个连接,即从我的本地计算机到Google服务器. . 这是建立多个远程连接的结果: 为什么有许多连接而不是一个连接?请为我清除这个疑问,谢谢. 解决方案 因为打开镀铬选项卡时,它不仅会从Internet加载一个资源(也许不仅是从Google那里加载).您可以使用一些http/s请求捕获工具,例如fiddler或HTTP Analyzer来查看这些请求.
2 2023-10-15
编程技术问答社区
使用 Selenium 的 Python SkypeWebClient-Bot (错误 10048)
我正在为Skype Web客户端构建一个机器人( https://web.skype.com/en) 使用硒.一切都像魅力一样工作,但是片刻之后,我遇到了10048的错误: 已经使用的地址.通常只允许每个套接字地址(协议/IP地址/端口)使用一个用法 我检查了NetStat -n,并看到我的程序M可以创建大量连接. from selenium import webdriver from selenium.webdriver.common.keys import Keys import time #driver = webdriver.Chrome(executable_path='c:\Python34\chromedriver.exe') driver = webdriver.Firefox(executable_path='c:\Program Files\MozillaFirefox\firefox.exe') driver.get("https://web.skyp
2 2023-10-15
编程技术问答社区
已经使用的地址:JVM_BIND,但使用NetStat端口列出了未列出的过程
我有一个Java进程,该过程使用serversocket API(Java 8)并绑定到本地端口12000.过程在Windows Service包装器(EXE4J)下运行.我有一个计划的任务,该任务在凌晨4点运行,可以停止服务并在几秒钟后重新启动.该过程安装了400多个客户位置. 一切顺利,直到上周五左右.一些流程未能在凌晨4点正确重新启动.在2台服务器上,我能够连接和验证,重新启动失败了,两个已经使用的地址:JVM_BIND".似乎该系统仍在使用端口12000. 我使用了所有工具(ProcessExplorer,tcpview,netstat -ano,命名),我知道尝试找到该过程...没有成功.只有机器重新启动解决了问题.但是问题又回来了一两个晚上. 阅读后,我看到我正在使用无限超时进行sockect.accept(),所以我更改了它 socket.setSoTimeout(15000); socket.accept(); 而是. 我将新版本放到了位,但问题仍
4 2023-10-15
编程技术问答社区
端口卡在时间里_等待
我在C#中有TCP隧道.我需要打开和关闭服务器和客户端之间的应用程序的隧道.我正在使用它来关闭数据连接以测试另一个应用程序.我必须使用特定端口. 在第二,第三,第n个连接的情况下,取决于我等待重新连接多长时间,我在绑定套接字时会收到10048错误代码 - "已使用的地址".关闭插座时,我确实执行关闭.我还将插座设置为没有持续的插座.最后,我试图制作一个循环以检查端口的状态,但它以一个无尽的循环结束.我认为这是4分钟的时间_HAIT规则. 我有一个显示嵌套查询的函数,我发现当我运行它并检查端口时,直到端口从已建立的time_wait进入我可以绑定的时间_任务,但是当我使用此查询的相同数据以绑定在一个当状态达到Time_wait时,循环我会得到10048.我的按钮点击允许我绑定时允许的短暂时间吗?时间_怀特之间是否存在状态,并且建立我在循环中遇到的状态,而不是使用按钮单击时?我读到Time_wait应该阻止我完全绑定,但这似乎并非如此.有人可以解释一下吗? 我向您道歉.不认
0 2023-10-15
编程技术问答社区
netstat显示国外端口为kubernetes:port。这是什么意思?
我正在使用Windows 10 Pro机器. 当我运行netstat时,它将kubernetes:port显示为Active Connections中的异物. 这是什么意思?我已经检查了,我的计算机上没有运行的kubernetes群集. 如何关闭这些连接? Minikube状态: $ minikube status host: kubelet: apiserver: kubectl: 解决方案 由于方式netstat呈现输出而发生.它与实际的kubernetes无关. 我有Windows的Docker桌面,它将其添加到主机文件: # Added by Docker Desktop 192.168.43.196 host.docker.internal 192.168.43.196 gateway.docker.internal # To allow the same kube context to work on the host and
2 2023-10-15
编程技术问答社区
什么原因会导致这么多TIME_WAIT连接被打开?
因此,我在一台服务器上有A上的应用程序A,该应用程序每秒发送710个HTTP POST消息到另一个服务器上的应用程序B,该服务器在一个端口上侦听.连接不是保持活力的;他们是关闭的. 几分钟后,应用程序报告说它无法打开与应用程序B的新连接. 我在这两台机器上都在连续运行Netstat,并看到每个机器人的连接都在每个机器上打开.几乎所有显示的连接都在Time_wait中.通过在线阅读,似乎这是状态30秒(根据/proc/sys/net/net/ipv4/tcp_fin_timeout值30秒在我们的机器上),每一侧都关闭连接. 我在每台计算机上都在运行一个脚本,该脚本一直在执行: netstat -na | grep 5774 | wc -l 和: netstat -na | grep 5774 | grep "TIME_WAIT" | wc -l 每台计算机上的每台值似乎都达到了约28,000个,在应用程序的报告中,它无法打开应用程序b. 的新连接.
2 2023-10-15
编程技术问答社区
pid为0的TCP连接
我正在尝试确保Windows Service程序(在.NET顶部运行)正在正确释放其网络连接. 在本地运行服务时,我知道它将在端口57300上创建许多HTTP连接.我正在使用netstat监视它们是否正确发布. 我很惊讶地看到,与此端口的许多连接都由"系统空闲过程"(pid = 0)所有. 在这里,我们可以看到服务程序中只有三个连接(PID = 5012).所有其他人都归PID0. 我的主要问题是:为什么会发生这种情况?和我需要照顾吗? ,但我也想知道: 这是否意味着服务程序确实正确发布了连接? 如果需要,将重复使用此类连接? 在.net 解决方案 TCP连接关闭后,它进入了固定时期的时间_怀特状态.这是为了确保与连接有关的任何数据包可能仍在网络中排队,不会干扰新的连接. 即使原始过程已退出,也必须发生这种情况,所以我猜Windows会自动将所有权转移到系统过程中. 所以,我相信您最近四个问题的答案是: 不,您可能不必
10 2023-10-15
编程技术问答社区
iPhone上的网络活动监控
我已经工作了5天,试图在iPhone上学习和实施网络监视器. 我研究了Apple的Netstat代码,但我的头发损失了25%. 我找到了JB设备的链接,但我需要在非JB设备上执行. (不管苹果是否在应用商店中接受它). 我找到了一些有用的链接: 如何在iPhone上获取TCP UDP打开端口列表(我无法解析此问题中返回的数据:() iPhone上的数据使用 sysctlbyname buf返回类型(我不是一个网络人. 一个> 我可以说我从第一个链接中得到了一些东西.你们能帮我解析数据吗? 还有其他方法可以实现这一目标吗? 解决方案 好吧,您有所有需要在桌子上. 您可以检查问题是否有私人API可以监视iPhone上的网络流量? 在这里,您可以找到源 a>.该代码有所有您需要解析size_t len = 0; if (sysctlbyname("net.inet.tcp.pcblist_n", 0, &len, 0, 0)
2 2023-10-14
编程技术问答社区
在Mac OS X上,谁在监听某个特定的TCP端口?
在Linux上,我可以使用netstat -pntl | grep $PORT或fuser -n tcp $PORT找出在指定的TCP端口上侦听哪个过程(PID).如何在Mac OS X上获取相同的信息? 解决方案 Macos Big Sur及以后,使用此命令: sudo lsof -i -P | grep LISTEN | grep :$PORT 或仅查看IPv4: sudo lsof -nP -i4TCP:$PORT | grep LISTEN 在较旧版本上,使用以下形式之一: sudo lsof -nP -iTCP:$PORT | grep LISTEN sudo lsof -nP -i:$PORT | grep LISTEN 用端口号替换$PORT端口号列表. prepend sudo(接下来是一个空间)如果您需要在#1024下方的端口上的信息. -n标志用于显示IP地址而不是主机名.这使该命令执行得更快,因为获得主机名的DNS查
4 2023-10-14
编程技术问答社区
从C语言的系统命令中启动的进程继承了父级fd'的功能。
我在TCP和UDP端口5060上都有SIP服务器的示例应用程序. 在代码中的某个时刻,我执行一个系统(" pppd file/etc/ppp/myoptions&"); 之后,如果我做NetStat -apn,它向我显示端口5060也为PPPD打开了! 有什么方法可以避免这种情况吗?系统功能在Linux中的标准行为是吗? 谢谢 Elison 解决方案 是的,默认情况下,每当您分叉一个进程(system做)时,孩子就会继承所有父母的文件描述符.如果孩子不需要这些描述符,则应该关闭它们.使用system(或任何其他执行叉+Exec的方法)来执行此操作的方法是在所有文件描述符上设置FD_CLOEXEC标志,而您的孩子们不应使用该过程.每当任何孩子执行其他程序时,这都会使他们自动关闭. 通常,每当您的程序打开任何形式的文件描述符时,该文件描述符将长时间使用(例如示例中的侦听套接字),并且不应与孩子共享,您应该做 fcntl(fd, F_SETFD, fcntl(f
4 2023-10-13
编程技术问答社区
IPV6 ServerSocket即使在应用程序崩溃后仍在监听
我使用: 创建了一个serversocket InetSocketAddress inetsktaddr = new InetSocketAddress(0); ServerSocket sckt = new ServerSocket(); sckt.bind(inetsktaddr); Socket socket = sckt.accept(); 当应用程序运行时,使用我发现的Netstat, TCP 0.0.0.0:49906 0.0.0.0:0 LISTENING 9196 TCP [::]:49906 [::]:0 LISTENING 9196 有时应用程序崩溃时,Netstat结果说: TCP [::]:49906 [::]:0 LISTENING
14 2023-09-06
编程技术问答社区
java: bind exception address in use error when it isn't in use (as shown by netstat)
我的应用程序使用特定的源端口建立了与服务器的外站连接(预期防火墙问题 - 硬化系统可能需要提前指定端口). 我的问题是我的应用最初建立了连接.但是,如果连接破裂,它将再次尝试,但是插座会得到一个bindexception,上面写着"使用中的地址".如Netstat -Pant所示,情况并非如此.它表明"源端口/远程套接字对"对不存在(即,我什至没有在等待模式下看到它,连接不存在).我将尝试永远连接而没有任何成功.我认为,如果以前的连接挥之不去是一个问题,它最终会超时,但事实并非如此.我永远得到绑定的异常. 就我而言,我从10.0.1.20:4002连接到10.0.1.229:4001.因此,我正在使用NetStat来查找源套接字(10.0.1.20:4002)或远程套接字(10.0.1.229:4001),但是在打破初始连接后都没有发现,表明地址不应使用. 即使NetStat不报告它,也会导致这种连接保持在附近吗? 请注意我在Linux上,我也意识到,使用随机源端
6 2023-09-06
编程技术问答社区
为什么我的插座的开放端口未由Netstat列出?
如果您运行了此示例,您会看到端口永远不会由netstat列出.为什么?我该怎么做? #include #include #include #pragma comment(lib, "WS2_32") int main() { WORD wVers = MAKEWORD(2, 2); WSADATA wsa; WSAStartup(wVers, &wsa); SOCKET sock = socket(AF_INET, SOCK_STREAM, 6); if (sock != INVALID_SOCKET) { struct sockaddr_in addr = { 0 }; addr.sin_family = AF_INET; addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
12 2023-09-06
编程技术问答社区
列出多播套接字
我正在尝试列出Linux系统上的所有打开的多播插座? NetStat -G列出了加入的组.为此,我还可以使用其他实用程序吗? 非常感谢您的帮助. 解决方案 除netstat -g外 netstat -anu|sort -nk4 这是所有UDP插座的列表(无论是否多播).查找范围224.0.0.0至239.255.255.255的所有地址.这些是绑定到多播地址的插座,无论它们是否加入了多播组.这些将仅 接收此多播组的流量. 但是: 实际上,用于接收多播流量的UDP插座通常被义务地址为0.0.0.0.这些可以接收所有单播和多播地址的UDP数据包,并且服务器通常会根据源IP-Address进行一些其他过滤. 因此,在上面的列表中,您可能还需要查看绑定到0.0.0.0的UDP插座,例如0.0.0.0.0:5353,它很可能是MDNS(Avahi,Zeroconf)服务器. 其他解决方案 我认为没有一个工具可以为您提供这些信息. 原因是多播套接字
2 2023-09-06
编程技术问答社区
linux中netstat和ss的区别?
在Linux中,Netstat命令告诉我们系统中活动插座的信息. 我了解netstat使用/proc/net/tcp获取系统网络信息. 因为netstat男人页面说Netstat已过时,因此我们应该使用'SS'. NOTE This program is obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route. Replacement for netstat -i is ip -s link. Replacement for netstat -g is ip maddr. 我发现ss执行相似的功能,但不使用 /proc/net/tcp获取系统网络信息. 现在我很好奇ss如何获取系统网络套接字信息? 解决方案 它使用 netlink 使用classic sockets api. 其他解决方案 我已经做过 简短参
140 2023-09-06
编程技术问答社区