# Oracle内存配置过低导致系统缓慢

# 问题现象

客户刚做了产品升级,升级后cap4、cap3,回退和终止功能大面积不可用,现象就是非常慢,经常超过1分钟不响应。

数据库Oracle,技术分析一直频繁报数据库锁问题,每次都需要查找锁源头,再kill,不一会儿又锁,整体使用体验极差。

关联编号 BUG2024042203130 BUG2024041802673 BUG2024052007309 JSFW-2024-00190

# 分析过程

1)系统整体卡慢的时候,通过系统监控-ThreadDump导出Java程序正在执行的线程情况,从线程可以发现:所有涉及操作数据库的业务都非常慢,如下图表示执行数据库查询787秒至今未返回结果。

因为是全局性问题,可以初步定性:数据库层面有问题。

1718273086089.png

2)执行Oracle的锁查询,发现大量死锁,表锁之后导致程序连接卡住。尝试kill锁ID,暂时恢复,不一会儿又出现锁。

1718273459820.png

3)检查数据库服务器磁盘速率2-3M/S,队列都在2左右,磁盘慢且压力大。

1718273608467.png

4)导出数据库AWR报告分析:SGA配置仅5G,而客户数据库独立部署服务器总内存64G,数据库内存配置明显偏低!

1718273743607.png

1718273796778.png

# 问题原因

数据库配置内存过低,并发上来后,大量查询数据库操作,无法通过内存命中,转而走磁盘IO读取数据库文件,数据库硬盘性能差,又造成IO阻塞形成连锁问题。

# 解决方案

1、先联系数据库DBA调大内存配置到合适位置(已确认经过此操作后,问题消除)

独立部署Oracle内存配置推荐:物理内存*80%80%=sga 物理内存80%*20%=pga

2、磁盘读写并不高 磁盘队列都在2了,磁盘可以也检查一下。

此类问题的通用处理方案: 在完成客户环境部署、升级后,通过系统环境检测工具(工具下载地址 (opens new window)) 对OA服务器和数据库服务器做环境扫描,针对扫描出来的问题进行配置调优。

编撰人:het