|
本帖最后由 qingyun 于 2013-6-28 11:52 编辑
去年做了比较大的项目,
我主要负责自动化设备调度这一块;
自动化设备强调实时性,所以每一个内部逻辑运算要越快越好;
虽然数据达到千万条级别,但是每个运算(传统方法,逻辑写存储过程,前台调用)都能控制在0.01秒左右(没有什么大的技巧,注意索引基本就不会有什么大的效率问题);
但是:客户反映经常系统中断(实际上也就是1个月中断个2,3次,每次持续半分钟左右)
搞的我非常恼火,因为客户 的数据库服务器放在A城市,设备控制电脑放在B城市,相隔数百公里;不是专线连接;走的普通的互联网连接的;中间不知道间隔了几百上千个路由器;而且客户作为大公司,各种路由器限制,防火墙设置,MAC限制,更是纷繁复杂;这么强的限制,会不会对网络有所延迟,因为每个通讯都要经过了大量的if 判断,层层过滤才能进行数据交互;
而那么多的设备触发的动作,每天有数百万次和数据库要交互;
而且我怀疑客户的oracle的RAC配置有问题;
所以做了如下的土工具:就是每秒执行一次最简单的SQL,看看执行时间如何,有时网络卡的时候,就算没有执行异常,也会执行时间有5秒之久;
这种现象,要么网路卡,要么RAC自动切换做的不好;要么服务器中毒,要么这个时候是数据库使用高峰期,要么...
原因很多,总之能说明一点:可以看到什么时间,数据库自身或者网络出现了感冒等不良症状;这种生病不要算到我的头上就行;
如果1秒执行一次,执行一天一夜,也即是 86400 次; 该工具的日志,每到500行会自动保存到当前目录的log目录下按天生成的文本里;
可以把这些文本通过 oracle sqlldr 的方法导入到表里慢慢分析 异常的端倪;
或者简单看看,大概估算一下异常;
![]()
http://www.daizhicun.com/dmx/dai/ORACLE_CONN.pdf
|
|