我们有一个在 Digital Ocean 上运行的餐厅在线菜单 Web 应用程序(laravel 后端 + vue.js 前端,MySQL)。
该应用程序在高峰时段开始变得非常慢,因此我们正在调查可能的原因。
我们需要解决的第一个谜团是了解问题是否出在我们的服务器规格上(即需要更多 CPU/内存)或代码/配置上。这是一个谜,因为我们显然有相互矛盾的信息。New Relic 监视器报告高峰时段的 CPU 利用率为 280%,但 Digital Ocean 在同一时间报告的 CPU 利用率仅为 30%。
如何发现哪些信息是正确的?我们还可以使用哪些工具来监控和发现瓶颈?
答案1
引用@HermanB 的回答:
Linux 负载不是实际百分比。
在 Linux 中,具有多个 CPU 和核心的系统将通过添加每个 CPU/核心的负载来计算负载,并且每个核心的负载可能会超过 100%。
换句话说,在具有 8 个核心的系统上,负载可以达到 800%,然后系统才被视为超载。
在该系统上,负载为 280% 意味着:
两个 CPU 实际上以 100% 的利用率运行
,而一些其他进程在剩余的 CPU 上运行,而这些 CPU 丝毫没有受到压力。
规格化(为了更容易地比较具有不同 CPU 数量的 Linux 系统)您会说系统以其容量的 280/800 = 35% 运行。