Oracle 应用短连接导致连接风暴
生活随笔
收集整理的這篇文章主要介紹了
Oracle 应用短连接导致连接风暴
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
進一步對上一篇客戶的環境進行排查,發現同步程序是以短連接的形式訪問數據庫,平均每秒70次的連接;通過在測試環境進行批量短連接測試,重現大量
select /*+ connect_by_filtering index(sysauth$ i_sysauth1) */ privilege#, bitand(nvl(option$, 0), 8), grantee#, level from sysauth$ connect by grantee#=prior privilege# and privilege#>0 start with grantee#=:1 and privilege#>0的問題。
(一)
測試環境,并接入EasyDB數據庫管控軟件
(二)
簡單編寫shell腳本,發起大量數據庫連接
(三)
查看EasyDB監控信息,這時各項指標飆升,但是TPS=0,
QPS,邏輯讀明顯上升
Oracle CPU、DBTime明顯上升
主機CPU飆升
基本上是軟解析,和客戶環境遇到的不同
開了DB審計,引起log file sync 等待事件
(四)
分析listener.log 文件,確認每秒發起的連接數
可以看到這段時間監聽每秒都響應了大量的連接請求
(五)
分析AWR報告,看看會有什么變化
因為開了SQL審核,所以有入庫的操作;
最后一條是我們執行的測試SQL;
其他則都是遞歸SQL,大量的遞歸SQL;
但是不存在硬解析,這個客戶環境的現象不一致
(6)
通過測試,重新了數據庫問題,并驗證在未執行 set role 時,同樣會導致;
客戶應用程序存在大量短連接,這會導致數據庫、服務器資源飆升,并且會導致監聽無法響應更多請求;
因客戶的程序已經找不到開發商,目前很難對應用程序進行排查;
cursor_sharing=FORCE,雖然會帶來一些優勢,但官方不建議將此作為長久的優化方式;
提醒客戶更新業務架構,使用長連接,并且自主掌握核心代碼。
總結
以上是生活随笔為你收集整理的Oracle 应用短连接导致连接风暴的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从零学前端第十四讲:AngularJs进
- 下一篇: MySQL学习(四)