我有一個運行在nginx/passenger上的生產ruby sinatra應用程序,而且我經常看到請求會被莫名其妙地拖延。我寫了一個腳本,每10秒鐘在我的機器羣集上調用乘客狀態,並將結果繪製在圖上。這是我所看到的:如何在乘客上的所有正在運行的紅寶石線程上獲取堆棧跟蹤
藍線表示全球排隊等候不斷飆升到60這是跨4臺機器的平均,所以當藍線打60,這意味着每臺機器刷爆出。我將當前的passenger_max_pool_size設置爲20,因此它達到最大池大小的3倍,然後推測會丟棄後續請求。
我的應用依賴於兩個關鍵的外部資源 - Amazon RDS mysql後端和Redis實例。也許其中一個定期變得緩慢或無響應,從而導致這種行爲?
任何人都可以告訴我如何獲得堆棧跟蹤,看看這裏的瓶頸是亞馬遜RDS,Redis,還是其他?
謝謝!
我能知道多久的等待? AFAIK,自動保存應該在後臺進行,並且應該只在複製內存頁面時延遲,這應該是300ms以上。 – seppo0010 2011-02-01 02:03:29