Странный перезапуск на определенных пассажирских процессах - PullRequest
1 голос
/ 23 сентября 2010

Я недавно работал с нашим пассажиром, настраивал и отслеживал наше приложение через RPM NewRelic.На прошлой неделе я заметил, что производственная версия нашего приложения перезапускается примерно раз в час (не отслеживается ровно раз в час, это кажется случайным, и происходит только в течение дня, который я могу сказать - хотя естьредко запрашивает ночью, поэтому я никогда не вижу всплывающее окно запуска).Однако другие сайты в том же окне этого не делают.

Взглянув на passenger-status Я вижу это:

----------- Domains -----------
/web/marketing/current: 
  PID: 2897    Sessions: 0    Processed: 178     Uptime: 22h 35m 58s

/web/demo/current: 
  PID: 11664   Sessions: 0    Processed: 58      Uptime: 17h 14m 59s
  PID: 11026   Sessions: 0    Processed: 20      Uptime: 17h 50m 21s

/web/production/current: 
  PID: 20103   Sessions: 0    Processed: 12      Uptime: 9m 49s
  PID: 20107   Sessions: 0    Processed: 3       Uptime: 9m 49s
  PID: 20099   Sessions: 0    Processed: 20      Uptime: 9m 49s
  PID: 20032   Sessions: 0    Processed: 20      Uptime: 11m 46s
  PID: 20105   Sessions: 0    Processed: 17      Uptime: 9m 49s
  PID: 20101   Sessions: 0    Processed: 2       Uptime: 9m 49s
  PID: 20110   Sessions: 0    Processed: 1       Uptime: 9m 43s

На данный момент у нас настроена пассажирская система:

PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/local/bin/ruby_gc_wrapper

PassengerMaxPoolSize 20
PassengerUseGlobalQueue on
PassengerStatThrottleRate 120
PassengerPoolIdleTime 0

RailsSpawnMethod smart
RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime 0

и ruby_gc_wrapper выглядит следующим образом:

#!/bin/sh

# wrap ruby with gc tuning parameters

export RUBY_HEAP_MIN_SLOTS=500000
export RUBY_HEAP_SLOTS_INCREMENT=250000
export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
export RUBY_GC_MALLOC_LIMIT=50000000
export RUBY_HEAP_FREE_MIN=4096
exec "/usr/local/bin/ruby" "$@"

Насколько я понимаю, PassengerPoolIdleTime 0 должно препятствовать тайм-ауту приложения.Единственное различие, которое я знаю, между демонстрационным экземпляром и производственным экземпляром состоит в том, насколько чаще вызывается prod.Однако я не установил PassengerMaxRequests нигде, так что я озадачен, почему он внезапно перезапустился вот так.Я посмотрел на logrotate, monit и другие, чтобы увидеть, есть ли какие-либо внешние процессы, связывающиеся с apache2, но если бы это происходило, я ожидал бы, что все процессы будут иметь одинаковое время безотказной работы.

Действительно довольно странно.Любая подсказка?

1 Ответ

0 голосов
/ 24 сентября 2010

После более тщательного осмотра перезапуски были гораздо более регулярными, чем я первоначально думал. Хотя они были привязаны к определенному времени, они обычно находились на расстоянии около 1 часа в течение последних 3 часов и около 15 минут после часа. Оказывается, есть одна вещь, которая работает 15 после часа на этой коробке: шеф-повар.

Теперь непонятно, почему перезапускается только одно из приложений, а не все. Что я до сих пор не знаю, но там есть возможности. В любом случае, отключите автоматический запуск chef (что я предпочитаю не делать в производственной среде в любом случае), и теперь у меня есть экземпляры, которые работают в течение 5 часов, и небольшое время отклика. Красивые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...