2013-05-10 37 views
1

我已經部署的Apache一個WSGI應用和我有這樣配置的: WSGIDaemonProcess WSGI-pcapi用戶=基團=進程= 2個線程= 15如何計算WSGI的線程和進程?

後我重啓我計數的線程數apache的: ps -efL | grep | grep的-c的httpd

本地Apache是​​只運行一個WSGI應用程序,但數量我得到的回覆是36,我不明白爲什麼。我知道有2個進程和15個線程,這意味着: 15 * 2 + 2 = 32 那麼爲什麼我還有4個?

回答

1

你的意思是你爲什麼每mod_wsgi的守護進程3個額外的。

對於您的配置,將創建15個新線程來處理請求。一個進程中的另外3個是由於:

  1. 進程開始的主線程。它會一直等到收到合適的信號才能關閉該過程。
  2. 一個監視線程,用於檢查某些事件是否發生,哪些會告知進程關閉。
  3. 一個死鎖線程,用於檢查Python解釋器中是否發生死鎖。如果確實發生,它將發送線程(2)將檢測到的事件。線程(2)然後會發送一個信號給進程退出。該信號將被線程(1)檢測到,然後該線程將正常退出該進程並嘗試並正確地清除。

所以額外的線程都是關於確保整個系統在發生各種事情時非常健壯。另外,確保當進程正在關閉時,Python子標記符被正確銷燬,以允許運行已註冊的Python代碼執行自己的清理。