Jetty - заблокированные http-запросы на короткий промежуток времени (до 12 секунд) - PullRequest
0 голосов
/ 05 мая 2011

Я использую Jetty 7.3.1 в качестве веб-контейнера на сервере Ubuntu. У меня там сильно загруженная сеть, 300 пользователей онлайн, с большим количеством ajax. Моя проблема в том, что каждые 1-2 минуты пристань перестает принимать запросы http, и эти запросы ждут, в основном, до 12 секунд и затем обрабатываются. Как я могу узнать, что происходит ??? Можно ли как-нибудь отследить логи? Как мне найти, что причал не перезапускается в эти 12 секунд. Возможно, что-то настроено неправильно, и Jetty пытается перезапустить, чтобы исправить это. Как я могу узнать, что происходит? Спасибо за любую идею.

Достаточно памяти, загрузка процессора нормальная.

Вот мой фрагмент конфигурации из файла jetty.xml:

<Set name="ThreadPool">       
      <New class="org.eclipse.jetty.util.thread.QueuedThreadPool"> 
        <Set name="minThreads">50</Set> 
        <Set name="maxThreads">600</Set> 
        <Set name="detailedDump">false</Set> 
      </New> 
    </Set> 


    <Call name="addConnector"> 
      <Arg> 
          <New class="org.eclipse.jetty.server.nio.SelectChannelConnector"> 
            <Set name="host"><Property name="jetty.host" /></Set> 
            <Set name="port"><Property name="jetty.port" default="80"/></Set> 
            <Set name="maxIdleTime">30000</Set> 
            <Set name="Acceptors">2</Set> 
            <Set name="statsOn">false</Set> 
            <Set name="confidentialPort">8443</Set> 
            <Set name="lowResourcesConnections">5000</Set> 
            <Set name="lowResourcesMaxIdleTime">2000</Set> 
            <Set name="useDirectBuffers">false</Set> 
          </New> 
      </Arg> 
    </Call> 

Ответы [ 2 ]

0 голосов
/ 05 мая 2011

Возможно, у вас достаточно памяти, но это не значит, что она используется и используется эффективно. Моим первым подозрением будет сборка мусора «останови мир» или сбой CMS. Вы можете профилировать сборку мусора.

Вторым подозрением может быть какая-то проблема синхронизации, когда все потоки накапливаются в ожидании одного и того же ресурса. Опять же, профилирование может помочь вам найти это. Это может быть то, что вы видите в JRebel.

0 голосов
/ 05 мая 2011

Если вы отправите процессу сигнал QUIT («kill -SIGQUIT PID»), он сделает дамп стека всех потоков в стандартный вывод.Возможно, это даст вам представление о том, что на самом деле делает сервер.

...