我最近一直在使用我们的乘客设置,并通过NewRelic的RPM监控我们的应用程序。截至上周,我注意到我们的应用程序的生产版本大约每小时重启一次(并不精确到每小时重启一次,它看起来是随机的,而且只发生在白天,我可以判断-尽管晚上很少有请求,所以我从来没有看到启动的闪光点)。然而,同一台机器上的其他网站却不这样做。
看一看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 0ruby_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,但如果发生这种情况,我希望所有进程都有相同的正常运行时间。
真的很奇怪。有什么线索吗?
发布于 2010-09-24 04:01:03
在仔细检查之后,重新启动比我最初想象的要规则得多。虽然它们与特定的时间挂钩,但在过去的3小时内,它们通常相隔1小时左右,在一小时后的15分钟左右。原来在那个盒子上有一样东西会在一小时后运行15分钟:厨师。
现在令人困惑的是,为什么它只重启其中一个应用程序,而不是所有应用程序。我仍然不知道,但这里面有可能。无论哪种方式,禁用chef自动运行(我不喜欢在生产中这样做),现在我的实例运行了5个小时,并且响应时间很短。漂亮的。
https://stackoverflow.com/questions/3778961
复制相似问题