小型 VPS 上的 Apache 负载测试
出版日期:
更新:
技术文章 > 小型 VPS 上的 Apache 负载测试
2026 状态和安全使用
结论:本文记录的是一次VPS实验,并非通用的Apache并发限制。容量取决于响应工作、MPM、工作线程限制、保持活动状态、TLS、CPU、内存、存储、网络、客户端放置以及您定义为可接受的延迟目标。
你将学到什么
- 最初的测试是如何安排的,以及观察到的数据显示了什么(或没有显示什么)。
- 哪些 Apache 和操作系统指标有助于识别第一个瓶颈。
- 如何设计具有预热、百分位数、错误和服务器端遥测功能的可重复负载测试。
适用人群:工程师计划在小型 VPS 上进行首次网络服务器实验。
截至 2026 年的适用情况:以下测量结果是从作者的原始环境中保留的,并且未针对此更新重新运行。请勿将它们用作当前供应商基准或生产规模建议;测试您自己的应用程序和失败阈值。
安全注意事项:原始文章中的命令和配置示例尚未在当前生产环境中重新运行。应用之前,请在单独的测试环境中验证支持的版本、备份、访问控制和回滚步骤。
官方主要来源
概述。
这项历史测试记录了作者环境中单台 Apache 服务器处理并发请求的情况。结果仅作为案例,不应直接用于当前 VPS 容量规划。
这次只对WEB(Apache)进行了测量,但对WEB/AP服务器(Apache和Tomcat)的测量,请参考下面的文章。
1. 测量
1-1. 测量环境
以下是将进行测量的环境。
■租赁服务器信息
| CPU | 2core |
|---|---|
| memory | 1GB |
| SSD | 50GB |
■服务器信息
| OS | CentOS 7.4 64bit |
|---|---|
| 网络服务器 | Apache HTTP Server 2.4.41 |
1-2. 测量方法
测试使用基于 Java 的负载测试工具 JMeter,逐步增加并发请求,直到服务器无法继续满足处理要求。
具体条件包括。
- 要求间隔时间:5秒。
- 同时请求的数量:10例。(测量结果逐渐增加,每次10例。)
- 测量时间:60秒。
测量时间为 "60秒",请求间隔为 "5秒",所以你要重复访问系统12次(60÷5)。
1-3. 测量结果
下面先给出结果;这些数据仅适用于文中所述测试环境。
| CPU:2core memory:1GB SSD:50GB | 最多可以同时处理120个请求。 |
|---|
这一测量的结果显示了上述情况。 上述结果表明,可以推断出以下几点。 在选择服务器规格时,尽量将此作为一个标准。
| CPU:1core memory:512MB SSD:25GB | 最多可以同时处理60个请求。 |
|---|---|
| CPU:2core memory:1GB SSD:50GB | 最多可以同时处理120个请求。 |
| CPU:3core memory:2GB SSD:100GB | 最多可以同时处理240个请求。 |
在这次特定的静态页面基准中,“CPU:1 核、内存:512 MB、SSD:25 GB”的环境完成了测试负载。 这不能直接换算为可支持的用户人数。
2. 测量结果的细节
下面记录测试条件和结果,便于理解这些数字的适用范围。
2-1. WEB服务器(Apache)的测量
针对用HTML创建的页面,重复的请求被抛出。 这是一个简单的页面,没有PHP处理或JavaScript的复杂性。
测量结果显示如下。
- 对于10个同时的请求⇒OK
- 对于20个同时请求⇒OK
- 对于30个同时请求⇒OK
- 对于40个同时请求⇒OK
- 对于50个同时请求⇒OK
- 对于60个同时请求⇒OK
- 对于70个同时请求⇒OK
- 对于80个同时的请求⇒OK
- 对于90个同时请求⇒OK
- 对于100个同时请求⇒OK
- 110个同时请求⇒OK
- 对于120个同时请求⇒OK
- 对于130个同时请求⇒NG
在第130个案例中发生了错误。 其原因是与Apache的连接错误。 这时服务器的状态如下。
- CPU利用率:26%
- 内存使用率:100%
完全缺乏内存是瓶颈所在。
对于稍微有点怪癖的人来说,Apache多处理模块(MPM)的配置如下。 MPM被简单地解释为允许Apache并行处理多少的设置。
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>
值得关注的设置是 "MaxRequestWorkers "的 "250"。 这是对Apache可以同时处理的最大案件数的一个设置。 '250',因此可以最大限度地并行处理250个案例,但看一下内存的使用情况,每个案例大约使用8MB的内存。
它似乎正在使用960MB的内存(8M x 120个进程),设置值为'250',但似乎不可能创建超过'120'个进程。
注意:服务器的内存几乎达到了1G的极限。
在实际操作服务器时,如果还包括了PHP和Java,限制在100例左右,如果有空间,可以同时并行处理80例。
当只安装和运行Apache,规格为 "CPU:2核,内存:1GB,SSD:50GB "时,发现同时访问的数量 "120 "是极限。
2-2. 考虑
从这里开始,它成为一个考虑因素,但由于内存是瓶颈,如果改变内存,可以并发处理的进程的数量将增加。
【在场。(memory1GB)】
- memory:1GB
- 阿帕奇线程的数量:120例
- Apache中每个线程的内存消耗:8MB
- 阿帕奇的内存消耗:960MB(120例×8MB)
【变化后(memory2GB)】
- memory:2GB
- 阿帕奇线程的数量:240例。
- Apache中每个线程的内存消耗:8MB
- 阿帕奇的内存消耗:1920MB(240例。×8MB)
如果内存增加到2GB,就有可能将案件数量增加一倍,达到约240个并发。 如果内存增加到3GB,似乎可以做更多的并发处理,但Apache的MPM的 "MaxRequestWorkers(可并发处理的最大案件数)"是 "250",所以如果内存进一步增加,也需要对这里进行调整。 反之,如果内存减半,则会出现如下情况。
【变化后(memory512GB)】
- memory:512GB
- 阿帕奇线程的数量:60例。
- Apache中每个线程的内存消耗:8MB
- 阿帕奇的内存消耗:480MB(60例。×8MB)
3. 摘要
本文记录了 Apache 在指定条件下的并发请求测试。容量规划还应加入真实响应内容、TLS、峰值流量、客户端行为和可接受延迟等因素,不能由这一次测量推算固定用户数。
该调查是基于这样的假设:没有其他软件在以边缘性能运行。 建议选择一个有点回旋余地的规格,因为它是一个边际值。