Vps 反应慢
Vps slow response
我买了一个 vps 来将我的后端从共享 hos 转移到它。我已经安装了 apache2、php、mysql 服务器。我的 vps 配置:
- 内存:6GB
- cpu: 6 核
- 固态硬盘:150GB
- 端口:1 Gbps
- os: Ubuntu 16.04
当我发出测试请求时,一切都在高速运行,我在 100 毫秒内收到响应。但是当我的用户(每天 25-35k)开始使用这个服务器时,它变得非常慢。有时我需要一两分钟才能得到回复,有时根本就没有回复。
我正在使用管理面板检查服务器负载。它告诉我所有请求每 5-10 分钟只有 400 KB 的传出数据和少于 50 KB 的传入数据。服务器使用不到可用 RAM 的一半。
我的 apache 配置是:
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 25
MaxSpareServers 75
ServerLimit 40
MaxClients 1000
MaxRequestsPerChild 0
MaxRequestWorkers 500
MaxConnectionsPerChild 100
</IfModule>
真想不明白,到底是什么东西导致响应速度这么慢。谁能帮帮我?
您的配置文件令人困惑,您运行正在使用哪个版本的 Apache?
从 2.3.9 开始,MaxRequestsPerChild
变为 MaxConnectionsPerChild
从 2.3.13
开始,MaxClients
变为 MaxRequestWorkers
仍然支持旧名称,但您不应该同时使用这两种名称。
无论如何,我想主要问题是您的 ServerLimit
和 MaxClients
/ MaxRequestWorkers
值。
让我们假设每个 Apache 实例使用 25MB 的 RAM(您可以使用 top
来大致了解这一点,但作为一个大概的数字,我会 运行 使用 25MB)。你有 6GB 可以玩,但 mysql 需要一些,所以如果你给 Apache 3GB 3072/25 = 122.8 MaxClients
你的 MinSpareServers
/MaxSpareServers
值也很高,我会把它们降低。
我会从这样的事情开始,然后修改 MaxClients
/ ServerLimit
的值(两者使用相同的值)以及 MaxRequestsPerChild
:
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxClients 100
ServerLimit 100
MaxRequestsPerChild 100
</IfModule>
然后重启Apache进行压力测试
我买了一个 vps 来将我的后端从共享 hos 转移到它。我已经安装了 apache2、php、mysql 服务器。我的 vps 配置:
- 内存:6GB
- cpu: 6 核
- 固态硬盘:150GB
- 端口:1 Gbps
- os: Ubuntu 16.04
当我发出测试请求时,一切都在高速运行,我在 100 毫秒内收到响应。但是当我的用户(每天 25-35k)开始使用这个服务器时,它变得非常慢。有时我需要一两分钟才能得到回复,有时根本就没有回复。
我正在使用管理面板检查服务器负载。它告诉我所有请求每 5-10 分钟只有 400 KB 的传出数据和少于 50 KB 的传入数据。服务器使用不到可用 RAM 的一半。
我的 apache 配置是:
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 25
MaxSpareServers 75
ServerLimit 40
MaxClients 1000
MaxRequestsPerChild 0
MaxRequestWorkers 500
MaxConnectionsPerChild 100
</IfModule>
真想不明白,到底是什么东西导致响应速度这么慢。谁能帮帮我?
您的配置文件令人困惑,您运行正在使用哪个版本的 Apache?
从 2.3.9 开始,MaxRequestsPerChild
变为 MaxConnectionsPerChild
从 2.3.13
MaxClients
变为 MaxRequestWorkers
仍然支持旧名称,但您不应该同时使用这两种名称。
无论如何,我想主要问题是您的 ServerLimit
和 MaxClients
/ MaxRequestWorkers
值。
让我们假设每个 Apache 实例使用 25MB 的 RAM(您可以使用 top
来大致了解这一点,但作为一个大概的数字,我会 运行 使用 25MB)。你有 6GB 可以玩,但 mysql 需要一些,所以如果你给 Apache 3GB 3072/25 = 122.8 MaxClients
你的 MinSpareServers
/MaxSpareServers
值也很高,我会把它们降低。
我会从这样的事情开始,然后修改 MaxClients
/ ServerLimit
的值(两者使用相同的值)以及 MaxRequestsPerChild
:
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxClients 100
ServerLimit 100
MaxRequestsPerChild 100
</IfModule>
然后重启Apache进行压力测试