1. 程式人生 > >log file sync 等待超高一例子

log file sync 等待超高一例子

轉自:http://www.killdb.com/2014/04/20/log-file-sync-%E7%AD%89%E5%BE%85%E8%B6%85%E9%AB%98%E4%B8%80%E4%BE%8B%E5%AD%90.html

這是3月份某客戶的情況,原因是伺服器硬體故障後進行更換之後,業務翻譯偶爾出現提交緩慢的情況。我們先來看下awr的情況。

我們可以看到,該系統的load profile資訊其實並不高,每秒才21個transaction。先來看看top5events:

從top 5event,我們可以發現,log file sync的avg wait非常之高,高達124ms。大家應該知道,對於絕大多數情況

下,log file sync的平均等待時間是小於5ms的,這個值有點高的離譜。

我們知道,產生log file sync等待的原因有很多。關於log file sync,tanel Poder大神寫過一篇很牛的pdf,大家可以參考下。

這裡我主要引用大神的圖,來簡單描述產生log file sync的原因可能有哪些,首先我們來看下從前端程序提交到最後得到反饋時,以及中間處理的整個流程情況:

從上圖中,我們可以清楚的看到整個流程。這裡可以進行簡單的描述:

1、當user發起一個commit後;

2、前端程序(即Server 程序)會post一個資訊給lgwr程序,告訴它,你應該去寫redo buffer了。

3、當LGWR程序得到指示後,開始呼叫作業系統函式進行物理寫,在進行物理寫的這段時間內,會出現

log file parallel write等待。這裡或許有人會有疑問,為什麼12c之前只有一個lgwr程序,這裡卻是parallel

write呢?這裡需要說明一下,lgwr程序在將redo buffer中的資料寫出到log file檔案中時,也是以batch方式

程序的(實際上,dbwN程序也是batch的模式),有相關的隱含引數控制。

4、當LGWR完成wrtie操作之後,LGWR程序會返回一個資訊給前端程序(Server程序),告訴它,我已經寫完了,

你可以完成提交了。

5.   user 完成commit操作。

這裡補充一下,這是由於Oracle 日誌寫優先的原則,假設在commit之前redo buffer的相關entry資訊不立即寫到redo

log file中,那麼如果資料庫出現crash,那麼這是會丟資料的。

從上面的流程圖,我們其實也可以看到,log file sync和log file parallel write可以說是相互關聯的。換句話講,如果log file parallel write的時間很長,那麼必然導致log file sync等待時間拉長。

我們假設log file parallel write 等待很高,那麼著可能通常是物理磁碟IO的問題,如下:

我們從上圖可以發行,如果LGWR程序在完成IO操作的過程中時間過長,那麼將導致log file parallel write等待升高。

實際上,在整個當用戶發出commit到完成commit的過程中,涉及到很多環節,並不是僅僅只有物理IO會影響log file sync/log file parallel write。還有CPU也會影響Log file sync和log file parallel write。我們再來看個圖:

我們可以看到,上述流程中的4個環節都涉及到CPU的排程,如果在整個事務commit的過程中,系統CPU出現極度緊張,那麼這可能會導致LGWR程序無法獲得CPU,會進行排隊等待,顯然,這勢必將導致log file sync或log file parallel write等待

的升高。

備註:Oracle中還可以通過隱含引數_high_priority_processes 來控制程序獲取CPU的優先順序。在一個cpu相對缺乏的系統中,可以通過設定該引數來進行緩解。

最後我們再回到這個案例中來,客戶這裡的環境,我們是可以排除CPU問題。那麼最大的嫌疑可能就是儲存本身的問題,導致IO很慢,然而,實際上這也是可以排除的,大家其實應該注意到前面的Top 5 event了,log file parallel write的平均等待

時間並不高,如果是儲存IO問題,那麼這個event的平均等待時間應該是比較高才對。

我們可以看到log file sync和log file parallel write的waits都是差不多的。但是log file parallel write的avg wait time僅僅只有4ms,這是一個正常的值。也就是說可以我們排除儲存IO問題。

那麼問題是什麼呢 ?我們利用Oracle MOS提供的指令碼來查詢下log file sync和log file parallel write等待的分佈情況:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 INST_ID EVENT                                    WAIT_TIME_MILLI WAIT_COUNT ---------- ---------------------------------------- --------------- ---------- 1 log file sync                                          1     259306 1 log file sync                                          2    2948999 1 log file sync                                          4    1865918 1 log file sync                                          8     173699 1 log file sync                                         16      43194 1 log file sync                                         32       6095 1 log file sync                                         64       1717 1 log file sync                                        128       2458 1 log file sync                                        256       5180 1 log file sync                                        512       9140 1 log file sync                                       1024     558347 1 log file parallel write                                1       5262 1 log file parallel write                                2    4502377 1 log file parallel write                                4    1319211 1 log file parallel write                                8      46055 1 log file parallel write                               16      23694 1 log file parallel write                               32       3149 1 log file parallel write                               64        283 1 log file parallel write                              128        267 1 log file parallel write                              256        157 1 log file parallel write                              512         73 1 log file parallel write                             1024         42 1 log file parallel write                             2048         39 1 log file parallel write                             4096        103 1 log file parallel write                             8192         21 1 log file parallel write                            16384         22 1 log file parallel write                            32768        190 1 log file parallel write                            65536          1

大家可以簡單的計算一下,其實log file sync和log file parallel write 等待事件,幾乎99%左右的平均等待時間都是

小於等於4ms的,這是屬於正常的情況;然而有少數的情況其等待時間是很長的,例如log file sync最高的單次等待

時間高達1秒,由於偶爾的等待很高,因此將整個log file sync的平均等待時間拉高了。

到最後,問題就比較清楚了,我認為這是由於主機和儲存之間的鏈路可能出現異常或不穩定導致。臨時的解決方法

將redo logfile 挪到本地磁碟,解決了該問題。

後記:經客戶後面確認,確實是儲存光纖線介面鬆了。 哈哈


相關推薦

log file sync 等待超高例子

轉自:http://www.killdb.com/2014/04/20/log-file-sync-%E7%AD%89%E5%BE%85%E8%B6%85%E9%AB%98%E4%B8%80%E4%BE%8B%E5%AD%90.html 這是3月份某客戶的情況,原因是伺

生產環境 direct path read 與log file sync等待事件問題處理

!= 產生 nbsp 了解 idt buffer file rom .net 1. 2018-09-26 前7天awr報告(此期間 oracle 使用率為 4,022.34/6,179.76/24=2.71%) 由此看出最顯著問題是 log file sync 等待事件,查

ORACLE AWR報告之 log file sync等待事件優化的總結【轉自ITPUB】

 來自白大師(白鱔)對log file sync等待事件優化的總結,供各位puber們學習參考:一、  log file sync平均等待事件時間超過7ms,如果等待時間過長,說明log write每次寫入的時間過長,如果能夠優化redo日誌檔案儲存,使之存放在更快的磁

log file sync等待事件和log file parallel write等待事件

本文主要轉載魏興華大師在itpub上的一篇帖子,由於csdn禁止itpub的連結,就不貼了: log file sycn是ORACLE裡最普遍的等待事件之一,一般log file sycn的等待時間都非常短 1-5ms,不會有什麼問題,但是一旦出問題,往往都比較難解決。什麼

log file sync等待超高一例

這是3月份某客戶的情況,原因是伺服器硬體故障後進行更換之後,業務翻譯偶爾出現提交緩慢的情況。我們先來看下awr的情況。 我們可以看到,該系統的load profile資訊其實並不高,每秒才21個transaction。先來看看top5events: 從top 5e

Oracle資料庫由dataguard備庫引起的log file sync等待

導讀:最近資料庫經常出現會話阻塞的報警,過一會又會自動消失,昨天晚上恰好發生了一次,於是趕緊進行了檢視,不看不知道,一看嚇一跳,發現是由dataguard引起的log file sync等待。我們知道,通常log file sync等待都是由頻繁寫日誌造成的,這次居然是由DG環境引起的。(一)問題描述資料庫:

oracle之 等待事件LOG FILE SYNC (awr)優化

dlink append 訪問性 wak date 告訴 wakeup 優先級 led log file sycn是ORACLE裏最普遍的等待事件之一,一般log file sycn的等待時間都非常短 1-5ms,不會有什麽問題,但是一旦出問題,往往都比較難解決。什麽時候會

log file sync(日誌檔案同步) 與 Log file parallel write 等待事件

log file sync(日誌檔案同步)等待事件具有一個引數:buffer#。在Oracle Database 10g中,這種等待事件位於Commit等待下面。當處理log file sync等待事件時,注意下面的思想:◎ log file sync 等待時間和事務中指(

等待事件:log file sync

log file sync:該等待事件發生在redo log 從 log buffer寫入到log file期間        當用戶程序提交時,會通知LGWR將redo buffer寫入到redo file中,當LGWR程序完成寫入操作後,LGWR在通知使用者程序寫入完成;

自適應log file sync影響案例

Oracle最吸引人的地方,就是有些答案,隱藏在種種現象之中,撲朔迷離,朦朦朧朧,就像偵探辦案,首先要有思路,其次要有證據,再者就是紮實的基礎知識,另外就是些運氣。   例如最近碰見了一個案例,一套3節點11.2.0.4 RAC,某應用只用節點1(FAILOVER other

log file sync, log file parallell write

SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name in( 'log file sync','log file parallel write'

如何在awr裡面檢視 log file sync是否是由使用者commit太多造成

根據Tanel Põder: Reasons for log file sync waits • Commits wait for log file sync by default • User commits • There’s an user commits stati

2017-04-12 DBA日記,頻繁commit導致的log file sync的診斷

背景: 2017-04-11 19:20收到開發員反饋,在某庫db1上執行update語句很快,但commit很慢,至少執行了5分鐘commit都沒有返回。 問題: 是什麼原因導致commit被

log file switch (archiving needed) 等待事件

log file switch archiving needed 一、環境描述Oracle 11g RAC 二、問題描述客戶執行批處理長時間無法完成。 三、問題處理過程 1、查看等待事件 SQL> select inst_id,event,count(*) from gv$session whe

Oracle db file parallel write 和 log file parallel write 等待事件 說明

一. db file parallel write 等待事件 引自如下blog: db file parallel write The db file parallel write wait e

等待事件 log file switch (日誌切換)

日誌檔案相關等待  Redo 對於資料庫來說非常重要, 有一系列等待事件和日誌相關,通過 v$event_name 檢視可以找到這些等待事件  SQL> select name from v$event_name where name like '%log%';

InnoDB: Error: log file .ib_logfile0 is of different size 0 10485760 bytes

ren code window windows 技術分享 watermark specified engine completed 啟動WAMP Server的時候報例如以下的錯誤: 140618 23:12:32 [Note] Plugin 'FEDER

Myeclipse啟動報錯:An error has occurred.See the log file

entry classpath ret 出現 restore div nap cati security 出現這個問題是因為斷電前myeclipse還在運行,日誌報錯如下: !ENTRY org.eclipse.osgi 4 0 2017-07-24 08:29:48.4

log file switch (checkpoint incomplete)的問題定位

tab diff margin 等待 data- center end bus wid 今天測試環境下應用慢。發現數據庫出了問題,直接上AWR報告。因為是虛擬機。所以不用貼cpu的個數,能夠發現負載高。 Snap Id

python安裝失敗提示“one or more issues caused the setup to fail . Please fix the issues and then retry setup.For more information see the log file

ase ice body orm bubuko mat 解決方法 3.4 mage 換了項目組,換了新電腦,重裝Python時遇到提示如下圖所示: 原因:需要安裝Windows 7 Service Pack 1 直接點擊“update your