产品:Lotus Domino
平台:Windows
版本:8.x,7.x,6.x

问题描述:
在Windows平台上,Domino服务器的HTTP任务挂起的时候,管理员该如何收集数据呢?

解答:
当Windows平台上的HTTP服务器挂起时,收集数据的流程如下:

1. 在服务器上设置以下调试参数:

CONSOLE_LOG_ENABLED=1
DEBUG_THREADID=1
DEBUG_CAPTURE_TIMEOUT=1
DEBUG_SHOW_TIMEOUT=1
HTTPEnableThreadDebug=1

方法一:在服务器的notes.ini文件中加上以上几行,完成后重新启动 Domino 服务器,使它们生效。
方法二:如果服务器不能重新启动的话,您可以通过以下命令的方式来动态启用这些参数:
start consolelog
set config DEBUG_THREADID=1
set config DEBUG_CAPTURE_TIMEOUT=1
set config DEBUG_SHOW_TIMEOUT=1
tell http debug thread on

特别注意:
a)增加 HTTPEnableThreadDebug 参数将会打开http线程调试功能。一般情况下,在此功能开启后,并不会立刻出现挂起。
因此,这些httpr.log文件会持续增大。为了控制这些文件的大小,应该每天删除这些日志文件直到服务器挂起。
b)在Notes.ini的最后一定要有一个空行。

2 当http server挂起后,请尝试用notes client连接server。了解Notes客户端能否连接服务器对分析问题会有所帮助。

3 当服务器挂起,在Domino控制台上执行如下命令:
sh server
tell http show thread state
sh task debug
sh task time
sh user
sh stat

4 用命令行手工收集nsd日志。

下面是如何收集nsd的提示:
I 打开一个命令窗口
II 进入domino data目录,例如"cd c:\lotus\domino\data"
III 在Domino程序目录下执行nsd,例如"c:\lotus\domino\nsd"
IV 当nsd运行结束,再运行一次 nsd 以收集两次数据作为对比
V 退出Domino服务器。请在Domino控制台输入'q'或者'quit'命令来退出Domino,如果服务器不能正常退出,就需要用'nsd -kill'这个命令来杀掉所有Domino进程。

5 需要收集的数据有:
- nsd log, 文件名: nsd_<plaftform>_<ServerName> _date@time.log该E-mail地址已受到防止垃圾邮件机器人的保护,您必须启用浏览器的Java Script才能看到。 , date/time 应是运行nsd的时刻
- console log, 文件名: console_name_yyyy_mm_dd@hh_mm_ss.log,the date/time 应是服务器最后一次启动的时间
- SEMDEBUG txt, 文件名: SEMDEBUG_name_yyyy_mm_dd@hh_mm_ss.TXT, the date/time 应是服务器最后一次启动的时间
- httpr log,文件名:htthr_<pid>_<tid>_<YYYYMMDD@HHMMSS>.log

上面的文件位于Domino Data目录,IBM_TECHNICAL_SUPPORT 子目录。

请备份位于IBM_TECHNICAL_SUPPORT目录下的所有文件,并且首先发送nsd log, console log和SEMDEBUG txt给IBM Lotus技术支持工程师。
IBM工程师在第一次数据检查后会向您索取需要的htthr log。

如果这些文件太大而不能通过email发送,请上传这些文件到IBM的ftp站点。上传之前请将这些文件压缩成一个zip文件包,并且用IBM技术支持工程师给您的case号来命名这个zip文件。例如:如果你的PMR号码是06572,999,738,服务器crash时间是July 3,则命名这个文件为06572,999,738,crash,July3.zip

FTP站点信息
ftp server: ftp.emea.ibm.com
user: anonymous
password: email address

上传ftp所需命令:
>cd /toibm/lotus
>bin
>put 06572,999,738,crash,July3.zip

6 参数的参考解释
a)."CONSOLE_LOG_ENABLED" -- 将控制台内容输出到文本文件
b)."DEBUG_THREADID" -- 在控制台内容前加上产生这条输出的进程号和线程号
c). "DEBUG_CAPTURE_TIMEOUT" 和 "DEBUG_SHOW_TIMEOUT" -- 捕捉Domino内部信号灯超时信息并输出到SEMDEBUG*.TXT文件
d) "HTTPEnableThreadDebug" -- 开启http线程调试

影响:
a)增加上面的参数会要求更大的磁盘空间,特别是"HTTPEnableThreadDebug"参数。