linux下cpu高负载案例

由于过去时间挺久得了  那个时候的记录都找不到了 大概看下解决思路

 

公司前端反应 操作慢、卡顿   

一开始猜测网络问题 (走的内部VPN 可能会导致这个问题)切换网络之后还是有问题 这时候登录数据库服务器感觉卡顿 

一查top 发现根本不正常 平时基本只有个位数的负载 这次一看有70+(32cpus 64Gmem) 业务高峰是一个问题 推断应该就是数据库出现了问题

进入数据库 查等待事件和blocking_session  

发现等待事件 基本就是shard_pool 和libnary_cache 这类的数据字典相关 sql解析问题   

初步推测sql 应该有大量DDL和硬解析问题

这个时候 去跑@?/rdbms/admin/awrrpt.sql 也没办法 根本跑不出来

只能建议先停会业务     

exec dbms_workload_repository.create_snapshot  产生awr快照   生成 awr

从awr 验证上面的推测     果然存在大量的DDL(建表语句)  从sql_top 观察发现极大的sql硬解析问题 

和开发沟通 果然是因为没有采用绑定变量 问题 

数据库这边打开  CURSOR_SHARING  测试 发现load 并没有下降  

CURSOR_SHARING

EXACT  默认,不替换

SIMIAR 当替换不会影响到执行计划时,才会将字面量替换成绑定变量

FORCE 只要有可能,字面量会被替换为绑定变量

这边考虑打开大页 使得sga 全部bind到memory中  再后续观察 是否有相同的情况产生

步骤:

1:关闭AMM=============>MEMORY_TARGET / MEMORY_MAX_TARGET设为0

2.去mos 上看文档(401749.1)计算出你服务器需要的大页  计算出的页数*2M   对于基本只跑Oracle的服务 设置大小大概为SGA大小 多那么一页就差不多  

3.vi /etc/sysctl.conf

vm.nr_hugepages = 你的页数

sysctl -p

 

vi /etc/security/limits.conf

oracle          soft    memlock 页数+1 *1024
oracle          hard    memlock 页数+1 *1024

重启数据库

watch -n1 'cat /proc/meminfo |grep -i HugePage'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值