2011-01-20 101 views
2

我有一個Web服務器,唯一的任務是運行圖像處理。
Web服務器上的圖像處理加載相同的XML設置文件(最大2MB)。
要保存XML文件加載時間爲每個請求我使用如下結構:使用FastCGI的高負載Web服務器的最佳實踐

  1. web服務器是Apache的(2.2.16)用圖象處理應用程序(C++)MPM prefork的和FastCGI(fcgi_mod)。
  2. 調用圖像處理應用程序加載的XML文件,併產生N個線程,並且每個線程運行:

    thread_func()
    {
    FCGX_InitRequest
    而(真)
    {
    FCGX_Accept_r
    請求(圖像)處理和FCGX_FPrintF/FCGX_PutStr
    FCGX_Finish_r
    }
    }

一個這種模式的弱點是,雖然FCGX_Accept_r和FCGX_Finish_r調用之間在每個Apache進程最多一個線程會做其工作。那麼它是否值得線程只有每個進程(單線程),但增加MaxClients?

預先感謝您:)

回答

0

可以使用fastcgi模塊,它允許每個進程

+1

一個多線程的線程的數量是沒有問題的。我可以爲每個Apache Web服務器進程創建多個線程。問題在於代碼執行在FCGX_Accept_r和FCGX_Finish_r調用之間時是否值得。 – Valentine 2011-01-20 15:38:27