日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 应用短连接导致连接风暴

發(fā)布時間:2025/3/18 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 应用短连接导致连接风暴 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

進一步對上一篇客戶的環(huán)境進行排查,發(fā)現(xiàn)同步程序是以短連接的形式訪問數(shù)據(jù)庫,平均每秒70次的連接;通過在測試環(huán)境進行批量短連接測試,重現(xiàn)大量

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

的問題。
(一)
測試環(huán)境,并接入EasyDB數(shù)據(jù)庫管控軟件

sys@ORCL> select * from v$version;BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Production CORE 11.2.0.4.0 Production TNS for Linux: Version 11.2.0.4.0 - Production NLSRTL Version 11.2.0.4.0 - Productionsys@ORCL> show parameter auditNAME TYPE VALUE ------------------------------------ ----------- ------------------------------ audit_file_dest string /u01/app/oracle/admin/orcl/adump audit_sys_operations boolean FALSE audit_syslog_level string audit_trail string DBsys@ORCL> show parameter cursor_sharingNAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cursor_sharing string EXACT

(二)
簡單編寫shell腳本,發(fā)起大量數(shù)據(jù)庫連接

#more /home/oracle/connect.sh for i in {1..200000} dofor j in {1..40}do sh /home/oracle/conn.shdone done#more /home/oracle/conn.sh #只執(zhí)行簡單的查詢操作,之后退出sqlplus baiyang/oracle@orcl << EOFselect * from v\$version;exit;EOF#發(fā)起多個job執(zhí)行,加大并發(fā),執(zhí)行將近一個小時 nohup sh connect.sh > /dev/null 2>&1&

(三)
查看EasyDB監(jiān)控信息,這時各項指標飆升,但是TPS=0,
QPS,邏輯讀明顯上升

Oracle CPU、DBTime明顯上升

主機CPU飆升

基本上是軟解析,和客戶環(huán)境遇到的不同

開了DB審計,引起log file sync 等待事件

(四)
分析listener.log 文件,確認每秒發(fā)起的連接數(shù)

grep '26-DEC-2018' listener.log | sed 's/\*.*SERVICE_NAME=/ /g;s/).*HOST=/ /g;s/).*$//g' | awk '{if(NF==4){print "insert into t_tab values('\''"$1"'\'','\''"$2"'\'','\''"$3"'\'','\''"$4"'\'');"}}' > connect.txt # 入庫 @/u01/app/oracle/diag/tnslsnr/172-16-8-141/listener/trace/connect.txt # 查詢?nèi)缦?


可以看到這段時間監(jiān)聽每秒都響應了大量的連接請求
(五)
分析AWR報告,看看會有什么變化

因為開了SQL審核,所以有入庫的操作;
最后一條是我們執(zhí)行的測試SQL;
其他則都是遞歸SQL,大量的遞歸SQL;
但是不存在硬解析,這個客戶環(huán)境的現(xiàn)象不一致

(6)
通過測試,重新了數(shù)據(jù)庫問題,并驗證在未執(zhí)行 set role 時,同樣會導致;
客戶應用程序存在大量短連接,這會導致數(shù)據(jù)庫、服務器資源飆升,并且會導致監(jiān)聽無法響應更多請求;
因客戶的程序已經(jīng)找不到開發(fā)商,目前很難對應用程序進行排查;
cursor_sharing=FORCE,雖然會帶來一些優(yōu)勢,但官方不建議將此作為長久的優(yōu)化方式;
提醒客戶更新業(yè)務架構(gòu),使用長連接,并且自主掌握核心代碼。

總結(jié)

以上是生活随笔為你收集整理的Oracle 应用短连接导致连接风暴的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。