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

更新於 發佈於 閱讀時間約 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
15會員
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
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
標示全部為已讀失效 最近發現留言系統中,"標示全部為已讀"的速度明顯變慢,甚至有時會失效。許多使用者都報告遇到了相同的問題。這實際上是程式設計中一個常見的漏洞。系統沒有充分考慮到整體容量問題與效能,才導致了這樣的情況。(實際原因待查,此處僅為一般解說),當系統開始顯示緩慢或出現其他問題時,通常
中文網站介面 測試:安著手機、蘋果電腦。 瀏覽器:皆是Google瀏覽器。 結果:過多人使用時即使登入系統也無法查看訂單和購物車,但過一陣子會自動更新變回正常。
Thumbnail
由於電腦突然出現故障,導致檔案丟失以及電腦無法正常使用,故今日臨時停更一次,沿至下禮拜五更新
Thumbnail
大約11點15分左右,突然臉書被登出,就無法登入了。本來一直以為是我密碼記錯,後來驚覺是不是帳號被盜。弄了大約半小時,還是無法登入。 . 後來就想說來看看「Threads」有沒有人反應,結果無法登入。 心想應該是災情了 來看看「IG」上怎麼說,也是無法登入。 . 還好谷歌沒當,搜尋
Thumbnail
這已經不是我第一次見到Internal Server Error了,去年的10月也發生過一次。那個時候是尋求協助,但印象是尋求到不是負責這個事情的窗口,但是不對的窗口仍舊直接幫我處理掉問題。所以就到此為止。
之前使用發佈預排功能,試了幾次,文章並未顯示於沙龍, 此篇為再測試使用,無法事先預排真的不太方便
Thumbnail
在半夜時,我看到那曾經天天登入的網站呈現此畫面 忽然有點感傷,我剛才回覆一些留言,結果正想說要加那位網友的時候,網站就進不去了。哎呀、我太慢了(哭)。然而我只是一個剛加入的菜鳥而已,想到那些在裡面耕耘了幾年的人,他們的心情一定比我更加的複雜。 前天在那邊聊天室看到網友提到方格子,我才發現
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
標示全部為已讀失效 最近發現留言系統中,"標示全部為已讀"的速度明顯變慢,甚至有時會失效。許多使用者都報告遇到了相同的問題。這實際上是程式設計中一個常見的漏洞。系統沒有充分考慮到整體容量問題與效能,才導致了這樣的情況。(實際原因待查,此處僅為一般解說),當系統開始顯示緩慢或出現其他問題時,通常
中文網站介面 測試:安著手機、蘋果電腦。 瀏覽器:皆是Google瀏覽器。 結果:過多人使用時即使登入系統也無法查看訂單和購物車,但過一陣子會自動更新變回正常。
Thumbnail
由於電腦突然出現故障,導致檔案丟失以及電腦無法正常使用,故今日臨時停更一次,沿至下禮拜五更新
Thumbnail
大約11點15分左右,突然臉書被登出,就無法登入了。本來一直以為是我密碼記錯,後來驚覺是不是帳號被盜。弄了大約半小時,還是無法登入。 . 後來就想說來看看「Threads」有沒有人反應,結果無法登入。 心想應該是災情了 來看看「IG」上怎麼說,也是無法登入。 . 還好谷歌沒當,搜尋
Thumbnail
這已經不是我第一次見到Internal Server Error了,去年的10月也發生過一次。那個時候是尋求協助,但印象是尋求到不是負責這個事情的窗口,但是不對的窗口仍舊直接幫我處理掉問題。所以就到此為止。
之前使用發佈預排功能,試了幾次,文章並未顯示於沙龍, 此篇為再測試使用,無法事先預排真的不太方便
Thumbnail
在半夜時,我看到那曾經天天登入的網站呈現此畫面 忽然有點感傷,我剛才回覆一些留言,結果正想說要加那位網友的時候,網站就進不去了。哎呀、我太慢了(哭)。然而我只是一個剛加入的菜鳥而已,想到那些在裡面耕耘了幾年的人,他們的心情一定比我更加的複雜。 前天在那邊聊天室看到網友提到方格子,我才發現