lock sleep到底是什么意思?死锁?还是。。。。。。。。
今天遇到的问题,同时有多个进程的状态为“lock sleep”,在我查出后,把所有的显示该状态的进程都杀死后(recv sleep的没有杀死),又有客户端登陆数据库时,进程显示刚登陆的状态就为“LOCK SLEEP”,登陆几个,全都是此状态。我又杀死后又有客户端登陆近来,还是这种情况。重复好几次,仍然是这种情况?
请问这是为什么?
问题点数:40、回复次数:10Top
1 楼liq2003(木子)回复于 2002-06-12 21:37:58 得分 10
按Sybase的解释应为“等待锁定获得”
如果刚登陆的进程就为"lock sleep"则可能是你数据库的锁资源被耗尽了
检查一下数据库参数total lock number
检查一下当前锁情况sp_lock
Top
2 楼zxar(拿高工资好难)回复于 2002-06-13 12:38:08 得分 10
用sp_who检查一下lock sleep进程的blk列,把那个列所表示的进程杀死Top
3 楼woheni402(服者)回复于 2002-06-13 14:04:42 得分 0
to liq2003:
锁资源被耗尽,什么情况下锁资源被消耗呢?耗尽后增加锁的数量,是唯一和最好的方法吗,那样不是很占系统MEMORY吗?怎么能很好的解决吗?
锁资源耗尽了,那为什么我在杀死所有那些状态为“LOCK SLEEP”的进程后(也就是BLK不为0的),从新登陆数据库时又是这样呢?我对这点比较不理解的。还有死锁是什么状态?
to zxar:
我已经杀死了,但又登陆时还是那种,客户端在长时间等待就没有反映了?这样有没有好的解决方法?
谢谢两位Top
4 楼woheni402(服者)回复于 2002-06-14 09:00:25 得分 0
UP一下~~~Top
5 楼think_js()回复于 2002-06-17 23:05:15 得分 10
你的程序是pb吗?问题出在你的程序中,多个用户更新同一张表时,你用commit了吗?Top
6 楼woheni402(服者)回复于 2002-06-18 08:52:25 得分 0
TO:THINK_JS
程序是PB写的,当用户更新表时当然要用到 commit,难道是这个有问题?关于这个问题已经困惑了好多天了,可还是没有能很好的解决,还望你能多多关注。谢谢~~Top
7 楼bobfang(匆匆过客)回复于 2002-06-18 10:05:00 得分 0
查一查errorlog。以前我用sybase 11.5时也遇过类似问题,后来打了个补丁就好了。Top
8 楼woheni402(服者)回复于 2002-06-19 18:48:22 得分 0
TO BOBFANG:
ERRORLOG好象没有出现什么异常错误,我用的是11.9.2版本的。谢谢你的关注Top
9 楼developer2002(开发者2002)回复于 2002-06-19 21:58:41 得分 10
建议在运行pb程序时监控一下系统中锁的情况,如果可能,单步运行pb的程序,同时监控系统中的锁,也许会发现问题Top
10 楼woheni402(服者)回复于 2002-06-20 11:06:20 得分 0
to developer2002:
上次就看到一位仁兄问:如何监控系统中锁和内存的使用情况。好象到现在还没有一个很好的回答,我也一直在关注这个问题了。很高兴你能给我一点提示,但如何监控?还得向你请教一下^_^Top




