2013-04-24 3 views
1

В одном из моих проектов я использовал Lift 2.5 M4 и Scala 2.10.0. В этом проекте я использую Jetty 8.1.10.v20130312. Но во время выполнения проекта через mvn jetty я получаю неожиданное исключение.Исключение «Слишком много открытых файлов» во время работы mvn org.mortbay.jetty: jetty-maven-plugin: run

Я настроил плагин в пристани pom.xml ниже в пути:

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

я получаю ниже исключение во время выполнения команды: - МВН org.mortbay.jetty: Пристань-Maven-плагин: запустить

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 (Слишком много открытых файлов) at java.io.FileInputStream.open (собственный метод) at java.io.FileInputStr eam. (FileInputStream.java:106) at org.eclipse.jetty.util.resource.FileResource.getInputStream (FileResource.java:286) at 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)

Но когда я использую причал 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 и причал.

Заранее спасибо.

С уважением, Ayush

ответ

2

«Слишком много открытых файлов» обычно означает, что процесс Java не разрешается открывать несколько дескрипторов файлов. Однако, если это происходит при запуске пристани без какого-либо большого количества соединений, открывается что-то странное.

Прежде всего, вы можете проверить настроенное мягкое ограничение разрешенных открытых файлов (или filedescriptors), выполнив: $ ulimit -a на вашей командной строке.

Пожалуйста, вставьте результаты сюда, если вам нужен дальнейший доступ.

Затем вы можете использовать такие инструменты, как lsof, чтобы проверить, какие файлы ваш процесс java с приведенным выше исключением был открыт в то время. $ lsof -p <pid> где pid - processId вашего процесса java/причал, должен дать вам несколько советов.

Если ваш мягкий предел слишком мал, попробуйте поднять его, следуя одному из многочисленных руководств, найденных в Интернете, например: http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/ (первый результат, который я нашел), чтобы поднять предел к чему-то соответствующему. Какое значение будет соответствовать вашему приложению, в основном зависит от количества одновременных открытых подключений, которые вы будете обслуживать.

+0

Спасибо за ваш ответ. Я проверил свой ulimit. Это уже без ограничений. –

+0

Затем, пожалуйста, используйте lsof, как описано выше, чтобы проверить, какие файлы открываются вашим jvm при возникновении этой ошибки. –

+0

Я столкнулся с аналогичной проблемой при обновлении с причала 6 до 8. Кажется, что причал 8 делает * что-то *, что открывает много файлов (хотя это не выглядит медленнее). Для решения проблемы я предпринял следующие два шага: 1) удалить веб-параметры и контексты по умолчанию, которые встроены в часть причала 8, установить 2) вверх по ограничению программных файлов 4096, а ограничение жестких файлов - до 10240 – Taylor

 Смежные вопросы

  • Нет связанных вопросов^_^