пассажир не появится не более 6 раз, несмотря на то что passenger_max_pool_size = 30 - PullRequest
0 голосов
/ 19 мая 2010

У меня есть некоторые проблемы с пассажиром + nginx и надеюсь, что кто-нибудь сможет мне помочь и направить меня в правильном направлении.

Я установил passenger_max_pool_size на 30, но пассажир никогда не появляется более 6 раз.

Я загружаю веб-страницу, которая использует ajax для загрузки 30 дополнительных страниц с сервера, но поскольку пассажир создает только 6 экземпляров, они помещаются в очередь. Что меня смущает, так это то, что Waiting on global queue равно 0, но я вижу в своем браузере, что все ставится в очередь. Когда первые 6 запросов Ajax будут выполнены, начнут загружаться следующие 6.

Чего мне не хватает? :)

Это вывод статуса пассажира (у меня было около 24 запросов в браузере, ожидающих ответа от сервера, когда я проверял этот статус)

----------- General information -----------
max      = 30
count    = 6
active   = 6
inactive = 0
Waiting on global queue: 0

----------- Domains -----------
/srv/rails/production/current: 
  PID: 28428   Sessions: 1    Processed: 42      Uptime: 5m 43s
  PID: 28424   Sessions: 1    Processed: 23      Uptime: 5m 43s
  PID: 28422   Sessions: 1    Processed: 7       Uptime: 5m 43s
  PID: 28420   Sessions: 1    Processed: 22      Uptime: 6m 0s
  PID: 28426   Sessions: 1    Processed: 39      Uptime: 5m 43s
  PID: 28430   Sessions: 1    Processed: 7       Uptime: 5m 43s

Это мои настройки для пассажиров в nginx.conf

http {
     passenger_root /opt/ruby/lib/ruby/gems/1.8/gems/passenger-2.2.11;
     passenger_ruby /opt/ruby/bin/ruby;
     passenger_max_pool_size 30;

1 Ответ

0 голосов
/ 12 июня 2010

Ключ должен включить глобальную очередь. Параметр конфигурации для глобальной очереди: PassengerUseGlobalQueue on для Apache и passenger_use_global_queue on для Nginx.

У меня была такая же проблема с несколькими занятыми работниками, которые сдерживали запросы, которые могли обслуживать другие работники. Что действительно происходит без глобальной очереди, так это то, что запросы уже распределены работнику, и они не будут перераспределены свободному работнику / слоту. Включение глобальной очереди приводит к небольшому снижению производительности, но я обнаружил, что это в целом значительно увеличило пропускную способность.

Еще одна вещь, которую нужно проверить, это то, что вы не установили PassengerMaxInstancesPerApp (Apache) или passenger_max_instances_per_app (Nginx) на слишком низкое значение. Значение по умолчанию: 0 (без ограничений).

...