我测量了使用VPS租赁服务器的WEB/AP服务器(Apache和Tomcat)在同一时间可以处理的最大数量。
出版日期:2021年1月1日。
INFOMARTION > 我测量了使用VPS租赁服务器的WEB/AP服务器(Apache和Tomcat)在同一时间可以处理的最大数量。
概述。
我测量了WEB/AP服务器(Apache和Tomcat)能够同时处理的最大案例数,我想写一下结果。 我们对可以提供的最大请求数量感到好奇,所以我们进行了一项调查。 将此作为选择VPS服务器规格的参考。
这一次,在WEB/AP服务器(Apache和Tomcat)上进行了测量,但请参考下面的文章,只对WEB(Apache)进行测量。
我测量了使用VPS租赁服务器的网络服务器(Apache)能够同时处理的最大案件数量。
1. 测量
1-1. 测量环境
以下是将进行测量的环境。
■租赁服务器信息
CPU | 2core |
---|---|
memory | 1GB |
SSD | 50GB |
■服务器信息
OS | CentOS 7.4 64bit |
---|---|
网络服务器 | Apache HTTP Server 2.4.41 |
AP服务器 | Apache Tomcat 9.0.27 |
DB服务器 | PostgreSQL 10.2 |
Java | OpenJDK 11 |
1-2. 测量方法
我想用JMeter来测量这个问题。 JMeter是一个在Java中运行的负载测量工具。 该工具允许在同一时间抛出大量请求。 我们想用JMeter逐步增加同时请求的数量,并增加负载,直到无法再处理。
具体条件包括。
- 要求间隔时间・・・5秒。
- 同时请求的数量・・・10例。(测量结果逐渐增加,每次10例。)
- 测量时间・・・60秒。
测量时间为 "60秒",请求间隔为 "5秒",所以你要重复访问系统12次(60÷5)。
1-3. 测量结果
最后,很多人对服务器能处理什么规格、能处理多少的结论感兴趣,所以我想先说明一下结论。
CPU:2core memory:1GB SSD:50GB | 最多可以同时处理80个请求 |
---|
这一测量的结果显示了上述情况。 上述结果表明,可以推断出以下几点。 在选择服务器规格时,尽量将此作为一个标准。
CPU:1core memory:512MB SSD:25GB | 最多可以同时处理20个请求。 |
---|---|
CPU:2core memory:1GB SSD:50GB | 最多可以同时处理80个请求 |
CPU:3core memory:2GB SSD:100GB | 最多可以同时处理200个请求。 |
研究发现,一个约有20个用户规模的系统在 "CPU:1核"、"内存:512MB "和 "SSD:25GB "的情况下运行没有问题。
2. 测量结果的细节
我们在前面已经描述了测量结果,如果你对我们描述的是什么样的结果感兴趣,也请你查看未来将描述的测量结果细节。
2-1. WEB/AP服务器(Apache,Tomcat)测量
该请求是在用户从登录屏幕登录的情况下抛出的,在登录后,显示的是列表屏幕。 顺便说一下,这个屏幕是用Spring框架构建的,包括认证功能。
测量结果显示如下。
- 对于10个同时的请求⇒OK
- 对于20个同时请求⇒OK
- 对于30个同时请求⇒OK
- 对于40个同时请求⇒OK
- 对于50个同时请求⇒OK
- 对于60个同时请求⇒OK
- 对于70个同时请求⇒OK
- 对于80个同时的请求⇒OK
- 对于90个同时请求⇒NG
在第90个案例中发生了错误。 其原因是与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的内存。
Java似乎使用了320MB的内存(248M的堆和72M的元空间),Apache使用了640MB的内存(8M x 80个进程),尽管Apache的MPM设置值是'250',但它似乎不能创建超过'80'个进程。
※服务器有1G的内存,所以Apache和Java的总内存是960MB,几乎达到了上限。
AP服务器(Java端)工作正常,所以瓶颈是WEB服务器(Apache)。
当Apache和Tomcat安装并运行时,我们发现在规格为 "CPU:2核,内存:1GB,SSD:50GB "的情况下,同时访问的数量 "80 "是极限。(假设Java的内存设置为:堆248M,元空间72M。)
2-2. 考虑
从这里开始,就成为一个考虑因素,但由于内存是瓶颈,如果改变内存,可以并发处理的进程数量将增加。
【在场。(memory1GB)】
- memory:1GB
- 阿帕奇线程的数量:80例。
- Apache中每个线程的内存消耗。:8MB
- 阿帕奇的内存消耗:640MB(80例。×8MB)
- Tomcat的内存消耗:320MB(2.48亿用于HEAP。、72米为元空间。)
- Apache+Tomcat的内存消耗:960MB
【变化后(memory2GB)】
- memory:2GB
- 阿帕奇线程的数量:200例
- Apache中每个线程的内存消耗。:8MB
- 阿帕奇的内存消耗:1600MB(200例×8MB)
- Tomcat的内存消耗:320MB(2.48亿用于HEAP。、72米为元空间。)
- Apache+Tomcat的内存消耗:1920MB
有了2GB的内存,就有可能同时处理200个案件。 如果内存增加到3GB,似乎可以做更多的并发处理,但Apache的MPM的 "MaxRequestWorkers(可并发处理的最大案件数)"是 "250",所以如果内存进一步增加,也需要对这里进行调整。 可能还需要对Java内存进行调整。 反之,如果内存减半,则会出现如下情况。
【变化后(memory512GB)】
- memory:512GB
- 阿帕奇线程的数量:20例
- Apache中每个线程的内存消耗。:8MB
- 阿帕奇的内存消耗:160MB(20例×8MB)
- Tomcat的内存消耗:320MB(2.48亿用于HEAP。、72米为元空间。)
- Apache+Tomcat的内存消耗:480MB
3. 摘要
描述了测量WEB/AP服务器(Apache和Tomcat)能够同时处理的最大案例数量的结果。 研究发现,一个约有20个用户规模的系统在 "CPU:1核"、"内存:512MB "和 "SSD:25GB "的情况下运行没有问题。
该调查是基于这样的假设:没有其他软件在以边缘性能运行。 建议选择一个有点回旋余地的规格,因为它是一个边际值。
谢谢你一直看到最后。