有人告诉我要切换到 nginx 或至少切换到 mpm_worker。但实际上,即使使用 mpm_prefork,我如何才能估计我的服务器是否真的没有过载?
我的系统是:
- GCP 1 CPU + 3.75GB
- Debian 8
- 带有 mpm_prefork 的 Apache 2.4
- Varnish缓存,Memcache
一些 php.ini 设置
max_execution_time = 30
max_input_time = 60
memory_limit = 1536M
其他一些各种标准的 apache 模块,没有 fastcgi 和 php-fpm。
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>
KeepAlive Off
我上面有大约 20 个小型 wordpress 博客。
那么我可以在所有网站上同时容纳多少个用户呢?我不需要确切的数字。我想知道是 10 个、100 个还是 1000 个?可能不是 10000 个。但如果同时在线人数是 250 人左右 - 我认为目前还不错。
另外,我应该将内存限制设置为 3GB 吗?或者让剩下的 2GB 供 varnish 使用是个好主意?
Completed 1000 requests
Finished 1000 requests
Server Software: Apache/2.4.10
Server Hostname: sochi.asp.sale
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
Document Path: /
Document Length: 199165 bytes
Concurrency Level: 100
Time taken for tests: 12.041 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 199546499 bytes
HTML transferred: 199165000 bytes
Requests per second: 83.05 [#/sec] (mean)
Time per request: 1204.067 [ms] (mean)
Time per request: 12.041 [ms] (mean, across all concurrent requests)
Transfer rate: 16184.28 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 12 711 1471.9 307 6868
Processing: 23 492 960.2 253 7588
Waiting: 2 302 957.0 76 7043
Total: 35 1203 2005.6 524 7629
Percentage of the requests served within a certain time (ms)
50% 524
66% 534
75% 608
80% 644
90% 7164
95% 7186
98% 7188
99% 7189
100% 7629 (longest request)
答案1
我猜,可能不到 100 就会开始变慢。作为参考,我本周对客户服务器进行了负载测试。规格是:4 核 4GB RAM 2 核 litespeed 带 lsapi 处理程序 PHP 7 MariaDB 10 并且是一个编码非常好的网站。
最慢的页面可能需要 300 个并发连接,然后每页的加载速度才会低于 4 秒。
当没有负载时,TTFB 约为 50ms
话虽如此,我不太了解 Nginx+varnish 能处理什么,所以你可能会得到类似的结果。不过我建议添加额外的核心,并降低 PHP 内存限制。如果一个简单的 wordpress 博客需要超过 256M,那么就出问题了。
最简单的方法是自己进行负载测试 ->https://httpd.apache.org/docs/2.4/programs/ab.html
答案2
考虑到您有 Varnish,如果出现以下情况,它很容易就 > 1000:
- 您已正确配置 Varnish (VCL)
- 博客没有太多的动态特性(即不是 Woocommerce 支持的商店) - 大多是静态文章。