記壓力測試中一次效能除錯
最近系統做壓力測試,我負責資料庫監控。壓力測試期間發起某一場景時發現了剛開始響應時間較為平穩,但中間出現停頓甚至超時,公司的大神剛好在現場,我有幸觀摩了一把。
大神一上來,便拼出了一條SQL,主要查詢統計發生的事件!以下貼上sql:
SELECT EVENT, count(*), sql_text, to_char(sample_time, 'yyyymmdd hh24')
from dba_hist_active_sess_history a,
gv$sqlarea b
where a.sql_id = b.sql_id
and sample_time >= sysdate - 180 / 1440
and program like '%JDBC%'
group by event, to_char(sample_time, 'yyyymmdd hh24'),sql_text
order by 4,2
通過統計 發現 排名考前的是HW enqueue ,大師解釋是由於有限時間段內寫入大量資料,並且該表含有clob欄位,表空間擴充套件分配不及造成爭用,所以解決方法是提前分配表空間。大師使用先往表空間建表插入資料再刪除方式。
網上使用的方法是這樣:alter table allocate extent;
以下語句查詢表空間剩餘:
SELECT A.BYTES/1024/1024/1024, (A.BYTES-B.BYTES)/1024/1024/1024,A.FILE_NAME FROM DBA_DATA_FILES A,DBA_FREE_SPACE B WHERE A.TABLESPACE_NAME = 'TS_HX_YSPZ_DATA' AND A.TABLESPACE_NAME = B.TABLESPACE_NAME AND A.FILE_ID = B.FILE_ID
HW enqueue 的問題解決後,接下來 發現排名第二的是索引爭用 enq: TX - index contention 時間,直接調整索引即可!
後來大師敲出實時監控三sql,以下獻出:
select event,count(*),sql_text from gv$session a,gv$sqlarea b where a.sql_id = b.sql_id group by event,sql_text order by 2 desc;
select status,count(*),INST_ID from gv$session where type = 'USER' group by status,INST_ID;
select * from v$log ORDER BY 2,4;
第一條是統計當前使用等待事件及sql;
第二條統計當連線數情況;
第三條查詢聯機日誌情況,監控是否有寫不平情況;
最後發現有聯機日誌寫不平現象,就直接新增幾組聯機日誌!
alter database add logfile thread 2 group 30 ('+FRA/gdsthxzg/onlinelog/group_t2g30a','+DATA/gdsthxzg/onlinelog/group_t2g30b') size 1G;
大神一上來,便拼出了一條SQL,主要查詢統計發生的事件!以下貼上sql:
SELECT EVENT, count(*), sql_text, to_char(sample_time, 'yyyymmdd hh24')
from dba_hist_active_sess_history a,
gv$sqlarea b
where a.sql_id = b.sql_id
and sample_time >= sysdate - 180 / 1440
and program like '%JDBC%'
group by event, to_char(sample_time, 'yyyymmdd hh24'),sql_text
order by 4,2
通過統計 發現 排名考前的是HW enqueue ,大師解釋是由於有限時間段內寫入大量資料,並且該表含有clob欄位,表空間擴充套件分配不及造成爭用,所以解決方法是提前分配表空間。大師使用先往表空間建表插入資料再刪除方式。
網上使用的方法是這樣:alter table
以下語句查詢表空間剩餘:
SELECT A.BYTES/1024/1024/1024, (A.BYTES-B.BYTES)/1024/1024/1024,A.FILE_NAME FROM DBA_DATA_FILES A,DBA_FREE_SPACE B WHERE A.TABLESPACE_NAME = 'TS_HX_YSPZ_DATA' AND A.TABLESPACE_NAME = B.TABLESPACE_NAME AND A.FILE_ID = B.FILE_ID
HW enqueue 的問題解決後,接下來 發現排名第二的是索引爭用 enq: TX - index contention 時間,直接調整索引即可!
後來大師敲出實時監控三sql,以下獻出:
select event,count(*),sql_text from gv$session a,gv$sqlarea b where a.sql_id = b.sql_id group by event,sql_text order by 2 desc;
select status,count(*),INST_ID from gv$session where type = 'USER' group by status,INST_ID;
select * from v$log ORDER BY 2,4;
第一條是統計當前使用等待事件及sql;
第二條統計當連線數情況;
第三條查詢聯機日誌情況,監控是否有寫不平情況;
最後發現有聯機日誌寫不平現象,就直接新增幾組聯機日誌!
alter database add logfile thread 2 group 30 ('+FRA/gdsthxzg/onlinelog/group_t2g30a','+DATA/gdsthxzg/onlinelog/group_t2g30b') size 1G;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29863023/viewspace-1368814/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Jmeter效能測試 —— 壓力模式JMeter模式
- (一)效能測試(壓力測試、負載測試)負載
- 效能壓力測試JMeter替代:LoadjitsuJMeter
- 三種web效能壓力測試工具Web
- 效能測試、負載測試、壓力測試有什麼區別?負載
- Linux伺服器效能壓力測試Linux伺服器
- ORACLE壓力測試Oracle
- laravel壓力測試Laravel
- MACOSXApacheab壓力測試MacApache
- NGINX壓力測試Nginx
- mysqlslap壓力測試MySql
- 壓力測試工具
- Taurus.MVC 效能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET 版本MVCLinux
- 用雲壓力測試工具,如何完成一次測試任務
- 一次資料庫壓力測試的故事資料庫
- Taurus.MVC 效能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本MVCLinux
- 對node工程進行壓力測試與效能分析
- Web伺服器效能壓力測試工具使用教程Web伺服器
- nginx壓力測試方法:Nginx
- 壓力測試指令碼指令碼
- 軟體測評中心▏效能測試、壓力測試、負載測試有什麼區別?負載
- 運維攻堅之jmeter壓力測試報錯運維JMeter
- 筆記六十二:叢集壓力測試筆記
- RestCloud測試平臺,支援壓力測試RESTCloud
- 網站效能壓力測試工具:Apache ab使用詳解網站Apache
- 讓測試事半功倍軟體壓力測試工具分享,壓力測試報告怎麼收費?測試報告
- 想要完成系統效能評估? 試試【雲壓力測試 + APM】的端到端壓測解決方案
- Apache Bench Web 壓力測試ApacheWeb
- oracle壓力測試之orastress!OracleAST
- 壓力測試工具之FIO
- webbench進行壓力測試Web
- mysqlslap壓力測試介紹MySql
- 壓力測試工具之mysqlslapMySql
- 網站壓力測試工具網站
- Mysql 壓力測試工具sysbenchMySql
- Oracle壓力測試:HammeroraOracle
- 壓縮工具效能測試
- apache ab壓力測試工具-批次壓測指令碼Apache指令碼