《包头社保系统问题全面诊断报告1.doc》由会员分享,可在线阅读,更多相关《包头社保系统问题全面诊断报告1.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、包头社保系统问题全面诊断报告工程师:赵欣报告生成日期: 2010-4-8Note: To add additional approval lines, Press Tab from the last cell in the table above.Note: You can delete any elements of this cover page that you do not need for your document. For example, Copy Number is only required if this is a controlled document and you
2、need to track each copy that you distribute.一 系统整体架构描述:应用服务器S1存储阵列包头社保系统Oracle 包头社保数据中心包头社保中间件应用服务器系统SAN光纤交换机应用服务器S2包头社保数据中心主要有个主要的逻辑子系统组成,分别是:中间件应用集群服务器子系统,数据库集群子系统,存储子系统。这个子系统的功能及实施配置情况如下:() 中间件应用集群服务器子系统:由两台组成应用集群,应用服务器为,其中在应用服务器和上分别同时部署运行医保结算系统和中心端业务系统,该子系统的主要功能是提供应用业务系统的运行环境,支撑客户端使用业务系统。() 数据库集
3、群子系统:由两台IBM P570组成Oracle数据库RAC集群,数据库版本为“Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi”,该子系统的主要功能是提供业务数据的7*24的操作及管理以及保证业务数据安全。() 存储子系统:由IBM DS-8000存储设备组成,主要功能是提供数据的存储以及高效的数据读写。二 中间件应用集群服务器子系统问题排查: (1)问题分析: 影响中间件服务器性能参数:参数名称原先设置分析结果JVM heap Size 1G满足应用需要,没有问题数据库连接池初始连接数1太低,不满足应用需要数据
4、库连接池最大连接数15太低,不满足应用需要数据库连接池连接增长数1太低,不满足应用需要 根据以上对影响中间件服务器性能参数的分析,可以看出JAVA虚拟机内存参数配置(JVM heap Size)没有问题,并且可以满足应用需要;数据库连接池相关参数的配置太小,不满实际应用需要,建议要根据实际情况进行调整。(2)问题解决方案: 通过分析实际应用情况以及业务高峰期的并发用户数,对数据库连接池参数作出了如下调整: 数据库连接池初始连接数调整为:50 数据库连接池最大连接数调整为:100 数据库连接池连接增长数调整为:5三 数据库集群子系统问题排查: (1)内存使用问题分析及排查: 基本内存使用参数配置
5、:参数名称参数作用参数值分析结果sga_target决定系统全局区SGA的大小,由于大部分操作都要在SGA中完成,所以该参数对数据库的性能起到决定性的作用。5G略显小sga_max_size决定SGA最大可以设置为多少5G略显小pga_aggregate_target决定用户全局区PGA的大小,该参数决定是否用户的大量计算可在内存中完成,因此该参数对数据库性能也起到非常关键的作用。1G可以满足需要,建议再调大一些基本内存使用情况指标:指标项检查该指标所依据的脚本命令检查结果分析结果建议操作Data Buffer Cache命中率select 1 - (phy.VALUE - lob.VALUE
6、 - dir.VALUE) / ses.VALUE Buffer Cache Hit Ratio from v$sysstat ses, v$sysstat lob, v$sysstat dir, v$sysstat phy where ses.NAME = session logical reads and dir.NAME = physical reads direct and lob.NAME = physical reads direct (lob) and phy.NAME = physical reads;98%以上基本满足要求,理想状态应该达到99%以上。主要的原因可能是由于SG
7、A大小略显小的缘故。由系统集成人员适当调整SGA大小。调整时要参考最大可用内存数,建议该参数值应该在8G以上。SharePool中liberary cache命中率SELECT SUM(PINHITS - RELOADS) / SUM(PINS) HIT RADIO, SUM(RELOADS) / SUM(PINS) RELOAD PERCENT FROM V$LIBRARYCACHE;98%以上满足要求,不过重载率为0.26%略显高,可能会影响系统SQL语句软解析度系统SQL语句软解析度select (t1.value - t2.value) / t1.value) * 100 from (
8、select value from v$sysstat where name like parse% and name in (parse count (total) t1, (select value from v$sysstat where name like parse% and name in (parse count (hard) t2;93%过低,作为一个具有高并发访问量的联机在线事务系统来说,SQL语句 的软解析度应该在98%以上,最低不能低于97%。建议排查频繁被使用功能 的程序代码,看一下是否合理使用了绑定变量。查询PGA工作状态信息select name profile,
9、cnt, decode(total, 0, 0, round(cnt * 100 / total) percentage from (select name, value cnt, (sum(value) over() total from v$sysstat where name like workarea exec%);100%工作于optimal状态满足要求查看内存及硬盘的排序比例select d.VALUE Disk, m.VALUE Mem, (d.VALUE / m.VALUE) Ratio from v$sysstat m, v$sysstat d where m.NAME =
10、sorts (memory) and d.name = sorts (disk);基本全部属于内存排序满足要求(2)I/O问题分析及排查: 基本I/O参数配置:参数名称参数作用参数值分析结果db_控制数据库多块读取时一次最多读多少数据块16建议调整到32log_archive_max_processes控制归档进程最大数3满足要求db_writer_processes控制数据库写操作进程数量2根据当前数据库数据文件数量,该值显得略低,建议调高disk_asynch_io控制数据库是否使用异步I/Otrue满足要求 数据库I/O使用指标:指标项检查该指标所依据的脚本命令检查结果分析结果建议操作检
11、查数否存在磁盘I/O瓶颈select event, total_waits, time_waited ,total_timeouts,average_wait from v$system_event t where event in (log completion, log (checkpoint incomplete), log (archiving needed), control write, log write);系统中存在比较频繁的引发增量检查点的操作,致使CKPT进程过于繁忙,引发了一定I/O压力基本满足要求,但增量检查点引发过于频繁检查频繁使用的程序,是否存在频繁执行Commit
12、的情况。Commit操作要尽量使用批量提交,本着以事务单元为提交的准则。() 资源竞争问题分析及排查: 资源竞争相关基本参数设置参数名称参数作用参数值分析结果log_checkpoint_timeout指定距下一个检查点出现的最大时间间隔 (秒数)。1800满足要求Undo_retention用来指定要在数据库中保留的已提交的撤消信息的时间900满足要求Processes指定可同时连接到一个 Oracle Server 上的操作系统用户进程的最大数量1000满足要求Open_cursors指定一个会话一次可以打开的游标 (环境区域) 的最大数量, 并且限制 PL/SQL 使用的 PL/SQL
13、游标高速缓存的大小, 以避免用户再次执行语句时重新进行语法分析。3000满足要求Dml_locks所有用户获取的表锁的最大数量4860满足要求数据库事务锁问题:指标项检查该指标所依据的脚本命令检查结果分析结果建议操作事务锁情况SELECT T1.*, T2.SQL_TEXT, T2.SQL_FULLTEXT FROM (SELECT B.SQL_ID, B.SID, B.MACHINE, C.OBJECT_NAME, A.ORACLE_USERNAME, A.LOCKED_MODE, B.OSUSER, alter system kill session | B.SID | , | B.SER
14、IAL# | ; FROM V$LOCKED_OBJECT A, V$SESSION B, ALL_OBJECTS C WHERE A.SESSION_ID = B.SID AND A.OBJECT_ID = C.OBJECT_ID) T1, V$SQLAREA T2 WHERE T1.SQL_ID = T2.SQL_ID;在数据库中长时间存在事务锁,在等待事件中长时间存在enq: TX - row lock contention事件。长时间存在事务锁定的表为:KC04、KC21、KC22、KC23、KC24、KC29操作上述表并引起锁的SQL语句如下:UPDATE KC04 SET AKC3
15、17 = :B3 , OAE300 = PKG_A_COMM.FUN_GETOAE300, OAE301 = OAE300 WHERE AAC001 = :B2 AND AAE001 = :B1 UPDATE KC04 SET AKC317 = :B3 , OAE300 = PKG_A_COMM.FUN_GETOAE300, OAE301 = OAE300 WHERE AAC001 = :B2 AND AAE001 = :B1 UPDATE KC21 SET AAE100 = 0, AAE011 = :B6 , AAE036 = SYSDATE, AKC384 = :B5 , AKC380 =
16、 :B4 , AKC381 = :B3 , AKC319 = 0, OAE300 = PKG_A_COMM.FUN_GETOAE300, OAE301 = OAE300 WHERE AKB020 = :B2 AND AKC190 = :B1 AND AKA135 = 1 AND AAE100 = 1BEGIN PKG_K_SIINTERFACE.PRC_K_SIINTERFACE(:1,:2,:3,:4,:5,:6); END;BEGIN PKG_K_SIINTERFACE.PRC_K_SIINTERFACE(:1,:2,:3,:4,:5,:6); END;BEGIN PKG_K_SIINTE
17、RFACE.PRC_K_SIINTERFACE(:1,:2,:3,:4,:5,:6); END;BEGIN PKG_K_SIINTERFACE.PRC_K_SIINTERFACE(:1,:2,:3,:4,:5,:6); END;BEGIN PKG_K_SIINTERFACE.PRC_K_SIINTERFACE(:1,:2,:3,:4,:5,:6); END;BEGIN PKG_K_SIINTERFACE.PRC_K_SIINTERFACE(:1,:2,:3,:4,:5,:6); END;UPDATE KC04 SET AKC317 = :B3 , OAE300 = PKG_A_COMM.FUN
18、_GETOAE300, OAE301 = OAE300 WHERE AAC001 = :B2 AND AAE001 = :B1 UPDATE KC04 SET AKC317 = :B3 , OAE300 = PKG_A_COMM.FUN_GETOAE300, OAE301 = OAE300 WHERE AAC001 = :B2 AND AAE001 = :B1 UPDATE KC04 SET AKC317 = :B3 , OAE300 = PKG_A_COMM.FUN_GETOAE300, OAE301 = OAE300 WHERE AAC001 = :B2 AND AAE001 = :B1
19、UPDATE KC04 SET AKC317 = :B3 , OAE300 = PKG_A_COMM.FUN_GETOAE300, OAE301 = OAE300 WHERE AAC001 = :B2 AND AAE001 = :B1建议认真排查相关程序代码,找到引起长时间事务锁的原因,并修改() Oracle RAC节点间通讯及竞争监控:指标项检查该指标所依据的脚本命令检查结果分析结果建议操作Clobal Cache Service等待事件SELECT INST_ID, EVENT, P1 ,P2 BLOCK_NUMBER, WAIT_TIMEFROM GV$SESSION_WAITWHER
20、E EVENT IN (gc buffer busy, global cache busy);没有发生满足要求节点间一致性读(CR)效率,Oracle建议如果avg receive time小于10ms,说明CR效率正常 SELECT B1.INST_ID, B2.VALUE received, B1.VALUE received time, (B1.VALUE / B2.VALUE) * 10) avg receive time(ms) FROM GV$SYSSTAT B1, GV$SYSSTAT B2 WHERE B1.NAME = gc cr block receive time AND
21、 B2.NAME = gc cr blocks received AND B1.INST_ID = B2.INST_ID;avg receive time为0.6ms满足要求节点间Current读效率,Oracle建议avg receive time小于15ms,则Current Read效率正常SELECT B1.INST_ID, B2.VALUE received, B1.VALUE received time, (B1.VALUE / B2.VALUE) * 10) avg receive time(ms) FROM GV$SYSSTAT B1, GV$SYSSTAT B2 WHERE
22、B1.NAME = gc current block receive time AND B2.NAME = gc current blocks received AND B1.INST_ID = B2.INST_ID;avg receive time为1ms满足要求() 其他一些影响数据库性能参数的设置:参数名称参数作用参数值分析结果optimizer_index_cost_adj在成本优化情况下的SQL执行时转化成使用索引访问的百分比100值过高可能会引发索引被弃用,建议设为25optimizer_index_caching在缓冲区高速缓存中期望用于嵌套循环联接的索引块的百分比0对于联机事务
23、系统值过低,应该调高,建议调整到90query_rewrite_enabled启用或禁用对实体化视图的查询重写true满足要求optimizer_mode成本优化器模式ALL_ROWS满足要求四、存储子系统问题排查: 个数据表空间使用情况检查:检查依据的命令脚本: select b. 文件ID号, b.tablespace_name 表空间名, b.bytes / 1024 / 1024 | M 字节数, (b.bytes - sum(nvl(a.bytes, 0) / 1024 / 1024 | M 已使用, sum(nvl(a.bytes, 0) / 1024 / 1024 | M 剩余空
24、间, 100 - sum(nvl(a.bytes, 0) / (b.bytes) * 100 已使用空间百分比 from dba_free_space a, dba_data_files b where a. = b. group by b.tablespace_name, b., b.bytes order by b.;表空间名字节数已使用剩余空间已使用百分比SYSTEM1020M1001.875M18.125M98.22303922UNDOTBS110235M191.0625M10043.9375M1.866756229SYSAUX1020M956.0625M63.9375M93.7316
25、1765USERS4095M4078M17M99.58485958EXAMPLE150M77.6875M72.3125M51.79166667UNDOTBS26809.0625M42.9375M6766.125M0.630593419USER_PUB2000M.0625M1999.9375M0.003125USER_A10100M9363.625M736.375M92.70915842USER_I10100M10024M76M99.24752475USER_I10100M9444M656M93.5049505USER_I10100M9852M248M97.54455446USER_K10100
26、M9742.0625M357.9375M96.45606436USER_K10100M10049.0625M50.9375M99.49566832USER_R10100M8167.0625M1932.9375M80.86200495USER_KC2110100M1538.1875M8561.8125M15.22957921USER_KC2210100M10041.4375M58.5625M99.42017327USER_KC2210100M8963.8125M1136.1875M88.75061881USER_KC2210100M10040.5M59.5M99.41089109USER_KC2
27、310100M600.25M9499.75M5.943069307USER_KC2410100M2604.5625M7495.4375M25.78774752USER_DRM10100M13.6875M10086.3125M0.135519802HNLMDATA10100M1.0625M10098.9375M0.010519802HNLMDATA10100M1.0625M10098.9375M0.010519802HNLMDATA10100M2.0625M10097.9375M0.020420792INDX_PUB2000M.0625M1999.9375M0.003125INDX_SIMIS4
28、040M.3125M4039.6875M0.007735149INDX_A4040M419.4375M3620.5625M10.38211634INDX_F10100M10051M49M99.51485149INDX_I10100M9557M543M94.62376238INDX_I10100M9586.0625M513.9375M94.9115099INDX_K4050M1297.5625M2752.4375M32.03858025INDX_R950M.5625M949.4375M0.059210526INDX_AC1310100M10042.875M57.125M99.43440594IN
29、DX_KC2110100M680.3125M9419.6875M6.735767327INDX_KC2210100M2178.25M7921.75M21.56683168INDX_KC2210100M6657.4375M3442.5625M65.91522277INDX_KC2210100M6673.9375M3426.0625M66.07858911INDX_KC2310100M576.125M9523.875M5.704207921INDX_KC2410100M640.375M9459.625M6.340346535HNLMINDEX10100M.0625M10099.9375M0.000
30、618812HNLMINDEX10100M.0625M10099.9375M0.000618812HNLMINDEX10100M.0625M10099.9375M0.000618812INDX_DRM2000M8.6875M1991.3125M0.434375UNDOTBS110100M138.5M9961.5M1.371287129UNDOTBS210100M27.4375M10072.5625M0.271658416UNDOTBS210100M27.0625M10072.9375M0.267945545INDX_AC2010100M7350.5M2749.5M72.77722772INDX
31、_AC2010100M7413.0625M2686.9375M73.39665842INDX_AC2010100M7415.1875M2684.8125M73.41769802USER_AC1310100M10086M14M99.86138614INDX_AC1310100M9770.0625M329.9375M96.73329208USER_SIMIS10100M10097.5M2.5M99.97524752USER_F9800M9795.0625M4.9375M99.94961735USER_F9800M5253.875M4546.125M53.61096939INDX_AC209800M
32、8397.0625M1402.9375M85.68431122INDX_AC209800M8340.0625M1459.9375M85.10267857SYSTEM2800M76.0625M2723.9375M2.716517857INDX_AC139800M9662.9375M137.0625M98.60140306PERFSTAT900M145.8125M754.1875M16.20138889USER_SIMIS10100M10057M43M99.57425743USER_SIMIS10100M10099.5M.5M99.9950495USER_AC139800M9799.9375M.0
33、625M99.99936224USER_AC139800M9651.9375M148.0625M98.48915816INDX_AC1310100M8750.375M1349.625M86.63737624INDX_AC1310100M8527.25M1572.75M84.42821782USER_I10100M8386M1714M83.02970297USER_I10100M10059.9375M40.0625M99.60334158USER_K10100M3002.0625M7097.9375M29.72339109USER_K10100M2940.125M7159.875M29.1101
34、4851USER_SIMIS10100M9547.5M552.5M94.52970297USER_SIMIS10100M9808M292M97.10891089USER_AC1310100M7972.875M2127.125M78.93935644USER_AC1310100M6001.8125M4098.1875M59.42388614SYSAUX1023M518.0625M504.9375M50.6414956INDX_AC1310238M.0625M10237.9375M0.000610471USER_AC1310238M6904.875M3333.125M67.4435925USER_
35、I10238M3420.25M6817.75M33.40740379USER_KC2210238M2265.0625M7972.9375M22.12407208INDX_I10100M3102.0625M6997.9375M30.7134901USER_SIMIS10100M2586.0625M7513.9375M25.60457921INDX_F10100M321.0625M9778.9375M3.178836634USERS4000M229.75M3770.25M5.74375USER_I10100M1081.0625M9018.9375M10.70358911从查询结果来看,每个表空间都
36、存在多个数据文件,有很多的数据文件已使用空间百分比已经占到了99%,通过及现场人员沟通了解到由于进行数据转换因此生成了大量的垃圾数据,这些垃圾数据大量占用存储空间,而且有时还会影响到数据库性能。通过及现场人员沟通,并经过认真排查,最终确定要删除800张存放垃圾数据的表来释放存储空间,由于要删除的表过多这里就不一一列出这些表了,但是建议要尽快做数据清理的相关工作。五、之前出现的应用中断问题原因分析及解决办法: 通过上述对中间件集群服务器子系统、数据库集群子系统、存储子系统的综合分析可以得出,数据库在相关性能问题的参数配置上存在一些问题,但是这些问题属于不会造成重大影响的问题,更不会引发应用系统中
37、断。同时通过分析终端发生时的应用服务器日志,可以发现中断的发生是由于数据库连接池中的连接被耗尽造成的。而且用户反映在应用终端时还出现了应用系统对应的数据库用被锁定的情况,这个情况在应用服务器日志当中也有记录,即发生了ORA-28000错误,经过及Oracle发布的错号对比,发现ORA-28000错误是当从客户端连接数据库失败次数超“FAILED_LOGIN_ATTEMPTS”参数所限定的次数时,Oracle认为这个连接可能是一个潜在的攻击行为,为了保护相关的数据库用户,Oracle就会采取将该用户账户锁定的做法来保护这个用户。 FAILED_LOGIN_ATTEMPTS参数对于客户端连接用户默
38、认为10,因而当某个客户端通过口令连接一个用户超过10次连接失败时,Oracle就会将这个被连接的用户锁定,并且返回客户端ORA-28000错误。 上述这种情况正好及我们系统的问题现象吻合,当我们的连接池中的连接被耗尽时,这时如果再有用户发起对数据库的连接,由于无法获取有效连接,因而会造成连接失败,当失败次数超过FAILED_LOGIN_ATTEMPTS参数默认值时(在高并发情况下会很容易超过该默认值),就会发生用户锁定,并返回ORA-28000错误,并且改错会被纪录进应用服务器日志中。 因此我们系统在运行中发生中断的根本原因在于中间件服务器连接池设置不合理,在之上的有关中间件服务器的分析中也
39、可以看出,连接初始数、连接最大数、连接增长数设置的都非常不合理,必须进行合适的调整,经过分析业务特点后我们已经及时做出了调整。禁果近一个星期的观察,调整的效果还非常明显的,经过对应用服务器的监控没有再发现连接被耗尽服务终端并出现ORA-28000错误的情况。六、总结: (1)中间件集群服务器问题:数据库连接池初始连接数1太低,不满足应用需要数据库连接池最大连接数15太低,不满足应用需要数据库连接池连接增长数1太低,不满足应用需要 通过分析实际应用情况以及业务高峰期的并发用户数,对数据库连接池参数作出了如下调整: 数据库连接池初始连接数调整为:50 数据库连接池最大连接数调整为:100 数据库连
40、接池连接增长数调整为:5 (2)数据库集群子系统问题:问题问题所在及解决措施内存使用问题sga_target:略显低,建议调高。调整时涉及sga_max_size参数的调整,所以需要停数据库来调整;pga_aggregate_target:略显低,建议调高。可以动态调整,当前已经被重新调整为2G;系统SQL语句软解析度:太低,需要对频繁被使用功能 的程序代码进行排查;I/O问题db_:略低,建议调高。可以动态调整,当前已经被重新调整为32;db_writer_processes:略低,建议调高。属于静态参数,需要停止数据库后进行调整,建议将该值增加到4;系统中存在比较频繁的引发增量检查点的操作,致使CKPT进程过于繁忙,引发了一定I/O压力,检查频繁使用的程序,是否存在频繁执行Commit的情况。Commit操作要尽量使用批量提交,本着以事务单元为提交的准则资源竞争问题存在长时间把持事务锁而不释放的情况。建议认真排查相关程序代码,找到引起长时间事务锁的原因,并修改其他一些影响数据库性能参数的设置optimizer_index_cost_adj:值过高可能会引发索引被弃用,建议设为25,可以动态调整,当前已经被重新设置为25;optimizer_index_caching:对于联机事务系统值过低,应该调高,建议调整到90,可以动态调整,当前已经被重新设置为90;