服務端關閉session的重要性

2021-07-24 09:25:08 字數 992 閱讀 5324

如果乙個服務不需要session的話,盡量要將session關閉。

作為一名服務端開發者,在現如今敏捷開發的年代,都會選擇使用框架來進行開發,但是許多框架有自己的預設配置規則,比如php語言的thinkphp3.2框架,會預設開啟session會話。但就是這樣乙個不起眼的小配置,卻可能導致整台伺服器出現問題,甚至服務掛掉。

原因如下:

如果你的站點是乙個每日請求上百萬級規模的介面服務,

每一次請求(這裡應該是沒有攜帶cookie的請求)都會在服務端產生乙個session會話,也就是乙個小檔案。

一般而言,php的session檔案很小,所以檔案本身大小不容易將磁碟打滿,

但是,由於請求過於頻繁,session檔案的個數會暴漲,容易將 inode打滿,(inode:存放檔案資訊的空間)

當inode被打滿後,會導致系統無法在硬碟上建立新檔案,會使得整個服務在含有建立新檔案這一環節崩掉,(比如:apache pid檔案無法建立,等等)

另外,對於服務端運維而言,一旦發現伺服器無法正常提供服務,首先是檢視各個硬體指標有沒有過載,然後檢視各個服務元件;所以很難第一時間定位為inode被打滿的問題;

解決方法:

1、定位inode被打滿,以及定位是session會話檔案過多造成的問題,方法如下:

(1)、df -i  檢視inode使用量(這一步可以定位是否是inode被打滿所導致的問題)

(2)、tree (檢視是哪些檔案占用過多) (如果上一把成立,這一步可以定位是哪些檔案導致inode被打滿)

2、處理session會話:

(1)、如果該服務不需要session會話:則關閉session;

(2)、如果該服務需要session會話,建議請求介面的客戶端攜帶cookie,服務端對inode做監控,清理過期的session檔案。

另外,關閉session的好處還有:

1、減小伺服器的開銷

2、session檔案過多也會大量占用磁碟

服務端會話技術Session

session 主菜 1.概念 伺服器端會話技術,在一次會話的多次請求間共享資料,將資料儲存在伺服器端的物件中。httpsession 2.快速入門 1.獲取httpsession物件 2.使用httpsession物件 object getattribute string name void se...

服務端之Session和Cookie原理

1 身份認證,登陸 2 資源授權,授權 可以訪問什麼,不能訪問什麼?rabc 3 驗證是否登陸 可以用過濾器fillter驗證是否登陸,登陸的標誌是什麼呢?token 比如說我們第一次登陸了,但是對於伺服器來說只是一次post請求而已,第二次再來,還是乙個新請求。如果還讓登陸,使用者體驗是非常差的。...

HTTP服務端JSON服務端

最後更新日期 2014 5 18 author kagula 內容簡介 cppcms是個開源web開發框架,通過它可以很容易實現http服務和json服務,這裡介紹cppcms開發環境的搭建。寫乙個cppcms測試程式,它建立http服務,向瀏覽器返回hello,world頁面。cppcms依賴的一...