我有一台 RHEL 6.4 服务器,内存为 64GB,运行一个 Java 应用程序,该应用程序将 60 多个 war 文件加载到 tomcat 中。出于某种原因,每次加载时,每个用户都会被踢出。这包括物理服务器上直接连接的监视器。
服务器没有生成任何类型的崩溃日志,但无法登录。根据磁盘灯显示仍有磁盘活动。
我正在尝试确定此应用程序是否是导致问题的原因,还是仅仅是某些潜在硬件/软件问题的症状。据传闻,我可以说这种情况只发生在此应用程序中。即使运行 memtest86 也没有显示内存错误,并且在内存使用率为 100% 的情况下将负载提高到 160 的压力测试也没有崩溃。
我有两个问题:
- 是否有一个可以监控的进程可以终止所有连接(请记住这包括物理服务器上的 VGA 端口)
- 是否有任何工具可以让我“包装”此应用程序并准确查看终止发生的时间点?
编辑:没有找到连接被切断的原因。但是,我将物理驱动器移到了另一台服务器(相同的硬件),新机器上没有出现此问题。这让我相信某个地方存在硬件问题。
答案1
尝试将 strace 附加到其中一个登录 shell,然后将跟踪发送到文件,并将其放在后台。希望它不会被捕获。
就像是:
PID=''
FILE_OUT=''
strace -D -t -f -v -p ${PID} -o ${FILE_OUT}
这样你就能知道它收到了什么信号/命令导致它关闭
现在我想起来了,我会对其中一个登录名以及 java 应用程序进行 strace。您可以增加时间戳以查看两个线程之前/之后发生的事情。