3

In one of my project , I have used Lift 2.5 M4 and Scala 2.10.0 . In this project , I am using Jetty 8.1.10.v20130312 . But while running project through mvn jetty , I am getting unexpected exception .

I have configured jetty plugin in pom.xml in below way :

<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>

I am getting below exception while running command :- 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 (Too many open files) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(FileInputStream.java:106) at org.eclipse.jetty.util.resource.FileResource.getInputStream(FileResource.java:286) at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:754) at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:747) at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:747) at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:747) at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:747)

But When I am using jetty 6.1.25 , It works fine .

<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>

Can anyone help me to resolve this ? I have to use latest Lift , Scala and jetty version in my application .

Thanks in advance .

Regards, Ayush

4

1 に答える 1

3

「開いているファイルが多すぎる」とは、通常、Java プロセスがそれ以上ファイル記述子を開くことが許可されていないことを意味します。ただし、大量の接続が開かれていない桟橋の起動時にこれが発生した場合は、何か奇妙なことが起こっています。

まず、$ ulimit -aコマンドラインで次を実行することにより、許可されているオープン ファイル (またはファイル記述子) の設定されたソフト リミットを確認できます。

さらにアクセスが必要な場合は、結果をここに貼り付けてください。

次に、次のようなツールを使用lsofして、上記の例外で失敗した Java プロセスがその時点で開いていたファイルを確認できます。$ lsof -p <pid>ここで、pid は java/jetty プロセスの processId であり、いくつかのヒントが得られるはずです。

ソフト リミットが小さすぎる場合は、インターネットにある多くのチュートリアルの 1 つに従って上げてみてください: http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open files/ (最初に見つけた結果) 制限を適切なものに引き上げます。アプリケーションに適合する値は、主に、提供する同時オープン接続の量によって異なります。

于 2013-04-24T13:37:01.240 に答える