从零开始自制实现WebServer(十八) 您所在的位置:网站首页 安徽航嘉电子科技有限公司 从零开始自制实现WebServer(十八)

从零开始自制实现WebServer(十八)

2024-01-19 11:06| 来源: 网络整理| 查看: 265

文章目录 全流程实现博客链接前引(十八)---- 对服务器做最后的压力测试 WebBench压测小工具 项目迎来终章1、正确处理Vmware-Station 处理器设置(初步调试过程)2、正确处理Vmware-Station 处理器设置(设置结果)3、c10k压力测试 对比Linya学长的WebServer(短连接)3、c10k压力测试 对比Linya学长的WebServer(长连接 存疑?!)4、c10k压力测试 对比muduo库的Webserver(短连接) 结束语

全流程实现博客链接

从零开始自制实现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分钟给他做了 开开心心的 休闲的把接下来的事情做了 哈哈

最后几篇了 还是放个什么图片结束吧 放张我的虚拟机的文件夹们的图片结束吧 再放张目前项目代码统计 来开心愉快的结束这篇博客啦 在这里插入图片描述

在这里插入图片描述

ε=ε=ε=(~ ̄▽ ̄)~跑辣~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有