Запросы сервлету ждать в очереди - PullRequest
0 голосов
/ 11 мая 2011

Я разрабатываю сборку веб-приложения в GWT, используя GWT RCP. Приложение предназначено для обмена мгновенными сообщениями, для которых я использую Redis Messaging.

При ожидании в сервлете сообщения, и я подписываюсь на этот канал, в перенаправлении все работает, как запланировано. Хотя, когда количество ожидающих запросов на сервере превышает 5, 6-й запрос не начинает обрабатываться и ожидает в очереди, пока не будет обработан один из предыдущих запросов. Я не был уверен, что проблема в redis (я использую библиотеку jedis), поэтому я попытался напрямую вызвать sleep для currentThread, но он вел себя так же.

public class TestServiceImpl extends RemoteServiceServlet implements
            TestService {

    @Override   
    public void syncWait(Date time) {
        try{
            Thread.currentThread().sleep(10000l);
        }catch (Exception e) {
            getLogger().error("sleep error", e);
        }
        return ;
    }
}

Речь идет не об одном конкретном сервлете, когда открыто 5 запросов, 6-й даже не загружает статический контент. Я попробовал это на джети, стеклянной рыбе и коте.

Я также пытался изменить настройки пула потоков в Glassfish, maxthread-count я установил на 200, но это не сработало.

Не могли бы вы посоветовать, как увеличить количество обработанных запросов за сеанс и на сервер?

1 Ответ

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

Для этого вы ДЕЙСТВИТЕЛЬНО хотите использовать одну из реализаций Comet сервлета и разъем NIO.Я не очень хорошо знаком с Glassfish или Jetty, но в Tomcat вы можете использовать комбинацию APR (см. http://tomcat.apache.org/tomcat-6.0-doc/apr.html) и расширенный ввод-вывод (см. http://tomcat.apache.org/tomcat-6.0-doc/aio.html), чтобы сделать то, что вы хотите.

Обратите внимание, что использование расширенного ввода-вывода Tomcat является более сложным (и менее хорошо документированным), чем стандартный API Servlet 2.5.

Resin, Tomcat 7 и Glassfish (я полагаю) поддерживают спецификацию Servlet 3.0, которая также поддерживаетдля похожих функций: вы можете взглянуть на это.

...