MoonNet基准测试更新

news2024/11/26 0:25:01

基准测试

引言:为了展示MoonNet网络库支持的动态负载均衡功能,我进行了吞吐量测试,以突出其性能表现。由于该库的动态负载均衡策略包括动态线程调度,测试中的线程数变化是不稳定的。这种动态调整使得直接与其他库采用固定线程数的测试结果比较存在困难。

为解决这一问题,我特别设计了测试方法:在并发量高时,MoonNet的线程调度策略会将运行的线程数增加至初始化时线程池设置的最大值。因此,我选择将这一最大线程数作为动态负载均衡的测试基准,以此与其他库在相同的最大线程数条件下的性能进行公正比较。这种方法不仅保证了测试的有效性,同时也准确地反映了动态负载均衡在高并发环境下的性能优势。

测试环境

  • 服务器:阿里云 2 核 2G Ubuntu 服务器
  • 测试工具:使用 muduo 的 pingpong 客户端
  • 测试方法:在 1000 个并发连接下,运行 10 分钟,分别测试不同消息大小的吞吐量
  • 测试目标:4线程的TCP回声服务器,动态均衡是以2-4线程进行动态调整的,代码见bench目录

测试结果

吞吐量比较

并发数测试时长消息大小MoonNet(Dynamic)MoonNet(Static)muduoLibevent
100010 分钟1024 字节119.28mib/s102.06 MiB/s97.51 MiB/s95.22 MiB/s
100010 分钟4096 字节477.82mib/s373.76 MiB/s355.86 MiB/s281.47 MiB/s
100010 分钟8192 字节914.60mib/s669.08 MiB/s632.54 MiB/s561.58 MiB/s

数据可视化

为了更直观地展示不同库的吞吐量差异,以下是测试结果的柱状图:
在这里插入图片描述

测试总结

MoonNet网络库在动态和静态负载均衡模式下的表现显著优于其他常见网络库(muduo和Libevent),尤其在高数据负载条件下。通过动态调整线程数量以应对不同的网络负载情况,MoonNet能够有效提升系统的吞吐量和资源利用率。以下是测试的关键发现:

  1. 高吞吐量性能
    • 在1024字节消息大小测试中,MoonNet(动态)达到了119.28 MiB/s,比静态模式提高了16.88%,而与muduo和Libevent相比分别提高了22.32%和25.20%。
    • 在4096字节消息大小测试中,MoonNet(动态)的性能提升更加显著,达到477.82 MiB/s,比静态模式高出27.84%,与muduo和Libevent的差距分别为34.29%和69.71%。
    • 在8192字节消息大小测试中,动态负载均衡的优势持续扩大,MoonNet(动态)的吞吐量达到914.60 MiB/s,比静态模式高出36.76%,与其他两个库相比提升幅度分别为44.55%和62.80%。
  2. 动态线程调整的优势
    • MoonNet的动态负载均衡策略允许在高并发环境下根据实际负载动态调整线程数,从而最大化资源利用率和响应速度。这一策略在高数据负载测试中表现尤为出色,有效缓解了系统瓶颈,提高了处理能力。
  3. 资源效率与响应性
    • 动态负载均衡不仅提高了吞吐量,还通过智能线程管理优化了资源消耗,保持了较低的系统负荷,这对于需要长时间运行且资源敏感的服务端应用尤为重要。

结论

MoonNet网络库的测试结果表明,其动态负载均衡功能在处理高并发和大数据量的网络请求时,能够显著优化性能和资源利用率。这一特性使MoonNet成为一个适合高性能网络服务开发的优选框架,特别是在需要处理不断变化负载的现代网络环境中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2232236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RHCE——笔记

nfs服务器 一、简介 NFS(网络文件系统) 允许网络中的计算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源,主要在unix系列操作系统上使用。在NFS的应用中,本地NFS的客户端应用可以透明地读…

2023年SCRM系统排名分析及市场趋势解读

内容概要 当前,SCRM(社交客户关系管理)系统在企业运营中的重要性日益凸显,尤其是在快速发展的数字经济环境中。2023年的SCRM市场展现出多元化与专业化的趋势,不同企业在客户关系管理方面的需求各有不同,这…

上云管理之Git/GitHub/GitLab 详解(一)

上云管理之Git/GitHub/GitLab 详解(一) 引言1. GIT软件安装2.初始化配置与提交代码2.1. 初始化配置2.2 本地仓库代码提交2.2.1 初始化仓库并提交代码2.2.2 再次提交已修改的代码2.2.3 文件夹层次结构代码提交 2.3 GIT 的文件状态 3.GIT 分支3.1. 分支的切换与删除3.…

10款录屏软件来助你视频回放!!

现在互联网的普及,实时在线视频交流已是家常便饭,有时我们需要进行视频回顾,这就需要借助录屏软件。不管是用于游戏录制、课程制作、教学培训还是项目汇报等, 一款好的录屏软件都能起到事半功倍的效果。今天,我就来跟大…

Python复习2

一、封装函数 #自己封装len函数 s1 "hello,python" print(f"s1的长度为{len(s1)}")def my_len(data):count0for i in data:count 1print(f"{data}的长度为{count}")my_len(s1) 二、容器的排序(排序之后的结果都会变成列表&#xf…

利用EasyExcel实现简易Excel导出

目标 通过注解形式完成对一个方法返回值的通用导出功能 工程搭建 pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

基于java+SpringBoot+Vue的校园资料分享平台设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven mysql5.7或8.0等等组成&#x…

VuePress文档初始化请求过多问题探讨

1. 背景 公司有部门使用VuePress 1.0搭建平台的帮助文档&#xff0c;前期文档不是很多&#xff0c;所以没有暴露出特别明显的问题。但随着文档的逐步迭代和内容的增多&#xff0c;出现了大量的并发请求&#xff0c;总共有218个请求&#xff0c;导致服务器带宽耗尽、响应速度下降…

入门 | Kafka数据使用vector消费到Loki中使用grafana展示

一、Loki的基本介绍 1、基本介绍 Loki 是由 Grafana Labs 开发的一款水平可扩展、高性价比的日志聚合系统。它的设计初衷是为了有效地处理和存储大量的日志数据&#xff0c;与 Grafana 生态系统紧密集成&#xff0c;方便用户在 Grafana 中对日志进行查询和可视化操作。 从架构…

C语言 运算符

时间&#xff1a;2024.11.4 一、学习内容 1、算数运算符&#xff08;加、减、乘、除法和取余&#xff09; 通用细节&#xff1a; 1.整数计算&#xff0c;结果一定是一个整数 2.小数计算&#xff0c;结果一定是一个小数 3.整数和小数计算&#xff0c;结果一定是一…

LLM | 论文精读 | AAAI | EarthVQA:向可查询地球迈进的多模态视觉问答研究

论文标题: EarthVQA: Towards Queryable Earth via Relational Reasoning-Based Remote Sensing Visual Question Answering 作者: Junjue Wang, Zhuo Zheng, Zihang Chen, Ailong Ma, Yanfei Zhong 期刊: The Thirty-Eighth AAAI Conference on Artificial Intelligence (AA…

总结拓展十五:SAP物料分割评估

一、概述 在SAP中&#xff0c;物料的分割评估是指&#xff0c;对同一个物料做不同的价值设置。即&#xff0c;根据不同的条件&#xff0c;核算其价格及记录价格的相关属性。 二、物料主数据设置 1、物料主数据-会计1视图 只有价格控制“V”可以分割评估。 2、设置评估类型…

ai翻唱部分步骤

模型部署 我是用的RVC进行的训练&#xff0c;也可以使用so-vits-svc。 通过百度网盘分享的文件&#xff1a;RVC-beta 链接&#xff1a;https://pan.baidu.com/s/1c99jR2fLChoqUFqf9gLUzg 提取码&#xff1a;4090 以Nvida显卡为例&#xff0c;分别下载“RVC1006Nvidia”和…

[综述笔记]Deep learning for brain disorder diagnosis based on fMRI images

论文网址&#xff1a;Deep learning for brain disorder diagnosis based on fMRI images - ScienceDirect 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向…

HarmonyOS:UIAbility组件概述

一、概述 UIAbility组件是一种包含UI的应用组件&#xff0c;主要用于和用户交互。 UIAbility的设计理念&#xff1a; 原生支持应用组件级的跨端迁移和多端协同。支持多设备和多窗口形态。 UIAbility划分原则与建议&#xff1a; UIAbility组件是系统调度的基本单元&#xff0c…

jeecgbootvue2菜单路由配置静态文件夹(public)下的html

需求:想要在菜单配置src/assets/iconfont/chart.html显示页面(目的是打包上线以后运维依然可以修改数据) 官网没有相关数据&#xff1a;菜单配置说明 JeecgBoot 开发文档 看云 问题现象: 我把文件放在src/assets/iconfont/chart.html然后在vue中作为 iframe 的 src 属性&am…

【Vue框架】基础语法练习(1)

其实更多知识点已经在Vue.js官网十分清楚了&#xff0c;大家也可以去官网进行更细节的学习 https://cn.vuejs.org/ 说明&#xff1a;目前最新是Vue3版本的&#xff0c;但是Vue2已经深得人心&#xff0c;所以就是可以支持二者合用。它们最大的区别就是Vue3是组合式API&#xf…

爬虫学习4

from threading import Thread#创建任务 def func(name):for i in range(100):print(name,i)if __name__ __main__:#创建线程t1 Thread(targetfunc,args("1"))t2 Thread(targetfunc, args("2"))t1.start()t2.start()print("我是诛仙剑")from …

qt QScrollArea详解

1、概述 QScrollArea是Qt框架中的一个控件&#xff0c;它提供了一个可滚动的视图区域&#xff0c;用于显示超出视图大小的内容。这个控件非常有用&#xff0c;尤其是在处理大型表格、文本区域、图像集合或任何需要滚动浏览的内容时。QScrollArea本身不直接显示内容&#xff0c…

【ChatGPT】搜索趋势分析

【ChatGPT】搜索趋势分析 为了分析 ChatGPT 在过去一年的流行趋势&#xff0c;我们可以查看 Google Trends 的数据 安装依赖pytrends pip install pytrends运行以下 Python 脚本 import pandas as pd import matplotlib.pyplot as plt from pytrends.request import TrendR…