查看 sql server 連接數的指令為:sp_who 、 sp_who active 、sp_who2 和 sp_who2 active ,至于其中的區別,請大家search一下,這里不再解釋了
由于公司最近兩個Web站點做了負載均衡,但是緩存機制仍然是 Asp.Net 自帶的緩存,這樣就導致了每臺Web 服務器內存中都有一份緩存,直接導致了多次請求DB數據庫,造成了DB連接數過高。
由于是兩個較大的站點兩臺服務器做負載均衡(負載平衡),所以,DB 的連接數也飆升,幾乎翻了3倍。
公司DB服務器用的是 Sql Server 2008 R2 ,并且DB服務器配置是相當的強悍的,連接數一度沖擊到740,真是讓人驚嘆不已。雖然鏈接數強悍,但是前臺訪問的頁面 超時的 也是茫茫多,沒辦法,只能采用了緊急處理:
1. 加大程序中的緩存,特別是頁面頭部加上 OutPutCache 緩存。
2. 用上鏡像的備份DB服務器,把2個站點的DB鏈接改到了鏡像的DB,這臺鏡像DB和現在主DB是不在同一個機房的,目標就是容災和在高流量的情況下快速切換
雖然緊急處理了,鏈接數降低了下來,但是通過這次發現,Sql Server 2008 R2 的連接數還是很容易造成性能瓶頸的,瓶頸也就是400左右,超過400,就會造成部分超時等待,但是少于400,就會比較順暢。當然,這個是和服務器配置有關的。
最根本的解決辦法,只能是把 MemberCache 給用上了,哎。