2011-06-29 29 views
2

我們有一個與幾個後端Web服務集成的cherrypy服務。在負載測試期間,經過一段時間(45分鐘)後,cherrypy進程會定期崩潰。我們知道瓶頸是我們正在使用的後端Web服務。在崩潰之前,我們在訪問後端服務時會看到500和503錯誤,但我無法確定爲什麼cherrypy本身會崩潰(整個過程被終止)。你可以給我一些想法如何調查問題出在哪裏? thread_poll(50)是否可能排隊過多的請求?如何調查cherrypy崩潰?

+0

CherryPy在崩潰時拋出任何異常嗎? 您是否在任何地方使用multiprocessing.Queue? –

回答

0

在我早期的CherryPy日子裏,我曾經崩潰過一次。我的意思是由段錯誤引起的Python進程崩潰。當我調查它時,我發現我混淆了MySQLdb連接,將它們緩存在由CherryPy線程交互訪問的對象中。由於MySQLdb連接不是線程安全的,因此只能從創建的線程訪問。另外,由於併發性,崩潰似乎不確定,只出現在負載測試中。因此負載測試可以在這裏用作調試工具 - 試試Apache JMeterLocust(Pythonic)。

當一個進程崩潰時,你可以指示Linux寫一個堆棧跟蹤的核心轉儲(例如在我的例子中的MySQLdb C代碼端)。然而,外部的低級C環境對你來說(這是對我來說),堆棧跟蹤可以幫助找到導致崩潰的庫,或者至少縮小犯罪嫌疑人的圈子。這裏是an article about it

另外我想說明的是CherryPy不太可能出現問題。它實際上非常穩定。