找到速度慢的 CentOS 服务器的瓶颈

找到速度慢的 CentOS 服务器的瓶颈

我有一台运行 Centos 6 的虚拟机主机。它使用 apache/php/mysql 为 android 应用程序提供服务。当在线用户数量增加时,服务器响应非常慢。甚至与服务器的 ssh 连接也变得很慢。

那么我如何才能找到造成此问题的瓶颈并修复它?是 RAM 不足还是硬盘写入/读取过多,CPU 使用率过高,哪个程序导致了这种情况?

这是正常情况下 free -m 的输出:

             total       used       free     shared    buffers     cached
Mem:          1877       1714        162          0         16        202
-/+ buffers/cache:       1495        381
Swap:         1023        231        792

正常情况下htop的输出: htop 的输出

答案1

输出free -h显示,80% 的内存用于缓存和缓冲区以外的用途(1877 个内存中有 1495 个)。使用率相当高。此外,只有 202 个用于缓存,数量并不多。

在这种情况下,任何依赖磁盘 I/O 的操作都可能会很慢。问题在于您的工作负载是否受 I/O 限制。

当我们查看htop输出时,我们发现 2 个 CPU 的平均负载为 50%,但平均负载约为 2。

由此我们可以得出结论,平均负载的主要贡献者不是 CPU,而是 I/O。因此,您的工作负载似乎受 I/O 限制,并且只有极少量内存可用于缓存。

基于此,我认为内存不足是导致您遇到任何缓慢问题的主要原因。如果您将内存从 2GB 增加一倍到 4GB,您可能会看到显著的改进。

答案2

那么我如何才能找到造成此问题的瓶颈并修复它?是 RAM 不足还是硬盘写入/读取过多,CPU 使用率过高,哪个程序导致了这种情况?

可以是上述任何一种,也可以是上述的组合,或者全部。甚至可能是完全不同的东西。和你一样,没有额外的信息我们就无法做出决定。你需要安装监控,收集信息,分析收集到的信息,并根据发现的内容做出决定。

答案3

确保将您的应用程序托管在使用 SSD 的 VPS 上。

您可以尝试优化 Apache 和 MySQL 服务,并在有大量在线用户时密切监控 CPU 和 RAM 的使用情况。

相关内容