有一段時間,某數據庫在整點期間總是會發出幾條連接失敗的告警,如下
2019-08-14 10:00:22, 29.211.?.?/??db can not connect, Warning from 5.223-mon_pri_conn.sh! |
1.分析監聽日志發現監聽存在重啟行為
14-AUG-2019 10:00:16 * (CONNECT_DATA=(SERVICE_NAME=dbinst1)(CID=(PROGRAM=sqlplus)(HOST=localhost.bss_rh6_dqjkj01_35.176)(USER=ftpuser))) * (ADDRESS=(PROTOCOL=tcp)(HOST=29.211.35.176)(PORT=19573)) * establish * dbinst1 * 0 TNS-12540: TNS:internal limit restriction exceeded .... 14-AUG-2019 10:00:20 * 12582 ---異常前每秒短連接 11 14-AUG-2019 09:59:55 ---異常整個期間數據庫等待事件正常,無明顯高消耗 |
2.排查問題期間的os負載情況
OSWBB_ARCHIVE_DEST /u01/osw/oswbb/archive zzz ***Wed Aug 14 10:00:10 CST 2019 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 31 6 0 446655712 33212 1998720 0 0 1 3 0 0 1 1 98 0 021 22 0 446779968 35236 2008236 0 0 16300 96 259964 240440 11 3 83 3 0 25 27 0 446795360 37040 2020368 0 0 29096 48 235608 212541 11 3 82 4 0 zzz ***Wed Aug 14 10:00:24 CST 2019 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 6 18 0 443893696 72420 2204804 0 0 1 3 0 0 1 1 98 0 0 13 12 0 444055840 74432 2228936 0 0 22880 16 90258 85804 5 2 88 6 0 6 17 0 444172864 76036 2250128 0 0 19980 100 70041 61176 4 3 86 7 0 zzz ***Wed Aug 14 10:00:36 CST 2019 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 6 20 0 444360928 83052 2341764 0 0 1 3 0 0 1 1 98 0 0 6 24 0 444552928 83740 2098432 0 0 4436 1212 67242 61741 4 3 85 8 0 125 220 0 444898240 84812 2102292 0 0 3892 1544 174504 140362 12 13 55 19 0 1.10秒的時候 r21 b22, 該機器為ssd存儲,平常cpu-b不到5,這里值已經有點異常 2.36秒的時候出現r 125 b220,可能為監聽重啟積壓導致,且異常時間點在監聽重啟后,不能確認是該問題導致故障。 |
top - 10:00:36 up 288 days, 14:24, 2 users, load average: 215.59, 68.64, 29.25 1.近一分鐘load達到215,且較5分鐘、15分鐘load值出現直線上升。 2.通常在linux平臺 load avg為系統整體load, 包含 cpu load, io load等等.簡單理解為 R+D狀態的process,不代表cpu使用率,但load高一定存在某一方面的高負載情況. |
重點排查一下異常期間的ps 數據,排除S(sleep)狀態進程,可以看到大量的IO相關D進程 [oracle@dbserver1 tmp]$ cat /tmp/ps1024.txt | awk {print $1,$9,$10,$13,$14} | sort | uniq -c [oracle@dbserver1 tmp]$ cat /tmp/ps1024.txt | grep 10:00 | awk {print $1,$9,$10,$11,$13,$14} | sort | uniq -c 115 oracle filp_o D 10:00:15 oracledbinst11 (LOCAL=NO) <--------- 10:00:15建立的短連接 115 積壓的大量短連接積處于filp_o 狀態,io可能存在異常 75 oracle filp_o D 10:00:16 oracledbinst11 (LOCAL=NO) 排查ash信息再次確認數據庫負載較低,io響應也在毫秒級,無明顯異常 使用strace跟蹤測試建立連接期間,發現監聽派生 LOCAL=NO進程后會讀取大量的ORACLE_HOME本地lib庫,并進一步排查/u01文件系統狀態 [oracle@dbserver1 tmp]$ cat /tmp/stsqlplus.txt | grep 12.2.0/db [oracle@dbserver1 tmp]$ lsblk ..... zzz ***Wed Aug 14 10:00:11 CST 2019 <-------cpu整體使用率不高,iowait整體也不高Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util <-------- sda-- /u01--ORACLE_HOME文件系統IO居高不下 await出現明顯等待 <--------sda-- /u01--ORACLE_HOME文件系統 iowait持續居高不下 |
1.通過與應用側溝通了解到在整點期間app營業廳會推出搶購活動導致短連接明顯的上升
2.主機管理員反饋由于本地盤RAID出現故障盤導致響應異常,以至于大量短連接掛死在ORACLE_HOME的lib庫讀取上,達到監聽隊列上限值后引發監聽重啟.
1.推進應用程序短連接進行連接池化整改。
2.更換本地盤為SSD存儲提升ORACLE_HOME的讀寫性能。
注:本次故障版本為oracle12.2,在oracle12c之后的版本中,數據庫會持續寫出大量的垃圾trace信息不僅影響IO性能且影響文件系統正常使用率,建議多帶帶指定diag目錄以及使用SSD存儲安裝ORACLE_HOME 。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/130031.html
摘要:更多關于阿里云彈性公網的介紹請移步這里。你下載的版本可能比鋼哥的高,不過安裝步驟是一樣的。總結至此,數據庫的完整開發環境就搭建好了。在接下來的文章里,鋼哥將帶你做進一步的優化,敬請期待。 本文是鋼哥的Oracle APEX系列文章中的其中一篇,完整 Oracle APEX 系列文章如下: Oracle APEX 系列文章1:Oracle APEX, 讓你秒變全棧開發的黑科技 Orac...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20