![该托管商的另一台服务器](https://linux22.com/image/712300/%E8%AF%A5%E6%89%98%E7%AE%A1%E5%95%86%E7%9A%84%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我提供了 VPS,使用 virgin Debian 时经常挂起:简单的 ssh 命令响应时间太长。这很糟糕 :(
我做了一个基准测试:每 2 分钟启动 ffmpeg 转换 30 秒低质量视频。通常需要 3 秒,但挂起时间约为 20 秒。
我还每 2 分钟 ping 一次 VPS。图表相同。
良好的表演间隔持续时间约为 15 分钟,糟糕的表演间隔持续时间约为 25 分钟
你可以玩数据https://docs.google.com/spreadsheets/d/1XYQV-5mompcFidOHL7XzbvvrVnjn_ZHnvBaND6RrrVY/edit?usp=sharing
该托管商的另一台服务器
同样的情况,但并不关键
如何避免这种情况?
似乎托管在同一台专用服务器上的邻近 VPS 会定期启动高 CPU 负载任务。可能是系统备份或相同的任务。据我所知,内存有保证,但 CPU 没有保证。
另外,我还有这家主机商的另一台 VPS,看上去还不错(也有同样的峰值,但要小得多)
对于这个项目来说,专用服务器太昂贵了。
这是主机独立的情况,更换提供商是个坏主意
答案1
通常情况下,您支付的费用与实际费用相等,相对便宜的托管提供商只能通过多次过度使用 CPU 来以具有竞争力的价格提供服务,即在具有 48 个内核和 128 GB 内存的服务器上,他们可以尝试托管可能超过 100 个 1 内核/1GB 内存的 VPS 实例。只要大多数 VPS 处于空闲状态,那么就可以正常工作,但当太多 VPS 运行 CPU 密集型负载时,就会开始崩溃。
Linux 内核实际上有一个专用计数器,可以显示这种情况是否正在发生以及发生的频率,即“CPU 窃取时间”计数器,显示为%st
。top
您可能应该从 VPS 开始监控它。
CPU 窃取时间是一种非自愿的等待,当您的 VPS 尝试运行某些操作但虚拟机管理程序不将请求的 CPU 周期分配给您的 VPS,而是分配给同样在竞争 CPU 时间的邻近 VPS 之一。
为缓解这种情况,你可以采取以下措施:
- 花更多的钱去寻找一个不会过度承诺并能为您提供有保障的资源的供应商。
- 当您检测到较高的窃取时间时,请终止您的 VPS,当您重新启动/重新部署时,很可能它会在另一台负载较少的服务器上重新启动。