当前位置: 首页 > 知识库问答 >
问题:

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

邢嘉祯
2023-03-14

我不熟悉内核级设置或TCP编程。所以,请忍受基本的(有时是愚蠢的)问题。

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

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

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

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

共有1个答案

魏松
2023-03-14

什么级别的 AIX?

三年多前有一个错误,select被遗漏了。这是特定于pollset的,但这可能是Java用于选择的。虽然有很小的可能会遇到这个问题,但更有可能的是应用程序没有正常工作。

如果您可以找到哪个线程应该从套接字中读取,请对该线程进行内核跟踪。如果没有,对整个过程进行内核跟踪。这可能会非常令人生畏,但这是开始的地方。Utopia可能会在进程工作时跟踪进程的内核,以确定哪个(哪些)线程从套接字读取数据。然后,当问题发生时,对该线程进行内核跟踪。您可能会发现它被另一个线程锁在了它需要的资源之外,这会产生一个问题“为什么那个线程被阻塞了?”追逐将会开始。

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

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

祝你好运

 类似资料:
  • 是否可以在 Websphere 中的应用程序级别设置环境变量? WebSphere服务器可以托管多个应用程序。应用于服务端的任何环境变量都适用于该服务器上的所有应用程序。是否可以创建仅适用于单个应用程序的变量? 例如:假设我们有一个SpreadsheetApp和一个DocsApp在同一台服务器上运行。它们共享一些共同的代码,可以通过一个名为DocStorageLocal的环境变量进行配置。有没有可

  • 我正在使用create-react-app开发ReactJS应用程序。 npm start和npm run build应用程序工作正常,该应用程序运行在端口号为4000或pushstate-server build的端口9000,问题是我需要在公共url(如http://sample/home/)中运行没有端口号的构建应用程序,当我直接浏览build/index.html时,它正确显示了主页,但路

  • 我有一个小的Flask应用程序,它使用python dotenv库加载我存储在名为的文件中的环境变量。一切都很好,但我最近意识到我实际上从未调用方法,所以我不确定它是如何工作的。出于好奇,我试着绕过它: 我甚至删除了导入()-仍然有效 我重命名了<代码>。env到-不工作 我用

  • 最近,我从Azure获得了一条关于在我的应用程序服务中达到TCP/IP端口上限的“建议”。 TCP/IP端口接近耗尽包含应用程序*****的应用程序服务计划已配置为使用中等实例。该应用服务计划中托管的应用程序使用了每个中型实例4096个可用TCP/IP端口中的90%以上。您可以升级实例大小以增加出站连接限制,或配置连接池以更高效地使用。 应用程序服务计划的限制是否存在差异(扩大)?或者我可以配置我

  • 我正在运行一个Java服务器应用程序(如果有人知道的话,就是Bungeecort),我正在为它编写插件。Bungeecort服务器在端口A上运行,但需要能够连接到端口A和端口B上的服务器。因此,如果一个人连接到端口A,一切都应该按预期工作。但是如果一个人连接到B,B的输入应该发送到端口A,通过B连接的输出需要从端口B发送。 问题是我的JavaBungeecort插件需要知道客户端是通过A还是B连接

  • 我有一个web enterprise应用程序,我正在尝试用gradle(第一次)为它自动构建EAR文件。 我有2个项目 sys(系统测试)、qa(质量控制)和生产prod 我在Build.Gradle中为我的应用程序创建了3个任务,如下所示: copySys,copyProd等。只是复制任务,在创建war之前为我的目标环境复制适当的配置文件。 1)在应用程序项目中执行buildSys,为sys环境