文章目录
全流程实现博客链接
从零开始自制实现C++ High-Performance WebServer 全流程记录(基于muduo网络库)
前引
没想到这个系列写到第十七篇了 哈哈
写这段话的时候 已经是下午的1:52了 还没有吃午饭 这部分前引写了就去吃了
**争取今天下午和晚上把这个性能测试 和 这个项目上传
GitHub
以及
GitHub
上面的
ReadMe
还有一些其他的功能完善一下吧**
**毕竟这个也算是之后可能面试要用的正式项目了
readme
以及
github
的好多东西原来也只是浅浅学了一下 如果这个性能测试 之后我还要调一下我的虚拟机设置的处理器个数 我发现这个太影响我的服务器性能了… 而且到时候多次测试吧 争取测试做的正确一点 细致一点**
**
github
说实话 之前上传的时候 也是跟盲人摸象一样 这篇写完系统的去学学
github bash
方面的一些指令了**
事情还有好多 哈哈 但是现在至少心情还算愉悦 那这部分先写到这里吧 去次午饭了
(十八)---- 对服务器做最后的压力测试 WebBench压测小工具 项目迎来终章
1、正确处理Vmware-Station 处理器设置(初步调试过程)
刚刚才发现 这个原来也是一个学问
确实是 我设置过各种不同的处理器参数 我的服务器跑出来的性能确实就是天差地别 如何正确设置处理器参数 核心数量怎么设置才能让性能最高
我之前一直没有研究 现在好好的看一下
VMware : 处理器数量和每个处理器的核心数量
VMWARE虚拟机的CPU分配(VMWARE14):处理器数量、核心数量分配验证
VMware不同处理器、硬盘设置——性能对比
VMWare中的处理器数量和每个处理器的内核数量概念及查询方法
**我这里大概说一下 我的cpu是
i5-10400
然后是6核12线程
我刚刚发现我设置了1处理器 12内核 跑服务器的时候**
**我的
CPU
物理本机 占用率竟然是百分之百**
我再去试试我的服务器 设置为12线程 会不会性能更高一些
2、正确处理Vmware-Station 处理器设置(设置结果)
**我设置的是
1
处理器
6
核心 我设置
1
处理器
12
核心的时候
CPU
明显占用比更高**
**在
1
处理器
6
核心的时候 我电脑的
CPU
占用比只有
60
但我还是设置的
6
核心 够用就行**
因为我们是在相同环境下做性能测试 同机器对比即可
**内存的话 越多越好 尽量有
8GB
因为我设置的
4GB
在10000并发的时候 经常机器直接卡死… 没有多余的内存空间了 所以尽量还是多设置一点**
可能我机器性能就是这样了 也不花时间去调更多的参数了
反正测试的服务器都是在相同环境下测试的 都是关闭所有IO的
所以我们Lets Go 进入正题吧
3、c10k压力测试 对比Linya学长的WebServer(短连接)
**不知道是我测试用例有问题 还是确实是编写的时候有问题
我连最基本的
hello
用例都跑不了 而且主页返回的网址也是乱码…**
访问主页是这样的…
算了 这个样子的话 比我的服务器会多返回几个字节 但也无关大碍
**
/hello
用例确实跑不起 不知道什么问题…**
**算了 就用
/
主页这个
404 NOT FOUND
作为测评吧**
**下面是测评结果 确实
ET
工作模式 在高并发下 短连接的表现是比
LT
要好的 由于一次读操作可以一次把所有的连接都加进来 故ET在这方面确实更有优势**
3、c10k压力测试 对比Linya学长的WebServer(长连接 存疑?!)
下面就来测试一下长连接吧
**尽管我觉得挺不靠谱的 由于我这边最大打开文件描述符只有
65536
长连接又不自动关掉连接(默认不开启定时关闭连接功能)**
**但是看了看
Linya
学长是这样测试的 那我们也就这样 我觉得不是很靠谱的方法来测试一下吧**
**我个人也不太清楚 为什么可以有700多万的连接 用的这个Webbench有连接的版本 是用的
linya
学长提供的
Webbench
**
**真的不太懂连接原理 短连接在收到消息后里面关闭
我可以理解 长连接 我的服务器最大描述符才开了
65536
都是默认不关闭连接的 怎么做到测试的这么多的…**
**刚刚用
netstat
统计了一下 发现果真如同我的猜想一样 连接数被占满后就再也没有多出来了 我在不同的时段统计了三次 并且写入了文件 发现连接数在20000的时候 就再也没有动过了**
**从某个角度来说 可以说当我们文件描述符用到了上限时 我们的
idle
文件描述符起了大用 也可以说 从这边来说 这个长连接的测试 确实感觉是不太合理的**
如果是我理解有误 或者确实考虑不全面 欢迎大家下面留言交流
4、c10k压力测试 对比muduo库的Webserver(短连接)
**说实话 这个
WebServer
的框架结构 我也是绝大部分借鉴的
muduo
库
如果存在性能巨大差异 要不就说明 我的代码哪里出问题 出现了性能障碍 要不也没其他可能了**
如果性能有些许差异 是正常的 有可能muduo库相对我们做的前置工作更多 在连接的时候 调用了更多系统调用 比我们的更完善而导致表面的性能出现了差异
**那我们下面就来最后测试一下吧 最后说明
这些测试都是在本机上面进行的测试 关闭所有
Logging
也就是我去把所有的
Logging
都给注释 再重新编译了**
**还有 都是设置的6线程 因为本机为
6核12线程
环境都是相同的**
如果性能没有多少差异 或者差异不大 这才是我们想看到的
符合我们的预期的话 测试这一篇的话 就可以完美结束了 也说明我们的代码没有非常明显的性能陷阱了
十分符合我们的预期 这也说明我们的服务器没有明显的错误
没不存在明显的性能瓶颈
测试性能存在一定的偏差 这也是正常的
**哈哈 终于可以舒一口气了 这段时间一直不敢和
muduo
测 我怕到时候又忽然发现自己的服务器出现性能瓶颈 又回到之前的那几天 真的很难绷的查找性能瓶颈的那些天 就会发现总会出现各种各样的问题 然后自己不停的从早改到晚**
现在终于可以好好的松一口气了
结束语
我们的测试 明显没有跑到机器最高的性能 但是测试也是同样的环境 只需要横向对比 也可以知道 服务器是否达到预期性能 是否存在性能陷阱
至于如何优化虚拟机 如何设置虚拟机使其能够用尽本机的物理性能 这方面之前也想过要不要花点时间研究 但之后想了想还是作罢
优化后 与优化前 对比的服务器还是一样的
在稍微差一点的性能环境下跑 差距相对没有这么大
在好一点的性能环境下跑 性能差距也就会扩大 但也不至于扩大到难以想象的地步
**何况我本机的
cpu
也跑到了
70
在
12
核心的时候达到百分之百 但性能优化也不明显 说明瓶颈在其他地方… 这也说明没有优化虚拟机设置的必要了**
从这方面说明 服务器代码没问题 性能是高性能 有保障的即可
好了 磨蹭着磨蹭着 也下午6点了 待会还要去交毛概作业
花个15分钟给他做了 开开心心的 休闲的把接下来的事情做了 哈哈
最后几篇了 还是放个什么图片结束吧 放张我的虚拟机的文件夹们的图片结束吧 再放张目前项目代码统计 来开心愉快的结束这篇博客啦
ε=ε=ε=( ̄▽ ̄)跑辣~
版权归原作者 Love 6 所有, 如有侵权,请联系我们删除。