2014-10-31 84 views
4

我在Heroku上運行一個基本的Rails 4(紅寶石2.1.4)應用程序與彪馬的配置如下:的Heroku的Rails 4彪馬應用產卵額外的實例

workers Integer(ENV['PUMA_WORKERS'] || 1) 
threads Integer(ENV['MIN_THREADS'] || 6), Integer(ENV['MAX_THREADS'] || 6) 

我目前沒有任何ENV瓦爾因此我應該對1名工人違約。

問題是,在調查潛在的內存泄漏時,似乎我的web.1 dyno的2個「實例」正在運行,至少根據NewRelic。

我有heroku實驗室:啓用日誌運行時指標啓用,它顯示我的內存佔用大約400MB。在NewRelic上,它展示了我在2個「實例」的200MB AVG下的足跡。

heroku:ps顯示:

=== web (1X): `bundle exec puma -C config/puma.rb` 
web.1: up 2014/10/30 13:49:29 (~ 4h ago) 

那麼,爲什麼會想到NewRelic的我有2個實例運行?如果我做一個heroku:重新啓動NewRelic只會看到1個實例,然後碰到2.這是Heroku做的事情,但沒有向我報告,或者它是彪馬的事情,即使工人應該被設置爲1.

+0

我有幾乎相同的問題(我有2個Heroku的DYNOS,1名彪馬工人,顯示出4個實例)。任何解決方案呢? – 2015-02-05 16:47:26

回答

2

請參閱2015年2月17日發佈的New Relic 3.10.0.279,它在跟蹤Puma實例時解決了這個特定問題。我猜是因爲你的應用程序在Heroku上運行,你的Puma配置文件中設置了preload_app!,所以這應該適用。

從發行說明:

指標不再從彪馬主流程的報道。 當使用Puma的集羣模式和preload_app!配置指令中,代理將不再在Puma主進程中啓動其報告線程。這應該會導致實例計數更準確,並且會導致Ruby VM頁面上更準確的統計信息(因爲主進程將被排除)。

我正在測試一個項目的更新與一個類似的問題,它似乎更準確地報告。

1

這是因爲彪馬總是有一個主人的過程,所有的工人都從中產生。

因此,實例計數將來自以下幾點:

1 (master process) + <N_WORKER>