gpt4 book ai didi

glassfish - 使用哪些工具以及如何查找从 Glassfish 泄漏的文件描述符?

转载 作者:行者123 更新时间:2023-12-03 08:04:11 29 4
gpt4 key购买 nike

我们每周都会发布新的生产代码,Glassfish 没有遇到任何问题。这个周末我们不得不在我们的托管服务提供商处移动机架。没有任何代码更改(它们只是关闭电源、移动、重新安装和打开电源)但是我们在一个新的网络基础设施上,突然我们像筛子一样泄漏文件描述符。所以我猜测有某种连接试图建立,但现在由于网络变化而失败。

我在带有嵌入式 IMQ 实例的 RHEL4 上运行 Glassfish v2ur2-b04/AS9.1_02。移动后我开始看到:

[#|2010-04-25T05:34:02.783+0000|SEVERE|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=33;_ThreadName=SelectorThread-?4848;_RequestID=c4de6f6d-c1d6-416d-ac6e-49750b1a36ff;|WEB0756: Caught exception during HTTP processing.
java.io.IOException: Too many open files
at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
...
[#|2010-04-25T05:34:03.327+0000|WARNING|sun-appserver9.1|javax.enterprise.system.stream.err|_ThreadID=34;_ThreadName=Timer-1;_RequestID=d27e1b94-d359-4d90-a6e3-c7ec49a0f383;|java.lang.NullPointerException at
com.sun.jbi.management.system.AutoAdminTask.pollAutoDirectory(AutoAdminTask.java:1031)

使用 lsof 我检查了文件描述符的数量,我看到了很多看起来像这样的条目:

java 18510 root 8556u sock 0,4 1555182 can't identify protocol
java 18510 root 8557u sock 0,4 1555320 can't identify protocol
java 18510 root 8558u sock 0,4 1555736 can't identify protocol
java 18510 root 8559u sock 0,4 1555883 can't identify protocol

如果我每分钟对打开的文件描述符进行计数,我会发现它每分钟增长 12 个。我不知道这些 socket 是什么。

我已经取消部署我的应用程序,因此只有一个普通的 Glassfish 实例在运行,但我仍然看到它每分钟泄漏 12 个文件描述符。所以我认为这个泄漏是在 Glassfish 或潜在的 IMQ 中。

我应该采取什么方法来追踪这些未知协议(protocol)的套接字?我可以使用哪些工具(或可以将标志传递给 lsof)来获取有关查找位置的更多信息?

谢谢,

查克

最佳答案

我找到了这个解决方案;

assuming GlassFish runs as user "glassfish"

Add the following lines to /etc/security/limits.conf to increase the maximum number of open files for the user that Glassfish runs as:

glassfish soft nofile 32768
glassfish hard nofile 65536

关于glassfish - 使用哪些工具以及如何查找从 Glassfish 泄漏的文件描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2711243/

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