2017-01-09 6 views
0

Dropwizard версия: 0.9.2Обработка запроса Dropwizard отложена

У меня есть довольно простой откидыватель api на живых серверах. Перед ним стоит nginx. Для многих запросов nginx показывает, что время ожидания клиента (состояние 499), так как наш сервис нарушил SLA (150 мс). При рассмотрении журнала доступа и журнала приложений выяснилось, что запрос был достигнут dropwizard поздно (около 250 мс после того, как nginx уже объявил тайм-аут клиента).

о включении журналов отладки на Dropwizard стороне, выяснилось, что выбор нить просыпается поздно

Я попробовал несколько вещей, в том числе: 1) Установка кол-селектор в 200,300,400,500. Ничего не помогло. 2) Увеличение количества акцепторов до 32,50 и т. Д. 3) Изменение стратегий GC 4) Изменение версий dropwizard с 0.9.2 до 0.9.1.

+0

. - Я бы рекомендовал использовать dropwizard 1.0 + – Vyacheslav

+0

обновлен до версии 1.0.5, по-прежнему имеют те же проблемы –

+0

я не думаю, что это DW. Попробуйте удалить nginix и напрямую поговорить с DW, чтобы узнать, разрешает ли это ваша проблема (или, по крайней мере, определить, является ли это проблемой для вашего приложения или вашей конфигурации) – pandaadb

ответ

0

Вы пробовали увеличивать потоки в своем config.yaml?

server: 
    ... 
    minThreads: 20 
    maxThreads: 400 
+0

По умолчанию число потоков в dropwizard равно 1024, я устанавливаю потоки селектора на 400, акцептор на 32, а также 10 потоков для порта администрирования. Существует специальный поток с размером 100. Оставшиеся потоки будут потоками приложений. Как предлагается в Интернете, это бесполезно, если ваши потоки приложений превышают количество селекторов. Совет должен был поддерживать его примерно равным потокам селектора. Также попытался уменьшить idletimeout до 10 с по умолчанию 30 секунд. Также попытался настроить размер очереди асинхронного приложения для журнала, чтобы проверить, что оно что-то блокирует. –