2012-05-22 94 views
0

我正在研究一個存儲會話信息的Web應用程序,它必須保持活動狀態至少2個小時。 (有點像購物車)。Apache vs Weblogic會話時間

我正在與Apache在多個weblogic實例前工作。 Apache用於緩存+只是一些RR平衡。

在我的web.xml中,我配置了120分鐘的會話時間。

但現在我想了解一下所有這些的Apache設置 像一般的「超時,保持活動,KeepAliveTimeout的」

而且這些,我可以在「平衡配置」,這是目前

中指定

SetHandler WebLogic的處理程序

WebLogicCluster SERV1:PORT1,SER2:端口2

ConnectTimeoutSecs 10

ConnectRetrySecs 2

KeepAliveEnabled ON

KeepAliveSecs 15

WLCookieName WLBALANCECOOKIENAME

所以在這裏我可以指定另一個KeepAliveEnabled/KeepAliveSecs

我必須把一切都放到存活= YES和秒到7200+? 這確保我的2小時會話超時的web.xml將被尊重?

一般的「超時」我可能會放低,因爲從我所瞭解的這是長請求/響應。

回答

2

KeepAlive未鏈接到weblogic上的會話超時。

Apache服務器中的KeepAlive通過使用從Apache插件到WebLogic Server的可重用連接池來提高性能。如果連接處於非活動狀態的時間超過30秒(或用戶定義的時間量),則連接關閉並返回到池中。

不過建議您將KeepAlive設置爲ON並將KeepAliveSecs 15設置爲默認值。

現在解決啓用2小時會話超時的主要問題。注意:2小時的金額很高(默認值只有30分鐘),並且您的Weblogic服務器將使用更多的內存,並保持會話詳細信息。

我假設你依靠Apache來根據用戶的JSESSIONID指向正確的Weblogic服務器。在這種情況下 - Apache會將請求發送到羣集中正確的Weblogic服務器 - 並且用戶的會話將在該服務器上保持活動狀態。除非您切換會話複製,這是另一個內存hogger。

但是要回答你的問題,你應該根據web.xml中的<session-timeout>設置來尊重你的120分鐘。也可以在weblogic.xml中設置它,但重要的是web。xml

+0

感謝您的回覆,所以apache超時和keepalive設置與我從我的理解中瞭解到的我的weblogic會話沒有任何關係。但是我一直在想的是,我會像你說的那樣用SessionID進行負載平衡。但是apache也會記得它會使用sessionId發送一個先前的請求,並且會再次將它發送給同一個請求,但是.. apache記住這個多長時間?哪個Apache設置配置?因爲這個設置也必須超過2小時,所以確保我所有的請求都保持在同一臺服務器上,即使在1小時50分鐘不活動等情況下也是如此。 – gotjee

+0

nope,apache對此視而不見。 apache中的代理插件檢查JsessionId的請求並從中提取serverid。它純粹直通和不記得或映射傳入客戶端請求到出站WebLogic實例。在另一個答案http://serverfault.com/a/364812/37747上看到一個例子 – JoseK