Назад | Перейти на главную страницу

Jetty (сервер HTTP-сервлетов в Java) неожиданно отключается

Приложение 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, и результат можно найти здесь:

http://pastebin.com/ZKCMWVQM

Спасибо Дейл

Во-первых, есть ли где-нибудь в вашей системе файл с именем "core"? Это могло быть сгенерировано Jetty при сбое.

Вот несколько возможностей:

Ваша JVM может перегружаться из-за частой сборки мусора. Вы можете проверить это с помощью такого инструмента, как VisualVM. Если этот графический интерфейс не подходит, вы можете распечатать статистику GC в файл журнала с помощью переключателей JVM.

Возможно, вашей JVM не хватает места в куче. ГХ-анализ также проливает свет на эту возможность. Что будет, если увеличить размер кучи?

Насколько я понимаю, вы не можете настроить Jetty так, как вы можете настроить сервер J2EE, так что, вероятно, это нормально.

Последняя вероятность того, что с вашим приложением что-то не так. Вы можете использовать следующий учебник для отладки приложений, работающих на Jetty: http://sujitpal.sys-con.com/node/508048/mobile.

Удачи!