注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oracle、MySQL资料及经验

.

 
 
 

日志

 
 

活动会话数过多引起数据库响应慢  

2016-01-04 10:41:26|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
会话数过多的原因常见有:1.DML引起的会话阻塞  2. 应用程序未关闭会话   3.客户端恶意点击     其中2和3 DBA不容易区分。

中午收到短信提示某库活动会话数达到了400,查该机cpu达到了99%,EM GC点击反应非常慢,plsql dev查询也非常慢。

首先查下,活动会话来源于哪台主机:
select machine, username,count(1) from v$session t where t.status='ACTIVE' group by machine,username;
发现都来自于5_188

再查下该问题主机在执行什么sql:
select b.event,sql_fulltext,a.sql_id,b.inst_id,sid,serial#,username,machine,client_info,b.module,b.status,last_active_time
from gv$sqlarea a,gv$session b
where a.sql_id=b.sql_id and b.status='ACTIVE'
and machine='5_188';
都是同一条sql,而且是select语句,显示是jdbc thin client,来自于应用服务器,记录下该sql,发给了开发。


又查了下阻塞,有两条阻塞会话:
select * from v$lock where block=1;
有阻塞,杀了该相关进程,如下:
select 'kill -9 '||p.spid from gv$session s,gv$process p where s.paddr = p.addr 
and s.sid in (上面sql的sid);

杀进程后,cpu依旧没有降下来。


也没有正在运行的job
select * from dba_jobs_running;


既然活动会话都是select语句,那就可以都杀掉:
plsql dev的命令窗口中或sqlplus下:
set pages 9000
select 'kill -9 '||p.spid from gv$session s,gv$process p where s.paddr = p.addr 
and s.sid in (select sid from v$session where status = 'ACTIVE' and machine = '5_188');

杀掉这些进程后,cpu降下来,系统恢复正常。



原因分析:怀疑是客户端有人恶意连续多次点击同一连接所致,具体原因由开发去查应用系统日志。

事件总结:活动会话数高,之前一般遇到的是update、delete引起,阻塞了其他会话,此时等待该操作执行完成,或杀掉该阻塞,均可解决问题。
                   此次遇到恶意点击











  评论这张
 
阅读(47)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017