ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 1858|回复: 13

[讨论] 定时将inactive的进程kill掉会有哪些副作用?

[复制链接]
论坛徽章:
163
目光如炬
日期:2015-08-09 22:00:01秀才
日期:2015-12-14 14:56:09天枰座
日期:2015-12-02 13:02:15火眼金睛
日期:2015-11-30 22:00:00秀才
日期:2015-11-23 09:48:22目光如炬
日期:2015-11-15 22:00:00目光如炬
日期:2015-11-01 22:00:00目光如炬
日期:2015-11-01 22:00:00狮子座
日期:2016-02-22 15:28:02目光如炬
日期:2015-12-13 22:00:00
发表于 2016-5-30 16:14 | 显示全部楼层 |阅读模式
本帖最后由 jieyancai 于 2016-5-30 16:52 编辑

aix5.3+oracle9.2.0.8有时候数据库长时间不能自动释放连接,为防止连接数过多,准备定时删除不活动连接的脚本。(连接的可能是通过中间件的连接池,PL/SQL客户端,dblink调用等等。)

select b.SPID from v$session a,v$process b where a.PADDR=b.ADDR and a.sid in(select sid from v$session where (machine like 'xxx%') and  status='INACTIVE');

然后kill -9 SPID

这种做法有什么问题吗?



论坛徽章:
110
罗罗诺亚·索隆
日期:2017-02-08 15:50:20布鲁克
日期:2017-02-09 14:54:03秀才
日期:2017-02-22 15:14:12
发表于 2016-5-30 16:56 | 显示全部楼层
没什么问题,不过有两个风险:
1. 没有commit,你给杀了就rollback了。。。。
2. 连接池有最小连接数,杀到小于这个连接数,就会自动再创建~

使用道具 举报

回复
论坛徽章:
110
罗罗诺亚·索隆
日期:2017-02-08 15:50:20布鲁克
日期:2017-02-09 14:54:03秀才
日期:2017-02-22 15:14:12
发表于 2016-5-30 16:57 | 显示全部楼层
所以既然有连接池,就用连接池控制最大连接数,重用空闲连接,别从数据库上杀~
谁知道他们应用怎么写的,INACTIVE不代表都可以杀掉~

使用道具 举报

回复
论坛徽章:
163
目光如炬
日期:2015-08-09 22:00:01秀才
日期:2015-12-14 14:56:09天枰座
日期:2015-12-02 13:02:15火眼金睛
日期:2015-11-30 22:00:00秀才
日期:2015-11-23 09:48:22目光如炬
日期:2015-11-15 22:00:00目光如炬
日期:2015-11-01 22:00:00目光如炬
日期:2015-11-01 22:00:00狮子座
日期:2016-02-22 15:28:02目光如炬
日期:2015-12-13 22:00:00
 楼主| 发表于 2016-5-30 16:59 | 显示全部楼层
本帖最后由 jieyancai 于 2016-5-30 17:01 编辑
zergduan 发表于 2016-5-30 16:56
没什么问题,不过有两个风险:
1. 没有commit,你给杀了就rollback了。。。。
2. 连接池有最小连接数,杀 ...

连接池这种,存在没commit就杀了的问题吗?

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
发表于 2016-5-30 17:06 | 显示全部楼层
嗯,确实。
1、会话杀了会导致没commit的事务rollback,不但可能会丢失部分工作,大事务或大量事务rollback,会消耗大量系统资源。
2、反复杀掉、创建会话,也会消耗系统资源。
3、还是建议找到问题根源,通过正常途径解决。

使用道具 举报

回复
论坛徽章:
110
罗罗诺亚·索隆
日期:2017-02-08 15:50:20布鲁克
日期:2017-02-09 14:54:03秀才
日期:2017-02-22 15:14:12
发表于 2016-5-30 17:24 | 显示全部楼层
jieyancai 发表于 2016-5-30 16:59
连接池这种,存在没commit就杀了的问题吗?

为什么不会呢?我觉得会

使用道具 举报

回复
论坛徽章:
110
罗罗诺亚·索隆
日期:2017-02-08 15:50:20布鲁克
日期:2017-02-09 14:54:03秀才
日期:2017-02-22 15:14:12
发表于 2016-5-30 17:42 | 显示全部楼层
按照官方文档的说法,v$session.active 的含义是
Any session that is connected to the database and is waiting for an event that does not belong to the Idle wait class is considered as an active session.
反过来也就是说,如果一个session的wait event是idle event,那么它就会处于inactive状态,一个执行完dml的进程,没有commit,也会处于idle event,也会变成inactive~

想你说得这种inactive很多导致数据库连接有问题的现象只能出现在以下几种情况

1. 没有使用连接池,都是短连接,但是应用忘记释放连接了
2. 使用了连接池,但是最小连接数设置过大
3. 大量应用修改和commit被设计为两步,commit需要人为单独触发

使用道具 举报

回复
论坛徽章:
110
罗罗诺亚·索隆
日期:2017-02-08 15:50:20布鲁克
日期:2017-02-09 14:54:03秀才
日期:2017-02-22 15:14:12
发表于 2016-5-30 17:45 | 显示全部楼层
总之连接池是可以保证一个事物独占一个连接的,inactive是应用的问题,当然有一种特例,网络(比如防火墙)超时,网络设备断开连接,没有通知数据库,数据库依然保持server process,这时候可以通过设置DCD检测,来主动关闭死链接,这样是比较安全的~

kill session我认为是有风险的

使用道具 举报

回复
论坛徽章:
163
目光如炬
日期:2015-08-09 22:00:01秀才
日期:2015-12-14 14:56:09天枰座
日期:2015-12-02 13:02:15火眼金睛
日期:2015-11-30 22:00:00秀才
日期:2015-11-23 09:48:22目光如炬
日期:2015-11-15 22:00:00目光如炬
日期:2015-11-01 22:00:00目光如炬
日期:2015-11-01 22:00:00狮子座
日期:2016-02-22 15:28:02目光如炬
日期:2015-12-13 22:00:00
 楼主| 发表于 2016-5-30 20:27 | 显示全部楼层
zergduan 发表于 2016-5-30 17:45
总之连接池是可以保证一个事物独占一个连接的,inactive是应用的问题,当然有一种特例,网络(比如防火墙) ...

使用道具 举报

回复
认证徽章
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
发表于 2016-5-30 22:26 | 显示全部楼层
zergduan 发表于 2016-5-30 17:24
为什么不会呢?我觉得会

必须会。
连接池只是实现了会话共享。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表