一個簡單處理 Session 爆滿的方法

更新於 2024/03/08閱讀時間約 2 分鐘

Sessions full, service in busy, please wait..


前幾天做整合測試的時候突然遇到一個突然無法登入產品網站的問題,把程式模組單獨拉出來測試又正常,觀察測試報告後發現出現發生登入異常的時間點並不固定,而且只要發生就會連續發生一段時間,程式被中斷掉。後來確認問題在產品網站這邊,因為多個程式都要訪問主機網站導致連線數爆滿主機拒絕接受新連線,所以前端程式才會收不到資料就開始報錯中斷執行。

甚麼是 session

當我們使用端對端的網路連線服務時,例如 HTTP,伺服器端就會為建立一個會議層連線或稱之 Session 來讓雙方保持通訊正常。伺服器端會主動管理 session 數量把通訊結束跟失聯已久的 session 關掉來釋放資源給其他客戶端使用。

等待不失為好方法

雖然每個網站都可以設定連線數的上限跟規則來管理 session 數量,當然我們也可以額外建立監控程序用自己的方式來強化管理 Session 數。

一開始我就打算這麼做,想要多佔用一條連線來提早清除被那些占而不用的網站連線。當我後來發現產品最多只接受 5 個連線數後便打消了此念頭,畢竟要多佔用一個連線數對於開發與執行成本都太高了。還好又注意到主機本身清除 session 的速度還算夠快,於是改用更直覺的方式「等待」,當異常發生後我們只需要多等一段時間可以成功登入。程式碼也因此變得很精簡好懂。

# 當登入異常發生後不確定多久會恢復
# 不確定的偵測方式可以使用無窮迴圈來設計
# 在沒有遭遇例外的狀態下,迴圈只會被執行一次
while True:
# login() 函數最底層呼叫的是 request 元件
# 用 try-except 來捕捉 request 的例外
try:
# 嘗試登入
device.login()
except Exception as err:
# 登入異常發生,等上一段時間
time.sleep(delay)
continue # 繼續嘗試
break # 嘗試成功後就離開

小結

可以把網站的 session 總數類比實體銀行櫃檯,當銀行所有的櫃台都被客戶佔滿的時候,下一個客人就只能保持耐心等待前面的人完成業務離開櫃台後再遞補上去,對雙方都是最省力的做法。畢竟我還不曾遇到有銀行會特別規定每個客人臨櫃只能有多少分鐘的時間辦事,還雇用專人把超時的客人趕走的。

avatar-img
14會員
61內容數
WarrenLo's 軟體設計武功祕笈
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Warren Lo的沙龍 的其他內容
當這產品的這個 API 被呼叫,再從回傳內容的某個欄位欄位來判斷,只要“這個欄位”顯示 false 就代表不支援」,雖然這樣的設計也能滿足功能需求…
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
IDE 升級後出現了一樣的錯誤,手上程式碼沒有 pylint black-format 檢查上不了 gitlab,我又點開了那個很小很小的 x 符號,裡面 logs 提示的解決方式是升級..
在網路上查找可以發現有很多類別圖的 6 種關係的說明與示例,通常不太容易難取得共鳴。主要有兩個原因: 1. 對於這些關係線的定義混淆,導致無法判斷滿足條件與使用時機 2. 缺少生活相關的具體案例,很難理解這些關係所對應的抽象概念
UART 轉換完成的 Serial 訊號已經可以用來傳輸通訊了,那為什麼還要把 UART 轉出來的訊號再轉換成成其他的 Serial 介面,像是 RS232/RS485 再進行傳輸呢?原因是 UART 的 Serial 訊號傳輸的距離實在太短了
Serial 通訊數據必須先在 UART 元件把 Parallel 轉成 Serial,EIA Driver 會把 Serial 轉成特定的 Serial 訊號。UART 數據轉換要考慮兩個關鍵點,如何讓資料從直行變橫列(躺平)的方法,還要考慮如何控制 Serial 訊號輸出
當這產品的這個 API 被呼叫,再從回傳內容的某個欄位欄位來判斷,只要“這個欄位”顯示 false 就代表不支援」,雖然這樣的設計也能滿足功能需求…
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
IDE 升級後出現了一樣的錯誤,手上程式碼沒有 pylint black-format 檢查上不了 gitlab,我又點開了那個很小很小的 x 符號,裡面 logs 提示的解決方式是升級..
在網路上查找可以發現有很多類別圖的 6 種關係的說明與示例,通常不太容易難取得共鳴。主要有兩個原因: 1. 對於這些關係線的定義混淆,導致無法判斷滿足條件與使用時機 2. 缺少生活相關的具體案例,很難理解這些關係所對應的抽象概念
UART 轉換完成的 Serial 訊號已經可以用來傳輸通訊了,那為什麼還要把 UART 轉出來的訊號再轉換成成其他的 Serial 介面,像是 RS232/RS485 再進行傳輸呢?原因是 UART 的 Serial 訊號傳輸的距離實在太短了
Serial 通訊數據必須先在 UART 元件把 Parallel 轉成 Serial,EIA Driver 會把 Serial 轉成特定的 Serial 訊號。UART 數據轉換要考慮兩個關鍵點,如何讓資料從直行變橫列(躺平)的方法,還要考慮如何控制 Serial 訊號輸出
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在秋紅谷靜心進行靈性體驗。透過專注觀察與氣的感受,學會放鬆練習,改善情緒波動,進而整合與調頻陰性能量。
Thumbnail
在探索未知領域的過程中,我們常常面臨自我懷疑與恐懼的挑戰,這是因為我們的心靈與身體習慣於已知與安全的環境,而任何新的挑戰都會引發防衛機制。然而,我們的內在具有無限的潛力和智慧,能夠引導我們克服這些障礙。 當面對新事物時,懷疑和恐懼的出現,其實是一種自我保護,這是因為我們的大腦和心靈正在試圖維持現狀
23039 一個簡單的好人 作者: 許峰源(法羽老師) 這是法羽老師再次的鉅著, 透過去豐富的人生歷練印證了”將自己活成一到光”的最佳範例; 在目前複雜且高壓的社會中注入了一股純粹的光, 值得推薦閱讀. 書摘: 1. 一個心中沒有敵人的人,是最強大的, 因為”善良”. 2. 幫助別人最大的回報, 是
Thumbnail
想要投資一間公司,我們會想要知道它是否處於成長階段,也就是它的營收是否持續增加,它的產品或服務是否有市場需求,它的股價是否有上漲的空間。那麼,你要怎麼判斷呢? 其實,有一個很簡單又有效的指標。
一個簡單的事實: 現在的自己 是過去的妳努力跨出無數個小步伐才到達的成就 試著跨出一小步,再一小步... 最終妳會到達的... 就像妳曾經做過無數次的那樣 另一個事實: 現在的妳已經會的更多 也更有自信和方法去創造屬於自己的現實 這些都是以前的妳無法想像的 記得,邁出ㄧ小步 好過裹足不前 Small
Thumbnail
無數的相遇與無數的離別,總有些令人無法忘懷的人、事、物,無論你遇到的是什麼,每一段的邂逅都應該好好去珍惜。
Thumbnail
刑事案件從告訴狀開始,交由檢察官偵辦,而檢察官接到訴狀之後要展開調查,而檢察官會親自調查嗎?他會交由警察進行實質的調查問訊,交給調查局經由或警察的初步報告,再傳喚告訴人、被告進行偵查庭,從中得到庭上的筆錄自白,或者從告訴人中得到的證據,最終由這些過程中所得到的資訊,作為起訴或不起訴的依據,但是檢察官
人類一個簡單的念頭可以創造城市。一個念頭可以改變世界,重寫規則。 A single idea from the human mind can build cities. An idea can transform the world and rewrite all the rules. -第2612
有錢的人可以投機,錢少的人不可以投機,根本沒錢的人必須投機 。                《一個投機者的告白》科斯托蘭尼 為什麼要做投資? 因為光靠普遍的工資收入累積本金是有難度的。 如果你不是年收入在全台灣前10%的族群,你覺得無腦存多久錢可以達成你想要的目標?
Thumbnail
當你的公司開始創造被動收入工具給外部人員使用時,就是公司營業額將要爆炸性成長的時候---富爸爸資產研究室
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在秋紅谷靜心進行靈性體驗。透過專注觀察與氣的感受,學會放鬆練習,改善情緒波動,進而整合與調頻陰性能量。
Thumbnail
在探索未知領域的過程中,我們常常面臨自我懷疑與恐懼的挑戰,這是因為我們的心靈與身體習慣於已知與安全的環境,而任何新的挑戰都會引發防衛機制。然而,我們的內在具有無限的潛力和智慧,能夠引導我們克服這些障礙。 當面對新事物時,懷疑和恐懼的出現,其實是一種自我保護,這是因為我們的大腦和心靈正在試圖維持現狀
23039 一個簡單的好人 作者: 許峰源(法羽老師) 這是法羽老師再次的鉅著, 透過去豐富的人生歷練印證了”將自己活成一到光”的最佳範例; 在目前複雜且高壓的社會中注入了一股純粹的光, 值得推薦閱讀. 書摘: 1. 一個心中沒有敵人的人,是最強大的, 因為”善良”. 2. 幫助別人最大的回報, 是
Thumbnail
想要投資一間公司,我們會想要知道它是否處於成長階段,也就是它的營收是否持續增加,它的產品或服務是否有市場需求,它的股價是否有上漲的空間。那麼,你要怎麼判斷呢? 其實,有一個很簡單又有效的指標。
一個簡單的事實: 現在的自己 是過去的妳努力跨出無數個小步伐才到達的成就 試著跨出一小步,再一小步... 最終妳會到達的... 就像妳曾經做過無數次的那樣 另一個事實: 現在的妳已經會的更多 也更有自信和方法去創造屬於自己的現實 這些都是以前的妳無法想像的 記得,邁出ㄧ小步 好過裹足不前 Small
Thumbnail
無數的相遇與無數的離別,總有些令人無法忘懷的人、事、物,無論你遇到的是什麼,每一段的邂逅都應該好好去珍惜。
Thumbnail
刑事案件從告訴狀開始,交由檢察官偵辦,而檢察官接到訴狀之後要展開調查,而檢察官會親自調查嗎?他會交由警察進行實質的調查問訊,交給調查局經由或警察的初步報告,再傳喚告訴人、被告進行偵查庭,從中得到庭上的筆錄自白,或者從告訴人中得到的證據,最終由這些過程中所得到的資訊,作為起訴或不起訴的依據,但是檢察官
人類一個簡單的念頭可以創造城市。一個念頭可以改變世界,重寫規則。 A single idea from the human mind can build cities. An idea can transform the world and rewrite all the rules. -第2612
有錢的人可以投機,錢少的人不可以投機,根本沒錢的人必須投機 。                《一個投機者的告白》科斯托蘭尼 為什麼要做投資? 因為光靠普遍的工資收入累積本金是有難度的。 如果你不是年收入在全台灣前10%的族群,你覺得無腦存多久錢可以達成你想要的目標?
Thumbnail
當你的公司開始創造被動收入工具給外部人員使用時,就是公司營業額將要爆炸性成長的時候---富爸爸資產研究室