0

我目前在 Linux 上的 Jetty 7.4.5.v20110725 上运行我的 java webapp 时遇到问题。我的 Webapp 提供静态内容的文件描述符在其开始时间戳几天后用完了。我正在使用 useFileMappedBuffer = true( in webDefaults.xml ) 启动码头服务器。我正在使用 jdk1.6.0_30 。如果您对如何解决此问题有任何建议,请告诉我。

请注意,当 useFileMappedBuffer = false(在 webDefaults.xml 中)时,不会发生此问题。

4

1 回答 1

0

如果您的应用程序下次用完时间戳,请尝试找出打开的文件以及打开的连接是否导致问题。

尝试通过调用列出打开的文件(我认为它是lsof -p,但尝试或查看 lsof 手册页,因为我正在写这个):

lsof -p <jettypid>

这将显示码头进程打开了哪些文件。查找可能应该已经关闭的文件等。

然后做一个:

netstat -an 

这将向您显示已建立的网络连接。查看是否有大量处于CLOSE_WAIT状态或类似状态的连接表明连接未正确关闭。

还可以查看您的系统范围的操作系统限制:

ulimit -a

它将向您显示单个进程可以打开多少个文件描述符。如果您的网站流量很大并且非常常见的默认值 1024 max fd,您可能需要提高它。如果您认为交通是问题,请查看本指南:http ://wiki.eclipse.org/Jetty/Howto/High_Load

但是,您已表示该问题仅在几天后才发生。这通常表示未正确关闭连接、文件资源等。

如果不确定如何处理上述命令的输出,请随意粘贴它们。

与问题无关,我建议您升级到最新的 jetty 7.x。

于 2012-06-12T18:02:57.670 回答