我有两台 Ubuntu 服务器:一台用作数据库服务器 (mysql),一台用作文件服务器,一台用作应用程序服务器。使用这三项服务,应用程序已经运行了几个月,没有出现任何问题。
现在我们发现每天早上 7:45 左右它确实会变慢。一小时后一切都会恢复正常,无需人工干预即可使用。我正在尝试找出问题所在...
是否有任何工具可以监控和记录 CPU、RAM、磁盘、网络使用情况?我该如何快速找到问题?
答案1
快速修复是隔离问题并找出罪魁祸首。
检查当时正在运行的 cronjobs,并将它们重新安排到不同的时间。
如果负担得起,请在那段时间内禁用网络。
如果问题仍然存在,请关闭所有不需要的服务。
正确的方法是查看您已在过程中收集的数据。正如前面所说,有很多方法可以做到这一点。我们使用 Cacti 图形系统,因为它提供了很好的视觉表现,您可以绘制几乎任何图形。
答案2
我发现sar
它很擅长指出导致系统缓慢的可能原因。atsar
在两个系统上安装该软件包。运行一天后,您应该有数据来查看系统缓慢时哪些资源被大量使用。数据将被收集,/var/log/atsar
最终将有 31 个每日文件。这是检查负载问题的绝佳工具。
我发现munin
是全面监控服务器的好工具。我尽量不在munin
可能过载的系统上运行服务器。对于您来说,您可能希望使用第三台主机作为服务器。 munin
每五分钟从每个客户端收集一次数据。然后将这些数据转换成图表。从图表中很容易看出哪个资源的负载最重。这有助于加快调查速度sar
。
要进行快速测试,只需登录到每台服务器并在问题期间运行 top。提前运行它有助于了解正常负载情况。如果平均负载长时间超过服务器上的核心数量,则您可能已经确定了导致速度变慢的服务器。可以使用 top 行来确定是 CPU(高用户百分比)还是其他资源(高系统百分比或高等待百分比)。您还可以查看内存利用率。
进程记帐包acct
可以告诉您在此期间哪些进程正在完成。您需要运行accton on
以启用进程记帐。dump-acct
可以运行该命令以可读格式转储数据。 man dump-acct
包括有关输出格式的信息。您可能希望进程在 7:45 左右开始。
答案3
是否有任何工具可以监控和记录 CPU、RAM、磁盘、网络使用情况?
您不会相信可用的工具数量。我使用的工具是 Nagios、、、、、mrtgsar
和大量自定义脚本。但它们只会告诉您系统有多慢 - 而不是iotop
top
ps
为什么它很慢。
导致系统运行缓慢的原因有很多种 - 既有机器上发生的事情(例如备份导致缓存刷新、批处理窃取 CPU 周期...),也有其他地方发生的事情(网络拥塞、大部分流量从本地转移到海外),更不用说系统快速运行时缺少某些事情(低水平的流量可能导致诸如缓存丢失、从配置不当的状态防火墙提前撤离连接等)。