【问题标题】:"Too many open files" exception while running mvn org.mortbay.jetty:jetty-maven-plugin:run运行 mvn org.mortbay.jetty:jetty-maven-plugin:run 时出现“打开的文件太多”异常
【发布时间】:2013-04-17 12:10:30
【问题描述】:

在我的一个项目中,我使用了 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(本机方法) 在 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 版本。

提前致谢。

问候, 阿尤什

【问题讨论】:

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


    【解决方案1】:

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

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

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

    然后,您可以使用lsof 之类的工具来检查您的 java 进程因上述给定异常而失败的文件当时打开了哪些文件。 $ lsof -p &lt;pid&gt; 其中 pid 是你的 java/jetty 进程的 processId 应该给你一些提示。

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

    【讨论】:

    • 感谢您的回复。我检查了我的 ulimit 。它已经是无限的。
    • 那么请按照上面的方法使用lsof来检查出现这个错误时你的jvm打开了哪些文件。
    • 我在从 jetty 6 升级到 8 时遇到了类似的问题。jetty 8 似乎做了 something 会打开很多文件(尽管它看起来并没有变慢)。我采取了以下两个步骤来解决这个问题:1)删除作为 jetty 8 安装的一部分嵌入的默认 webapps 和上下文 2)将软文件限制 4096 和硬文件限制到 10240
    • 谢谢@Taylor,你的建议也对我有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 2016-08-20
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多