问题描述
在
tuxedo 应用程序中,Tuxedo 中的进程无法完成它们当前的工作、不响应新的请求且通常还会占用少量的 CPU 资源。关于 CPU 占用率高的问题,请参考以下即将推出的模式:异常高 CPU 占用率,它将提供排除该故障的方法。推出时将提供相应的链接。
在 Tuxedo 服务器端,有两种类型的进程可能会挂起:Tuxedo 管理进程(例如,DBBL、BBL、BRIDGE、GWTDOMAIN、GWADM、TMS 等)和应用程序进程。本文主要论述应用程序进程挂起。
故障排除
请注意,并非下面所有任务都需要完成。有些问题仅通过执行几项任务就可以解决。
为什么发生此问题?
通常服务器挂起是因为缺少某些资源。由于缺少资源或资源上有互斥锁,进程无法获取所需的资源,也就不能对新请求做出响应。例如,一个想要使用共享内存的进程会等待,直到某个进程通过发出信号释放锁定,如果没有释放,等待的进程就会挂起。
可能的原因:
死锁
资源阻塞
休眠循环
超时
异常高 CPU 占用率-请参考“异常高 CPU 占用率支持模式”。
故障探查
此故障探查的目的是搜索挂起服务器的堆栈信息,然后对其进行分析以找出服务器挂起的原因。
如何确定服务器是否挂起?故障探查的步骤将是:
使用 Tuxedo 管理工具“
tmadmin”。
使用命令“pq”检查 Tuxedo 队列中的请求。
使用命令“psr”检查 Tuxedo 服务器的状态。
使用操作系统���有的实用程序检查此 Tuxedo 服务器在操作系统中的 CPU 占用情况。
使用操作系统调试工具(如 truss、strace、gdb、dbx 等)查明服务器具体是在哪一个系统调用或 API 上挂起的。
<>或通过“kill”到进程的“SIGABRT”信号生成挂起服务器的二进制核心文件转储。通过使用调试工具调试二进制核心文件可以查明进程在何处挂起。请参考以下即将推出的模式:核心文件转储,它将提供排除该故障的方法。推出时将提供相应的链接。