gpt4 book ai didi

java - AIX 环境 - TCP 端口 RecvQ 数据增加但应用程序不消耗

转载 作者:行者123 更新时间:2023-12-01 11:45:17 39 4
gpt4 key购买 nike

我对内核级设置或 TCP 编程很陌生。因此,请耐心回答基本(有时是愚蠢的)问题。

我有一个场景,客户端应用程序通过 TCP 端口连接到我的服务器并发送消息。我的服务器应用程序托管在 AIX 环境中(WAS 中的 java)。我可以成功地连接到服务器端口,但发送的消息不会被应用程序使用。

端口上的 Netstat -an 显示 req 数据缓冲区大小增加。但应用程序代码没有被触发。

我假设调用在此端口上等待的进程的内核没有调用它。

请向我提供建议以检查解决问题。

最佳答案

AIX 是什么级别?

三年多前有一个错误,导致 select 被错过。这是特定于 pollset 的,但这可能是 Java 用于其选择的内容。虽然您遇到该错误的可能性很小,但更有可能的是应用程序无法正常工作。

如果您可以找到哪个线程应该从套接字读取数据,请对该线程进行内核跟踪。如果没有,请对整个过程进行内核跟踪。这可能会让人非常害怕,但这就是开始的地方。乌托邦也许会在进程确定哪个线程从套接字读取数据时对进程进行内核跟踪。然后,当问题发生时,对该线程进行内核跟踪。您可能会发现它被另一个线程锁定而无法获取所需的资源,这会产生“为什么该线程被阻塞?”的问题。追逐即将开始。

公共(public) IBM FTP 服务器上还有一个名为 pdump 的脚本。您可以在非工作状态下对进程运行 pdump 来获取每个线程的堆栈。特别是如果您知道哪个线程应该从套接字读取数据,这将有助于告诉您当问题发生时读取线程正在做什么。

lsof 可以帮助您找出套接字在哪个文件描述符上打开。这将帮助您读取内核跟踪以及 pdump 信息。它不是“库存”AIX,而是在扩展包中。 fusionr可以做同样的事情,但我更信任 lsof。

祝你好运

关于java - AIX 环境 - TCP 端口 RecvQ 数据增加但应用程序不消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29192485/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com