session效能問題

2021-07-16 21:22:56 字數 651 閱讀 4050

注意效能和可伸縮性的概念區別:

什麼是效能問題?如果你的系統對於乙個使用者訪問還很慢,那就是效能問題;

什麼是可伸縮性問題?如果你的系統對乙個使用者來說是快的,但是在高訪問量下就慢了。

在單機(jvm)環境下效能不會受影響, 如果你的業務訪問量比較大, 需要集群環境/分布式時, session複製會導致網路風暴, 也就是說依賴session會使得應用un-scalable;

具體解釋:其實是因為session + 狀態是不可伸縮的。

詳細點是這樣:如果你在session中儲存乙個與該客戶端有關的狀態,比如狀態數值為1,下次該客戶端再發乙個請求時,需要到自己的session中尋找這個數值為1的狀態。

在分布式環境中有兩種辦法:

如果下次該客戶端發出的請求不是訪問的是上次請求的伺服器,那麼他在新伺服器中就找不到數值為1的狀態,因為被負載平衡器隨機分配到新伺服器上了。

為了讓他找到數值1的狀態,那麼就在這兩台伺服器之間拷貝session中的狀態,數值1的狀態從原來伺服器拷貝到新伺服器,第二次請求就能在新伺服器上找到這個數值為1的狀態。但來這樣做的問題是:伺服器就會耗費負載來處理伺服器之間的拷貝,根本沒有全心全意處理客戶端發出的請求,嚴重發生風暴堵塞。

重用Session提高https效能

https的主要缺點是需要設定連線,每次新的tls連續都需要握手,以便建立共享的加密金鑰,這個握手過程在標準tcp的握手過程之上還需要兩個額外的來回過程,用這樣乙個高延時的連線,在 第乙個位元組傳輸之前需要三個來回就讓人感覺這個 有點慢。tls有幾個特徵可以用來消除額外的來回,比如重用乙個會話ses...

session共享問題

http協議是無狀態的 第一次訪問會生成jsessionid儲存在tomcat的concurrentmap裡伺服器,把jsessionid寫到客戶端的cookie裡面。關於cookie和session的聯絡 cookie中會包含哪些資訊 名字 值 過期時間 路徑 域 cookie會帶到http請求偷...

session建立問題

當程式需要為某個客戶端的請求建立乙個session的時候,伺服器首先檢查這個客戶端的請求裡是否已包含了乙個session標識 稱為 session id,如果已包含乙個session id則說明以前已經為此客戶端建立過session,伺服器就按照session id把這個 session檢索出來使用...