maven - 运行 mvn org.mortbay.jetty :jetty-maven-plugin:run 时出现 "Too many open files"异常

标签 maven jetty maven-jetty-plugin jetty-8

在我的一个项目中,我使用了 Lift 2.5 M4 和 Scala 2.10.0。在这个项目中,我使用 Jetty 8.1.10.v20130312。 但是在通过 mvn jetty 运行项目时,出现意外异常。

我已经通过以下方式在 pom.xml 中配置了 jetty 插件:

<plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>8.1.10.v20130312</version>
            <configuration>
                <systemProperties>
                    <systemProperty>
                        <name>org.apache.cocoon.log4j.loglevel</name>
                        <value>WARN</value>
                    </systemProperty>
                </systemProperties>
                <connectors>
                    <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                        <port>9090</port>
                        <maxIdleTime>30000</maxIdleTime>
                    </connector>
                </connectors>
                <webApp>
                    <contextPath>/</contextPath>
                </webApp>
                <scanIntervalSeconds>0</scanIntervalSeconds>
                <stopKey>stop</stopKey>
                <stopPort>9999</stopPort>
            </configuration>
</plugin>

我在运行命令时遇到异常:- mvn org.mortbay.jetty:jetty-maven-plugin:run

2013-04-24 06:49:39.216:WARN:oeja.AnnotationParser:EXCEPTION java.io.FileNotFoundException:/home/ayush/scala-lift/knolgame/target/classes/com/knolgame/lib/TransactionStatus$$anonfun$find$1.class(打开的文件太多) 在 java.io.FileInputStream.open( native 方法) 在 java.io.FileInputStream.(FileInputStream.java:106) 在 org.eclipse.jetty.util.resource.FileResource.getInputStream(FileResource.java:286) 在 org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:754) 在 org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:747) 在 org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:747) 在 org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:747) 在 org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:747)

但是当我使用 jetty 6.1.25 时,它工作正常。

<plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.25</version>
            <configuration>
                <systemProperties>
                    <systemProperty>
                        <name>org.apache.cocoon.log4j.loglevel</name>
                        <value>WARN</value>
                    </systemProperty>
                </systemProperties>
                <connectors>
                    <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                        <port>9090</port>
                        <maxIdleTime>30000</maxIdleTime>
                    </connector>
                </connectors>
                <contextPath>/</contextPath>
                <scanIntervalSeconds>0</scanIntervalSeconds>
                <stopKey>stop</stopKey>
                <stopPort>9999</stopPort>
            </configuration>
</plugin>

谁能帮我解决这个问题?我必须在我的应用程序中使用最新的 Lift、Scala 和 jetty 版本。

提前致谢。

问候, 阿尤什

最佳答案

“太多打开的文件”通常意味着您的 java 进程不允许打开更多的文件描述符。 但是,如果这种情况发生在 jetty 启动时没有打开任何大量连接,那么就会发生一些奇怪的事情。

首先,您可以通过执行以下命令来检查配置的允许打开文件(或文件描述符)的软限制:$ ulimit -a在你的命令行上。

如果您需要进一步访问,请将结果粘贴到此处。

然后你可以使用像lsof这样的工具检查您的 java 进程因上述给定异常而失败的文件当时已打开。 $ lsof -p <pid>其中 pid 是您的 java/jetty 进程的 processId 应该会给您一些提示。

如果您的软限制太小,请尝试按照互联网上的许多教程之一提高它,例如:http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/ (我发现的第一个结果)将限制提高到适当的程度。什么值适合您的应用程序主要取决于您将服务的并发打开连接的数量。

关于maven - 运行 mvn org.mortbay.jetty :jetty-maven-plugin:run 时出现 "Too many open files"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16183573/

相关文章:

Java 反射 - 类加载器检测新旧包中移动的类

java - Maven 单元测试

java - Jetty Http 客户端日志记录

java - Jetty 9 处理程序示例?

mysql - Solr DataImport 中的中文字符问题

java - jetty WebSocket 自定义事件

java - 在 Eclipse 之外运行具有 Eclipse 依赖项的 Maven 项目

java - 使用 Maven 命令执行特定的 JUnit 测试用例

java - 由于 "Failed to execute goal org.apache.felix:maven-bundle-plugin:2.5.3",Maven 构建失败

servlets - JSF 欢迎文件无法识别