Ruby on rails 在特定乘客流程上奇数重新启动
我最近一直在使用我们的乘客设置,并通过NewRelic的RPM监控我们的应用程序。截至上周,我注意到我们的应用程序的生产版本大约每小时重启一次(并不是精确到每小时重启一次,这似乎是随机的,而且只发生在白天,我能分辨出来——尽管晚上很少有请求,所以我从来没有看到启动的光点)。但是,同一框中的其他站点没有 查看Ruby on rails 在特定乘客流程上奇数重新启动,ruby-on-rails,passenger,Ruby On Rails,Passenger,我最近一直在使用我们的乘客设置,并通过NewRelic的RPM监控我们的应用程序。截至上周,我注意到我们的应用程序的生产版本大约每小时重启一次(并不是精确到每小时重启一次,这似乎是随机的,而且只发生在白天,我能分辨出来——尽管晚上很少有请求,所以我从来没有看到启动的光点)。但是,同一框中的其他站点没有 查看乘客状态我看到: ----------- Domains ----------- /web/marketing/current: PID: 2897 Sessions: 0
乘客状态
我看到:
----------- 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_包装看起来像:
#!/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" "$@"
据我所知,passengerpolidletime 0
应该可以防止应用程序超时。据我所知,演示实例和生产实例之间唯一的区别是prod-one的调用频率要高出很多。然而,我并没有在任何地方设置PassengerMaxRequests
,所以我不明白为什么它会突然像这样重新启动。我查看了logrotate、monit和其他程序,看看是否有任何外部进程干扰apache2,但如果发生这种情况,我希望所有进程都具有相同的正常运行时间
真的很奇怪。有什么线索吗?仔细检查后,重新启动比我最初想象的要规律得多。虽然他们被固定在一个特定的时间,但在过去的3小时里,他们通常相隔1小时左右,一小时后大约15分钟。结果有一样东西在那个盒子上每小时15点后运行:厨师
现在令人困惑的是,为什么它只会重新启动其中一个应用程序,而不是所有应用程序。我仍然不知道,但有可能。不管是哪种方式,禁用chef自动运行(无论如何我不希望在生产环境中这样做),现在我的实例可以运行5个小时,而且响应时间很短。漂亮。还选中了tmp中的restart.txt。自从上次部署后就没有被碰过。