一、使用beego的http library 需要注意,預設情況下maxconnectionsperhost引數為-1,即預設不使用連線池。
問題: 大量併發情況下,http底層的tcp連線得不到重複利用,造成大量的tcp短連線。雖然連線使用之後就會被釋放,但是tcp完全釋放需要一定時間(主要是最後一階段客戶端的time_wait,這個是tcp協議的特性
決定的)導致短時間內客戶端機器積累大量tcp連線,最終「爆倉」出現問題。
解決辦法:設定http使用tcp連線池,golang裡面是自定義乙個transport。主要引數如下:
二、使用beego的orm或者golang-mysql驅動(beego orm實際上就是使用golang-mysql的驅動)需要注意,預設情況下maxidleconns和maxopenconns引數為0,即預設不使用連線池,也不限制連線數。
問題: 1.大量併發情況下,程序與資料庫的tcp連線得不到重複利用,造成大量的tcp連線,超過資料庫支援的最大連線數後報錯 too many connections
2.程式在重複使用資料庫tcp連線池中的某個連線時,該命中連線可能已被伺服器過期丟棄,而客戶端這邊認為該連線為過期,還有效。此時會報錯 invalid connection 。隨後將該連線重連線池中丟棄
解決辦法:1.設定資料庫連線池,以下是beego orm下設定參考:
orm.setmaxidleconns("dbname", number)
orm.setmaxopenconns("dbname", number)
2.設定單個資料庫連線最大生命週期。值得注意的是,beego orm不提供介面直接的設定,需要獲取到orm底層使用的db連線池物件進行引數設定。如下:
db,_ := orm.getdb("dbname")
db.setconnmaxlifetime(time duration)
注意,以上引數均為資料庫連線客戶端引數設定,每個引數都不能超過資料庫伺服器與之相對應的引數值。
tp框架使用心得
我們知道在對資料庫進行update操作時如果對錶資料沒有進行任何修改時是會報錯的,而當我們將結果返回給使用者時,使用者肯定不知道是因為他沒有進行任何操作導致的報錯,他們最直觀的反映就是系統出錯了,接著就是一片惶恐。所以為了防止上述情況的發生,可以試著在表結構中新增乙個update time字段,每次...
jeecg boot 框架 使用心得 筆記
引用自官方手冊 jeecg boot 是一款基於springboot 生成器的快速開發平台!採用前後端分離架構 springboot,mybatis,shiro,jwt,vue ant design。強大的 生成器讓前端和後台 一鍵生成,不需要寫任何 保持jeecg一貫的強大,絕對是全棧開發福音!g...
Beego 框架使用
beego 框架是國人謝孟軍基於go語言net http框架開發的web框架,開發文件比較詳細,beego beego 是典型的mvc架構,也提供了很多模組.比如日誌,cache,效能監測,orm等等並且社群活躍 beego可以用來快速開發api web 後端服務等各種應用,是乙個restful風格...