причал: динамически изменяющийся простой - PullRequest
2 голосов
/ 16 февраля 2010

У меня есть сервер Jetty, который настроен на истечение срока действия запросов через 30 секунд. Это строка конфигурации в файле конфигурации xml:

<Set name="maxIdleTime">30000</Set>

Существует два вида запросов, которые принимаются этим сервером: запросы, которые должны обрабатываться в режиме реального времени, и запросы, поступающие из пакетных сценариев, для ответа на которые может потребоваться время.

Один конкретный запрос, как ожидается, займет несколько минут.Теперь я бы хотел, чтобы этот запрос выполнялся полностью без тайм-аута, сохраняя время истечения для «обычных» запросов реального времени на низком уровне, чтобы избежать возможных перегрузок.сделать что-то вроде этого:

public class MyServlet extends HttpServlet {

    ...

    public void doGet(HttpServletRequest pRequest, HttpServletResponse pResponse)
        throws IOException, ServletException {

        if (pRequest is of the type allowed to be slow) {
            set max idle time for this request very high (or infinite)
        }

        server.execute(pRequest, pResponse);
    }


}

Я использую причал 6.1.2rc4

1 Ответ

1 голос
/ 16 февраля 2010

Параметр maxIdleTime не определяет время, в течение которого разрешено выполнение запроса. Это значение используется для удаления незанятых потоков из пула потоков, когда Jetty решает уменьшить пул. См. Javadoc для QueuedThreadPool # setMaxIdleTime () .

Если время ожидания истекло, возможно, это связано с параметром времени ожидания сокета с одной или обеих сторон.

...