Приложение Jetty развернуто на моем сервере, но продолжает завершаться, с небольшими понятными доказательствами того, почему. Любая помощь в решении этой проблемы будет принята с благодарностью.
Подробности:
OS:
Slackware Linux 13.1
Linux 2.6.32.16 running as Xen guest OS
Java info:
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)
nginx 0.7.67 config (only pertinent items):
location /app {
proxy_pass http://localhost:50013;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
Приложение Jetty запускается с помощью daemontools в файле запуска, содержащем:
#!/bin/sh
cd /path/to/app
exec setuidgid userXYZ /usr/lib/java/bin/java -server -verbose -jar ./app.jar
В журнале нет доказательств того, почему он спорадически отключается (после чего daemontools запускает его снова).
Очевидно, что при использовании сеансов в памяти это не идеально, поскольку сеансы пользователей завершаются.
Итак, я запустил приложение с помощью strace, без daemontools, и результат можно найти здесь:
Спасибо Дейл
Во-первых, есть ли где-нибудь в вашей системе файл с именем "core"? Это могло быть сгенерировано Jetty при сбое.
Вот несколько возможностей:
Ваша JVM может перегружаться из-за частой сборки мусора. Вы можете проверить это с помощью такого инструмента, как VisualVM. Если этот графический интерфейс не подходит, вы можете распечатать статистику GC в файл журнала с помощью переключателей JVM.
Возможно, вашей JVM не хватает места в куче. ГХ-анализ также проливает свет на эту возможность. Что будет, если увеличить размер кучи?
Насколько я понимаю, вы не можете настроить Jetty так, как вы можете настроить сервер J2EE, так что, вероятно, это нормально.
Последняя вероятность того, что с вашим приложением что-то не так. Вы можете использовать следующий учебник для отладки приложений, работающих на Jetty: http://sujitpal.sys-con.com/node/508048/mobile.
Удачи!