Oracleに短い接続を適用すると、接続の嵐が発生します.

3041 ワード

テキストリンク:https://yq.aliyun.com/articles/682417
さらに、前のお客様の環境を調べてみると、同期プログラムは短い接続の形でデータベースにアクセスし、平均して毎秒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データベース管理ソフトウェアにアクセスする
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 - Production

sys@ORCL> show parameter audit

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/orcl/adu
                                                 mp
audit_sys_operations                 boolean     FALSE
audit_syslog_level                   string
audit_trail                          string      DB

sys@ORCL> show parameter cursor_sharing

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cursor_sharing                       string      EXACT

(二)shellスクリプトを簡単に作成し、大量のデータベース接続を開始する
#more /home/oracle/connect.sh 

for i in {1..200000}
do
  for j in {1..40}
  do  
     sh /home/oracle/conn.sh
  done
done

#more /home/oracle/conn.sh
# , 
 sqlplus baiyang/oracle@orcl << EOF
  select * from v\$version;
  exit;
  EOF
 
# job , ,  
 nohup sh connect.sh > /dev/null 2>&1&

(3)EasyDBモニタリング情報を見ると、このとき各指標は急上昇したが、TPS=0、QPS、論理読みは明らかに上昇したOracle CPU、DBTimeは明らかに上昇したホストCPUの急上昇は基本的にソフト解析であり、顧客環境と遭遇した違いはDB監査を開き、log file sync待機事件を引き起こした(4)分析listener.logファイル、1秒あたりの接続数を確認
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
#  

この時間の傍受は毎秒大量の接続要求に応答している(5)AWR報告を分析し、SQL監査を開いたため、入庫する操作があるかどうかを見ることができます.最後は私たちが実行したテストSQLです.その他はすべて再帰SQLで、大量の再帰SQLです;しかし、ハード解析は存在せず、この顧客環境の現象が一致しない(6)テストに合格し、データベースの問題を再確認し、set roleを実行していない場合も、同様に発生することを検証する.クライアント・アプリケーションには短い接続が多数存在し、データベース、サーバ・リソースが急上昇し、リスニングがより多くのリクエストに応答できなくなります.お客様のプログラムは開発者が見つからないため、アプリケーションの調査が難しい.cursor_sharing=FORCEは、いくつかのメリットをもたらしますが、政府はこれを長期的な最適化方法として提案していません.お客様にビジネスアーキテクチャを更新し、長い接続を使用し、コアコードを自主的に把握するように注意します.