我注意到一个奇怪的问题,我的 Ubuntu (web) 服务器随机冻结,持续几秒钟,然后再次恢复。该服务器具有以下规格;
- 2 vCores of 2,4 GHz
- 8GB of RAM
- 40GB SSD
- 100 MBit network
我在服务器上主要运行以下服务;
- NGINX (webserver and proxy)
- Mysql
- Varnish
这个问题不是每天都会发生,但在发生的日子里,它通常发生得非常频繁(大约每 20 秒一次)。我正在运行 Netdata 作为网络监控工具,并使用 Newrelic 来处理关键问题。
这是从 Netdata 仪表板截取的 CPU 图表的屏幕截图,您可以看到服务器在发生冻结时停止报告统计信息。我发现有时在看到服务器冻结之前 IO/Wait 会达到峰值,但在阅读线程并在 Google 上搜索高 IO/Wait 之后,我找不到任何有用的信息,除了该[jbd2/vda1-8]
进程不断写入磁盘。
当运行监控工具时,top, ps, iotop and htop
我没有看到任何进程使用过多的资源,即使出现冻结问题。
当使用托管服务提供商 (OVH) 的 KVM 登录服务器时,我看到以下消息;NMI watchdog: BUG: soft lockup CPU#0/1 stuck for 21s! [process]
。此外,研究该错误消息也没有提供太多信息或解决方案。我目前不知道是什么原因导致了这些问题,所以任何帮助都值得感激。
答案1
您的 VPS 可能正在限制 CPU 和磁盘使用率,当限制太严重时会导致明显的冻结。通过 检查,在冻结期间(或冻结前/后)top
您的 CPU 时间是否很高。steal
答案2
我不能像其他人一样发表评论,但必须给出“官方”答案,尽管我所能提供的只是猜测。:-) 由于它是 VPS,即虚拟机(显然是 KVM),我可以想象您的托管商确实有一些正在进行的幕后基础设施工作,或者更确切地说,存在可靠性问题。这可能意味着您的 VM
- 由于某种原因,VM 从一台物理服务器迁移到另一台物理服务器(这需要 vcpus 暂时停止,以便 VM 状态可以通过网络传输)。这种情况的迹象是(根据我的经验)系统时钟偏离了几秒钟,需要通过 ntp 守护程序进行更正。
- 您的服务器虚拟磁盘所在的存储短时间内无法访问(顺便说一句,这很可能不是本地 SSD,而是 SAN 或 NFS 服务器上的一些磁盘空间)。因此进程会卡在 I/O 上,这通常意味着即使 CPU 利用率较低,系统负载值也会增加。
正如我所说,这只是猜测,但也许与主持人谈谈是个好主意。