博客
电影
宝箱
友链
关于
<
《巴斯特·斯克鲁格斯的歌谣》影评
记录Google Analytics遇到的问题
>
2核1G内存的服务器能承载多少人访问
作者:
Cifer
类别: 技术·运维
时间:2018-11-17 18:59:52
字数:2410
版权所有,未经允许,请勿转载,谢谢合作~
### 使用Jmeter对个人网站进行压力测试 其实<a href="https://www.boatsky.com">本站</a>一天访问量也没多少,无须担心这个问题,但多年前的好奇,可算找了个时间满足了一下。 网站的承载量影响因子太多了,这里简要的贴出因子: ##### 服务器 服务器是<a href="https://bwh88.net/aff.php?aff=39300">bwg</a>,cn2线路,配置如下 RAM: 1024 MB CPU: 2x Intel Xeon Link speed: 1 Gigabit ##### 网站 系统 Centos7 反向代理 Nginx 语言 PHP,使用了PHP-FPM 进程管理 数据库 MySQL 被测页面 逻辑简单,单页只有两到三次取出数据库数据展示而已,大多是几十至几百kb的页面,极少图片。比如首页只有136kb,因为是国外的路线,无缓存情况下,电信/联通 网络打开一般是2s-4s ##### 网站PHP-FPM配置 低端配置的服务器中,内存是一个关键问题,本人曾经使用500M内存的服务器部署网站,结果三番两次死机,原来常常内存不足,所以1G是一个最低的内存需求。 在本机中,内存占用大头主要为MySQL占用230M,其他占用不大,而php-fpm每个线程占用22M,默认情况下,其占用个数最大可达50个,完全可以把服务器搞挂,所以需要设置一个安全的最高值32,初步预估本机最多可启用的安全个数是32个,。 修改 /etc/php-pfm.conf/www.conf ``` pm = dynamic ;动态分配子进程个数 pm.max_children = 32 ;同一时刻能够存货的最大子进程的数量 pm.start_servers = 10 ;在启动时启动的子进程数量 pm.min_spare_servers = 10 ;处于空闲"idle"状态的最小子进程,如果空闲进程数量小于这个值,那么相应的子进程会被创建 pm.max_spare_servers = 32 ;最大空闲子进程数量,空闲子进程数量超过这个值,那么相应的子进程会被杀掉。 ``` ##### JMeter <a href="https://jmeter.apache.org/" target="_blank">JMeter</a>是开源的压力测试工具,使用简单,功能强大,网上教程也很多,不再重复细节,只是简单介绍一下。 1. 如使用window,在官网下载 apache-jmeter-5.0.zip,不要下载apache-jmeter-5.0_src.zip。 2. 需要安装JDK8(或说jdk1.8)以上版本支持,记得配置Java环境变量。 3. 为防止客户端内存不足,可考虑修改apache-jmeter-5.0\bin\jmeter.bat的对应内存设置,增加内存,比如 ``` set HEAP=-Xms1g -Xmx8g -XX:MaxMetaspaceSize=4000m ``` 4. 点击bin\jmeter.bat打开JMeter,在图形界面做相关配置,具体内容参考<a href="https://jmeter.apache.org/usermanual/build-web-test-plan.html" target="_blank">官网入门教程</a>。但是只是在图形界面做配置,不要运行test,因为系统提示“Don't run load test using GUI mode !” 5. 保存上述用例后,使用 ``` d:\temp\apache-jmeter-5.0\bin\jmeter.bat -n -t m60.jmx -l m60.cvs -e -o m60 // d:\temp\是解压目录 // m60.jmx是第4步保持的测试用例,因为在当前目录,所以无需路径 // m60.cvs是测试结果导出文件的cvs格式 // m60是测试结果导出的目录,里面有html格式的结果,做的很惊艳 ``` 运行,运行期间,可以在服务器时时查看CPU、内存等运行情况,并同时用浏览器点击网站页面,体验高峰期访客的速度。 ### 2核1G内存的服务器能承载多少人访问 第一个用例中,经过多次试验,网络不拥堵的情况下,只访问首页、并发情况下、持续访问1分钟。 30人访问,平均时间2s 60人访问,平均时间3.4s 80人访问,平均时间4s,错误率0.06% 100人访问,平均时间5s,错误率0.1% 150人访问,平均时间8s,错误率0.7% 200人访问,平均时间9s,错误率13% 以上并发时,因为我们的php-fpm限制,内存完全够用,CPU占用率保持在94%以下,所以单一页面而言,如要保证5s内返回结果,并发不能超过100。 为了防止偶然性,第2个用例,我们随机用了10个页面测试,更精确一些。 60人访问,平均时间3.6s,<a href="//www.boatsky.com/static/demo/jmeter/m60/index.html" target="_blank">详情点击查看</a> 80人访问,平均时间4.9s ,<a href="//www.boatsky.com/static/demo/jmeter/m80/index.html" target="_blank">详情点击查看</a> 然而这个测试遇到两个问题: 其一,国内访问国外的服务器速度本来就慢,难以精确的表达服务器真实速度。 其二,本人客户端下载速度最大只有1M/s的,受到这个值所限,并发时下载时间偏长。 综上来说,在打开速度可接受(2s-4s)的范围内2核1G内存的服务器最大并发是60,根据网上并发用户与在线用户5%-20%的比例,最大在线人数为300-1200人,如最大在线比当天全部用户是10%,则可承载每日3000-12000人。
如果觉得有帮忙,您可以在本页底部留言。
相关推荐:
v2ray+ws+tls+cloudflare+nginx实现一台服务器两用
升级到php7.3与laravel5.8的问题记录
Navicat远程连接Linux上MySql
Centos7+Nginx+PHP+MySQL搭建网站
Linux之新手村攻略
……
更多
<
《巴斯特·斯克鲁格斯的歌谣》影评
记录Google Analytics遇到的问题
>
全部留言
我要留言
内容:
网名:
邮箱:
个人网站:
发表
全部留言