今天留意到一封报警邮件。内容如下:
ZABBIX-监控系统:
------------------------------------
报警内容: CPU utilization is too high
------------------------------------
报警级别: PROBLEM
------------------------------------
监控项目: CPU idle time:45.92 %
------------------------------------
报警时间:2016.02.14-15:45:10
这个问题发生的时间很短,持续没多长时间就自动恢复了,但是还是引起了我的注意。
登录到环境之后,查看系统的整体负载情况。发现在问题时间段里,确实CPU使用率较高。
03:20:01 PM CPU %user %nice %system %iowait %steal %idle
03:30:01 PM all 0.37 0.00 0.22 0.17 0.00 99.25
03:40:01 PM all 18.03 0.00 0.19 0.18 0.00 81.60
03:50:01 PM all 50.94 0.00 0.13 0.17 0.00 48.75
04:00:01 PM all 75.45 0.00 0.15 0.15 0.00 24.24
04:10:01 PM all 64.55 0.00 2.23 0.25 0.00 32.97
04:20:01 PM all 57.27 0.00 0.91 0.28 0.00 41.54
对于这种情况,首先通过crontab排除了例行的维护任务,从而可以初步推断系统级没有特定的任务。
这个负载很可能来自于数据库层面,那么对于数据库层面的分析如下。
这个数据库实例的DB time,抖动不够明显。
BEGIN_SNAP END_SNAP SNAPDATE DURATION_MINS DBTIME
---------- ---------- -------------------- ------------- ----------
18981 18982 14 Feb 2016 11:00 60 4
18982 18983 14 Feb 2016 12:00 60 4
18983 18984 14 Feb 2016 13:00 60 4
18984 18985 14 Feb 2016 14:00 60 14
18985 18986 14 Feb 2016 15:00 60 8
18986 18987 14 Feb 2016 16:00 60 32
18987 18988 14 Feb 2016 17:00 59 6
18988 18988 14 Feb 2016 18:00 60 0
但是逻辑读在下午的时间段里,确实出现了一个较大的抖动。
所以可以基本断定这个问题来自数据库层面,而且很可能来自sql语句。
当然了我也确实比较懒,对于这种问题,懒得生成awr了,直接用一个脚本来挖掘问题时间段内的快照数据。
$ sh showsnapsql.sh 18987
Current Instance
~~~~~~~~~~~~~~~~
DBID DB_NAME INST_NUM INST_NAME
---------- --------------------------- ---------- ------------------------------------------------
1825607545 TESTDB 1 testdb
SNAP_ID SQL_ID EXECUTIONS_DELTA ELAPSED_TI PER_TOTAL
---------- --------------------------------------- ---------------- ---------- ----------
18987 c1mddahtwj7y1 1051 1388s 83%
18987 cr32qwhysqkn9 65364 112s 6%
18987 fgwt4xab7fhgt 138553 40s 2%
18987 7kt7x4s5ps0hu 836 38s 2%
18987 520mkxqpf15q8 410907 16s 1%
第一条语句毫无疑问是值得注意的部分。语句情况如下:
SQL_FULLTEXT
----------------------------------------------------------------------------------------------------
UPDATE TEST_DEAL_INFO SET FLAG='0',SMS_SEND_TIME=SYSDATE WHERE ID=:1
但是查看执行计划,发现走了全表扫描。
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | UPDATE STATEMENT | | | | 70961 (100)| |
| 1 | UPDATE | TEST_DEAL_INFO | | | | |
|* 2 | TABLE ACCESS FULL| TEST_DEAL_INFO | 1 | 10 | 70961 (1)| 00:14:12 |
---------------------------------------------------------------------------------------
那么这个问题就很明显了。需要一个相关的索引,在简单分析相关的语句之后,发现根据表的字段情况和使用的sql情况,目前只需要在id列添加索引即可。
当然简单添加之后,问题就会引刃而解。
不过在解决之后简单看了下这个环境还是不经意发现了一些问题,既然添加了索引,对应的表空间情况如下:
Tablespace Total MB Free MB Used MB
----------------------- ---------- ----------- -
MEG_DATA 100 98 2
MEG_INDEX 100 98 2
RECALL_DATA 77,774 28,928 48,846
RECALL_INDEX 98,444 28,889 69,555
SYSAUX 1,120 75 1,045
SYSTEM 770 2 768
TEMP 15,187 15,187 0
UNDOTBS1 3,810 3,770 40
USERS 154 8 145
有没有发现什么问题? 问题之一就是这个表空间的使用率有些奇怪,怎么索引所在的表空间使用率比数据还高了。如果是按照这种情况下,会有大量的索引存在,过多的索引,本身对于表的数据维护代价就比较高,而且这种索引比较多的情况很可能都是单键值索引,是否可以考虑复合索引。
带着疑问查看了一下索引的使用情况,奇怪的是没有发现什么问题,但是数据有一部分对不上,最后使用下面的语句来定位,发现了另外一个问题。
SQL> select owner,segment_type,sum(bytes/1024/1024) size_MB from dba_segments where tablespace_name='RECALL_INDEX' group by owner,segment_type;
OWNER SEGMENT_TYPE SIZE_MB
-------------------- -------------------- ----------
SYS INDEX 48021.4375
TEST INDEX 21528.3125
这个索引表空间是由SYS和TEST两个用户共同使用,SYS竟然使用了近48G的空间,这个确实有些奇怪。为什么呢?
进一步分析发现,有一个表存在两个索引。每个索引大概是24G左右,表里本身就含有大量的历史数据。
INDEX_NAME TABLE_NAME
----------------------------- -------------------------
RFR_CN_MASTER_INDEX TEST_TIMELY_FOX
FRF_LOGIN_TIME_INDEX TEST_TIMELY_FOX
而且表的段大小是15G左右,但是索引大小已经远大于数据段了,所以这部分索引需要考虑重建。
而且可以进一步和开发的同学确实,是否需要保留很早以前的索引。
在这个基础上,其实也可以进一步分析,写个脚本找出这类问题数据段,索引段来。
一条看似平常的报警邮件所做的分析
时间: 2024-10-23 18:22:35
一条看似平常的报警邮件所做的分析的相关文章
备库报警邮件的分析案例(三)
继前两篇分析了一个看似非常普通的报警邮件,结果在分析问题的时候八面玲珑,相关因素都给分析了一下,没想到还真是有不小的收获. 前两篇地址: http://blog.itpub.net/23718752/viewspace-1827685/ http://blog.itpub.net/23718752/viewspace-1829630/ 最后通过手工定位监控的方式终于把罪魁祸首揪了出来,为什么在备库使用ash无果,因为还是10g的库,还没有这个特性,在11g中才可以.这个也算是在10g中的一个监控
备库报警邮件的分析案例(二)
在第一篇中分享了关于备库报警邮件的分析,发现很多问题都是一环扣一环. 起初是通过监控主库中的v$dataguard_status发现备库中可能存在一些问题,结果逐步分析,发现是由备库的crontab触发了备库的定时read-only和online状态,(即只读和应用日志,10gR2的环境),而这些关键信息都是从数据库的alert日志中发现的,但是问题还没有完,才刚刚开始,因为发现备库中竟然有ORA-1652: unable to extend temp segment by 128 in tab
由报警邮件分析发现的备库oracle bug
昨天到公司之后,收到两份封报警邮件,可以看到在早晨6:30左右主库的v$dataguard_status检查时发现了一个错误.然后再2分钟后就自动恢复了. 一般这种问题很自然想到可能是网络出现了一些问题.因为自动恢复了,所以也不同太着急处理,于是细细看了下.报警邮件如下: ZABBIX-监控系统: ------------------------------------ 报警内容: DG_issue ------------------------------------ 报警级别: PROBL
一封备库报警邮件的分析
对于orabbix报出的警报,自己都是心怀敬畏,因为这些表面的现象如果深入分析没准就能有所收获,当然目的还是解决问题,不是一味追求指标. 今天收到的报警邮件如下,然后在两分钟后问题自动恢复. ### ZABBIX-监控系统: ------------------------------------ 报警内容: DG_issue ------------------------------------ 报警级别: PROBLEM ----------------------------------
三封报警邮件的分析
今天收到3封报警邮件,从邮件内容中的报警情况来看,还是比较反常的.需要引起关注,找到原因处理. 这个库是一个历史库,库中的数据非常庞大,几十亿数据的表还是有好几个.但是访问频率很低,一般到历史库中所做的历史数据分析查询需求还是要少很多. 报警邮件如下,可以看到DB time的阀值还是很高的. #邮件1 [DB监控系统]_testdb2_hist_p@10.12.6.18_报警 ZABBIX-监控系统: ------------------------------------ 报警内容: DB t
邮件导航条的良好设计影响邮件营销的转化率
导读:如何设计邮件导航条?是否能和网页导航条采用相同的设计方式?我们有很多时候并不会仔细考虑这个问题,当然如果通过改换邮件导航条的设计可以提高邮件营销的转化率,那么许多企业都可能愿意去改变,通过阅读本文相信你就会有自己的答案. 你邮件顶部的导航条,可以是推动用户接洽的巨大来源.除了在邮件预览窗格几乎每次都能看到之外,导航条向你邮件订阅者展示一个清晰而熟悉的路径,以便与您接洽,即使他们对你邮件的主要内容并不感兴趣. 按照eROI最新的"邮件基础要素"调查,62%的包含导航条的邮件营销者表
Python监控主机是否存活,并发报警邮件
利用python写了简单测试主机是否存活脚本,此脚本不适于线上使用,因为网络延迟.丢包现象会造成误报邮件,那么后续会更新判断三次ping不通后再发报警邮件,并启用多线程处理. 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 31 32 33 34 35 36 37 38 39 40 41 #!/usr/bin/env python # coding:UTF-8 import tim
360向存在该漏洞的网站发送报警邮件及修复建议
4月13日消息,日前乌云漏洞报告平台爆料称,ThinkPHP框架存在"URI取值任意代码执行"漏洞(详情),黑客可借此在网站上执行任意PHP代码,甚至获取服务器管理员权限,同在此服务器上的其他网站也可能受到牵连.对此,360网站安全检测平台第一时间加入检测规则,并向存在该漏洞的网站发送了报警邮件及修复建议. 360网站安全检测平台服务网址 ThinkPHP是一款拥有6年历史的优秀开源PHP框架,自2006年诞生以来,应用者逐渐遍及电子商务.教育培训.金融.政府等多个领域,包括大型门户网
备库报警邮件的分析案例(一)
今天早上到了公司后,收到了这样一封报警邮件,发现收到备库的报警案例也比较多,着实颠覆了我对备库基本不需要关注管理的观点.后面可以把几个案例做成一个主题来说说. 报警邮件的内容如下: ZABBIX-监控系统: ------------------------------------ 报警内容: DG_issue ------------------------------------ 报警级别: PROBLEM ------------------------------------ 监控项目: