2011-02-01 25 views
0

希望這是一個簡單的問題,因爲我是相當新到Apache的內部運作。對於那些不熟悉FCGI的人來說,它會創建一個cgi進程,在請求之間繼續運行,有效地創建一個持續時間長達用戶需求的實例。它通過啓動一個可執行的cgi文件並將未來的請求引導到正在運行的程序(據我瞭解)來完成此操作。阿帕奇(FCGI?)會話分配

我的問題是這樣的嗎?有沒有辦法讓apache爲每個新用戶(由Cookie,IP地址等決定)爲該程序創建一個新實例,然後將該用戶的後續請求重定向到同一進程他們初始化? I.E.

user1 requests test.fcgi
user1 creates PID 100
user2 requests test.fcgi
user2 creates PID 101
user1 requests test.fcgi
user1 directed to running PID 100
user2 requests test.fcgi
user2 directed to running PID 101

如果需要新的模塊或已經存在的程序,這很好。如果這是我必須自己編碼的東西,你能指點我開始的正確方向嗎?

詳情:我是一個EC2的機器上運行的Apache 2.2.12從Ubuntu軟件倉庫安裝中的libapache2-MOD-fcgid。

謝謝

+0

你肯定不希望爲每個用戶單獨的進程?否則,如果你有1000個唯一訪問者,你將有1000個進程在運行。也許你的意思是多個訪問者共享一個過程是可以接受的,但是每個訪問者都應該在每次訪問時都映射到相同的過程。 – mgiuca 2011-02-01 02:28:01

+0

我們需要用戶能夠獨立運行程序,但能夠保持運行會話。理想情況下,我們會有嚴格的處理器使用限制,超時限制,並且我們會利用EC2網絡的雲負載分配。這似乎是沒有請求隊列的唯一方法。 – vityav 2011-02-01 02:40:31

回答

1

不,你沒有得到會議的親和力FastCGI的,由於(在這幾乎總是使用的配置),所有的子進程正在偵聽同一插座上,並依靠內核分配連接到他們,有沒有無用的方法將其添加到網絡服務器。您需要將每個子進程視爲自己的後端,並使用自己的套接字,然後才能對子進程執行會話關聯。

更好的主意:不要讓需要在各個進程的用戶的狀態;堅持它在這個過程之外。這幾乎是什麼會話