一个job运行问题的排查过程
2008-03-27 10:20
330 查看
今天产品线的一个同事过来,说在某台数据库服务器上有两个job似乎是死在那里了,几个小时了,看状态一直是Executing。这种Debug的事情肯定轮不到我这样的新手,但我站在manager的身后,大概学习了一下他的排查过程。
1.运行 sp_who2, 看看有没有什么其他的进程阻塞了这个job
结果:没有发现,甚至也没发现这个job和数据库服务器间的连接。(job本身是一个SSIS的应用,用来把数据从文件加载入数据库)
2.运行 dbcc opentran
可能是怕有事务的死锁之类的东西吧,反正也没有看出结果
3.dbcc imputbuffer(spid)
查了一下文档,才知道这是用来返回一个客户进程发送给一个sql server实例的最后一个语句
4.远程登录到数据库服务器上,查看 DTExec.exe 进程的资源占用情况
我们的数据库服务器是64位的,而这个命令是在64位机上部署或者运行SSIS包的工具,这里有一个简单的调用示例:
EXEC xp_cmdshell 'dtexec /f "C:\UpsertData.dtsx"'
结果:也没有太多发现
5.接下来就是仔细分析msdb里面的记录job执行情况的表
select * from sysjobhistory
select * from sysjobs
最后的结论是,发现这两个job在启动的时候,另外还有一个job也在启动。如上面所说,这些job都要运行ssis的包,需要适量内存;而在我们的数据库服务器上,我们给sql server所能使用的内存设置了一个最大值。这就可能出现一个情况,就是sql server把所有内存都吃掉了,导致ssis进程内存不足,所以就莫名死掉了。
当然,最后的结论比较牵强,也纯属推测,需要我们更改数据库服务器的最大内存使用量,然后再看看以后还会不会出现类似的错误...
1.运行 sp_who2, 看看有没有什么其他的进程阻塞了这个job
结果:没有发现,甚至也没发现这个job和数据库服务器间的连接。(job本身是一个SSIS的应用,用来把数据从文件加载入数据库)
2.运行 dbcc opentran
可能是怕有事务的死锁之类的东西吧,反正也没有看出结果
3.dbcc imputbuffer(spid)
查了一下文档,才知道这是用来返回一个客户进程发送给一个sql server实例的最后一个语句
4.远程登录到数据库服务器上,查看 DTExec.exe 进程的资源占用情况
我们的数据库服务器是64位的,而这个命令是在64位机上部署或者运行SSIS包的工具,这里有一个简单的调用示例:
EXEC xp_cmdshell 'dtexec /f "C:\UpsertData.dtsx"'
结果:也没有太多发现
5.接下来就是仔细分析msdb里面的记录job执行情况的表
select * from sysjobhistory
select * from sysjobs
最后的结论是,发现这两个job在启动的时候,另外还有一个job也在启动。如上面所说,这些job都要运行ssis的包,需要适量内存;而在我们的数据库服务器上,我们给sql server所能使用的内存设置了一个最大值。这就可能出现一个情况,就是sql server把所有内存都吃掉了,导致ssis进程内存不足,所以就莫名死掉了。
当然,最后的结论比较牵强,也纯属推测,需要我们更改数据库服务器的最大内存使用量,然后再看看以后还会不会出现类似的错误...
相关文章推荐
- 记一个奇怪的数据库记录重复插入的问题排查过程
- 一个罕见的MySQL redo死锁问题排查及解决过程(pt-pmp)
- hadoop本地任务运行过程报临时文件找不到问题排查
- 软件运行中界面显示异常——GDI资源泄漏问题的排查过程
- 一个SQL导致整个数据库很卡的问题及排查过程
- 一次JobTracker拥堵问题排查过程
- 小问题不简单,一个无线故障的排查过程
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- linux内核bug问题排查过程详细报告
- 转:VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- php分享二十八:mysql运行中的问题排查
- 一个程序的产生和运行过程
- IDEA如何打包可运行jar的一个问题。
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- 笔记:使用qtcreator过程中遇到到的一个小问题
- 一个SSIS部署问题的探索过程,实在佩服这家伙
- pb9.0 5507升级8836过程中出现的问题以及升级后工程运行没有反映的解决方法。
- 从JDK 6升级到JDK 7过程中遇到的一个问题
- 在ubuntu下创建、编译并运行一个C++程序的过程
- 一个new失败问题的查找过程