我有一个在 VmWare ESX 上运行的 vps,上面装有 Ubuntu 8.04 LTS。它在过去 3 个月内运行顺利,但最近我们注意到了两个奇怪的错误。
a. 服务器挂了,今天是第二次了。挂起的原因很奇怪。我可以 ping 服务器,服务器返回响应正常。但是其他所有服务(如 sshd、apache、mysql 等)都没有响应。工作时,
telnet servername 22
Escape character is '^]'.
SSH-2.0-OpenSSH_5.X Debian-5ubuntu1
其他 Web 服务可以正常运行。当它挂起时,我可以与 22 和 80 建立 TCP 连接,但根本收不到任何响应。
telnet servername 22
Escape character is '^]'.
我该如何调试这个问题?是否有可以运行并定期记录状态的守护进程?请告诉我如何继续。
b. 另一个奇怪的问题是,最近我无法传输大于 100KB 左右的文件,只有 1-2 KB 左右的小文件可以传输。
scp anotherserver:filename .
或者
wget http://www.example.com/file
会卡住。还有大约 6GB 的剩余空间,所以我认为这不是问题。有什么提示我应该查看哪里吗?
答案1
我建议使用sar
(sysstat
或atsar
) 包。它每 10 分钟作为 cron 作业运行一次,并记录服务器的重要统计数据 - 内存使用情况、CPU 利用率、磁盘活动、网络活动等。
你可以像这样使用它:
显示处理器活动(默认)
sar -p
(或仅sar
)
显示内存(“ram”)统计信息
sar -r
显示从 27 日开始的内存统计信息
sar -r -f /var/log/sysstat/sa27
请注意,路径会根据您的安装而有所不同。在基于 redhat 的系统上,文件通常位于 中/var/log/sa/
,而如果您atsar
安装了软件包,则文件将位于 中/var/log/atsar/
,但模式是文件将以数字结尾,该数字表示收集数据的月份日期。
有些版本(例如atsar
)允许您简单地指定日期:sar -n 27
。检查安装附带的手册页以了解正确的语法以及您可以检索的数据。
安装并运行该程序后(您可能已经安装了!),您可以使用它收集的信息来了解崩溃前立即发生的情况。例如,如果报告显示您的内存已耗尽且可用交换空间倒计时为零,那么您将很清楚要查找什么。
有了这些信息,您可以设置额外的报告来更好地了解问题所在:例如,您可以编写一个简短的 bash 脚本来检查某些系统统计信息(例如/proc/meminfo
或的内容/proc/loadavg
),如果满足触发条件,也许会将适当的调试信息(如 的输出ps auwwxf
)附加到文件中,或通过电子邮件将信息发送给您。
答案2
检查您是否没有网络错误(使用 SNMP 或 WMI/CIM/WBEM 监控 ESX 服务器)。安装/重新安装 VMware Tools。检查您是否没有存储问题。当虚拟机没有响应时,您是否能够使用虚拟机的控制台?检查虚拟机是否未在 ESX 接口中交换。