【故障诊断】故障诊断 Lotus Domino 的挂起和崩溃2
【shitiku.jxxyjl.com--IBM认证复习指导】
nsd 分析确定让服务器崩溃的进程通常是解决服务器崩溃的第一步。在 domino 6 和更高版本中,nsd 文件是一个很好的起点。nsd 给出服务器状态的所有当前信息(所有线程的调用堆栈、内存信息,等等)。在发生崩溃时,domino 服务器将自动生成一个 nsd 日志文件,并存储在 data\ibm_technical_support 目录中。nsd 日志文件的文件名中带有一个时间戳,展示了 nsd 是何时生成的。例如nsd_w32i_kirantp_2006_01_17@17_17_18.log表示这个 nsd 是 2006 年 1 月 17 日生成的。nsd 在运行时,会附加到每个进程和线程,以转储调用堆栈。这有助于您确定服务器或工作站崩溃的原因。 nsd 文件的核心是堆栈跟踪部分。这一部分提供代码路径的一个 breakdown,当前存在的进程中的每个线程要遍历该路径,以进入其当前状态。这对于考察服务器上的挂起或崩溃场景非常有帮助。此外,通过检查 nsd 文件,可以找到 domino data 目录中生成的任何核心文件,并进行基本的分析,以跟踪死去并遗留下核心文件的进程所做调用的最终堆栈。在诸如 domino 这样的复杂产品中,两台不同服务器上相同类型的动作的堆栈跟踪可以产生不同的结果。 在 nsd 文件中,通过执行对单词 “fatal”、“panic” 或 “segmentation” 的搜索,可以识别失败进程中的可执行部分。找到进程后,我们可以看出谁在它之前,并有望确定崩溃是如何发生的。有时,当 “panic”、“fatal” 都没有找到时,核心转储将包含对函数中 “segmentation fault” 的引用。这表明,进程试图访问因某种原因已破坏的共享内存段,并将不调用 “fatal_error” 或 “panic” 而崩溃。 下面是 nsd 文件的示例摘录,其中的一个服务器进程涉及到崩溃: ### fatal thread 39/83 [ nserver:07c0: 2764]
### fp=0743f548, pc=60197cf3, sp=0743ebd0, stksize=2424
exception code: c0000005 (access_violation)
############################################################
@[ 1] 0x60197cf3 nnotes._panic@4+483(7430016,496dae76,0,496dace8)
@[ 2] 0x600018a4 nnotes._osbblockaddr@8+148(1153f38,2000000,743f608,1)
@[ 3] 0x6000bd92 nnotes._collectionnavigate@24+610(0,743fc74,f,0)
@[ 4] 0x600626cc nnotes._readentries@68+2860(4c5440e8,4cfb8dba,800f,1)
@[ 5] 0x600b9f6f nnotes._nifreadentriesext@72+351(0,4cfb8dba,800f,1)
@[ 6] 0x10032d40nserverl._serverreadentries@8+1424(0,8d0c0035,4b64b5bc,4ae46dd6)
@[ 7] 0x100191fc nserverl._dbserver@8+2284(41b0383,cb740064,0,23696f8)
@[ 8] 0x1002b8c8 nserverl._workthreadtask@8+1576 (4711d68,0,3,563fb10)
@[ 9] 0x100016cb nserverl._scheduler@4+763(0,563fb10,0,10ec334)
@[10] 0x6011e5e4 nnotes._threadwrapper@4+212 (0,10ec334,563fb10,0)
@[11] 0x77e887dd kernel32.getmodulefilenamea+465 当确定了失败进程后,您就可以着重故障诊断这个特定的进程了。 servertasks
如果一台服务器不断地崩溃(例如,每五分钟一次),一个有用的故障诊断步骤是,从服务器的 notes.ini 文件临时删除 servertasks= 行。然后,服务器可以重新启动,任务可以单独地加载,以确定是哪个进程导致崩溃。 panic 消息
当 domino 检测到一个内部一致性错误,或者一个可能导致数据破坏或其他问题的条件时,它会立即调用一个名为 panic 的子例程。这是在代码操作时,用于不断监控代码的关键部分的一种特殊构造。这有助于在问题升级并可能破坏数据之前,尽可能早地捕捉问题。当发生 panic 时,它将导致系统停止(因此可看成是一种可控制的崩溃)。panics 产生的消息,有时是英语形式的,有时是代码形式的(例如,panic: 04:3c)。您可以将该代码提交给 lotus software technical support,以便进一步故障诊断。 故障诊断工具 本节介绍您在遇到 domino 服务器崩溃或挂起时可用的一些故障诊断工具。在使用任何这些工具之前,请确保参考 domino 管理文档。此外,domino 自助支持页面 对于故障诊断信息也是一个好的资源。 rip(domino r5) rip 文件是在服务器崩溃时产生的。该文件包含关于服务器崩溃时在做什么的信息。它报告系统上的任何崩溃,而不只是与 domino 有关的崩溃。rip 文件只在 domino 5.x 中才产生。在 domino 6 和更高版本中,nsd 取代了 rip,并且还包括 rip 中没有的附加功能。 要产生 rip 文件,需要将 qnc.exe 加载到 domino 服务器上。qnc.exe 程序(通常叫做 “quincy”)是与 domino 一起发布的默认调试程序。qnc.exe 程序通常位于 \domino 目录中。要启用 qnc.exe,请在操作系统的命令提示符下输入 “qnc –i”。也可以通过在服务器启动时输入 “qnc nserver” 启动 qnc.exe。如果在服务器崩溃时不生成 rip 文件,那么请检查 qnc.exe 是否已启用。通常,rip 文件创建在 data 目录中。 nsd(domino 6 和更高版本) 如前所述,domino 6 和更高版本提供 nsd 特性。这个文件包含关于服务器崩溃时的状态信息。有关更多信息,请参阅本文前面的 “nsd 分析” 一节。 内存转储(domino 6 和更高版本) 在 domino 6 和更高版本中,可以在服务器控制台上使用命令 “sh memory dump” 来创建内存转储文件。内存转储文件包含关于 domino 当前使用的内存的信息。这在故障诊断性能问题和内存泄漏时非常有用。通常,内存转储文件位于 data\ibm_technical_support 目录中。内存转储文件名包含一个时间戳,表示生成 nsd 时的时间。例如: memory_kirantp_2005_09_14@17_50_08.dmp 注意:要将可用内存记录到文件,而不是在服务器控制台上查看它,请输入下面的服务器控制台命令: sh memory dump >memory.txt http 请求日志 为了故障诊断与 domino web 服务器崩溃和挂起有关的问题,lotus software technical support 通常会要求您创建 http 请求日志。要为请求日志启用默认设置,请编辑服务器的 notes.ini 文件,并添加 httpenablethreaddebug=1 这一行。这将 http 请求日志记录设置为默认级别。(要将日志记录级别设置为记录更详细的信息,请参阅 domino 管理文档。)也可以通过在 domino 服务器控制台输入 “tell http debug thread on | off” 动态地启用 http 请求日志记录。启用了 http 请求日志记录之后,domino 就会创建一系列名为 htthr*.log 的文件,例如 htthr_a40_10_20050914@171556.log。 http 请求日志记录应该只用于故障诊断特定的问题,并且通常是在 lotus software technical support 的指导和帮助下完成的。不要将请求日志记录用于其他目的,比如一般管理。这些日志文件随着时间会不断增大,所以不应该长时间启用该设置,否则会消耗掉所有可用的设备空间。 automatic data collection notes/domino 6.0.1 引入了自动诊断数据收集工具,也叫做 automatic data collection,或者简称为 adc。automatic data collection 只意味着,当 notes 客户机或 domino 服务器崩溃时,该程序将收集调试崩溃时必需的所有数据,并在客户机或服务器重启时发送到一个 mail-in 数据库。然后,管理员就每个域具有一个位置,在这里,他们可以看到所有客户机和服务器已经发生的所有崩溃。这将有助于消除这样的情况,即管理员或用户在客户机或服务器崩溃时不能捕获适当的数据。
本文来源:https://shitiku.jxxyjl.com/ibmrenzhengfuxizhidao/6032.html
- 详细阅读
-
基于spring框架的系统|基于Spring框架的WebSphere应用开发3详细阅读
spring与websphere应用服务器的配合 spring与底层j2ee应用服务器还是存在一些需要结合的地方,这里给出was中的一些结合点。 使用was数据源 在java应用程序中,数据库的连接一般有两种方式来得到。一种是通过java sql drivermanager...
-
工科专业认证 经验|IBM专业认证经验总结(1)详细阅读
以下内容为针对电子商务(811),linux(101,102),aix(191),as 400(052,053),db2(512,513)认证考试的学习心得与经验总结,由2002年度ibm暑期夏令营全体营员经过讨论,整理,总结而成,希望可以给将要参加相应的认证培训的学生提供帮助。 电...
-
[基于spring框架的系统]基于Spring框架的WebSphere应用开发4详细阅读
共享库就是was专门用来解决不同应用程序之间共享jar或本地库文件的一种机制。共享库由一个名字、一个java类路径和 或一个装载jni库本地库路径组成。它可以分别在单元,节点和服务器级别定义。但是共享库定义了并不意味着它会被装载,只有当这个共享库与某个应用程序或应用服务器关联之后,它才...
-
【工科专业认证 经验】IBM专业认证经验总结详细阅读
以下内容为针对电子商务(811),linux(101,102),aix(191),as 400(052,053),db2(512,513)认证考试的学习心得与经验总结,由2002年度ibm暑期夏令营全体营员经过讨论,整理,总结而成,希望可以给将要参加相应的认证培训的学生提供帮助。 电...