看这篇小分享前请务必先看看这个:http://blog.csdn.net/cenwenchu79/archive/2011/05/27/6450427.aspx
PipeComet这个支持长连接,异步请求事件处理框架做了测试也快有5天了,这里做一个简单的总结,但这个文档中的数字不能作为最终容量的定论,后续还会在优化后有进一步的测试。同时这个文档更倾向于分享过程中的遇到的一些问题,可以避免走一样的弯路。
测试环境:
1台部署了Jetty Web容器作为PipeComet服务端。
2台windows测试机部署了两个LoadRunner,作为压力测试客户端。(一个用于建立大量长连接,一个用于产生http请求模拟外部事件激发数据片段下发)

服务端配置如下:
Xen虚拟机,5核(2.40 GHz),8G内存。
Jetty 7.1.6版本,jdk 1.6.0_25
JVM配置:-Xms7g -Xmx7g -XX:PermSize=96m -XX:MaxPermSize=256m -Xmn3g
Jetty配置:
<Set name="ThreadPool">
<!-- Default queued blocking threadpool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">400</Set>//最小和最大线程池设置的都有一点大,后面大致说一下
<Set name="maxThreads">800</Set>
</New>
</Set>
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="jetty.port" default="8080"/></Set>
<Set name="maxIdleTime">3600000</Set> //无数据传输的连接保持多久,单位毫秒
<Set name="Acceptors">4</Set>
<Set name="statsOn">false</Set>
……
</New>
</Arg>
</Call>
测试场景描述:
1.启动服务端,并建立有Condition模式的管道配置。
2.压力测试机A通过LoadRunner并发启动N个vuser,与服务端建立N个长连接会话,服务端建立N个事件挂起当前多个请求,等待外部消息激发下行数据片段或者关闭会话。
3.压力测试机B通过LoadRunner并发启动P个vuser,随机的发起激发某一个长连接会话下行数据片段的请求,服务端接收请求后,主动向下推送数据片段。
这里有两个参数N和P,N就代表单机支持多少长连接,P代表并发创建多少个事件去激发下行数据。
事先环境准备:
Linux:(这块做过高并发测试的一般都还是会比较注意)
调整一下/etc/sysctl.conf的一些系统参数:(具体不解释了,看上面的英文注释)
#add by fangweng
fs.file-max = 65535
#Allow for more PIDs
kernel.pid_max = 65536
#Increase system IP port limits
net.ipv4.ip_local_port_range = 2000 65000
# TCP and memory optimization
# increase TCP max buffer size setable using setsockopt()
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
# increase Linux auto tuning TCP buffer limits
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
修改后:
sysctl -p /etc/sysctl.conf // 作用:重新载入/etc/sysctl.conf文件
Window调整(这个一定要注意)
放火墙和杀毒软件关掉!!!
注册表中修改
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/TCPIP/Parameters
修改里面:
TcpTimedWaitDelay 为1(原来30)
MaxUserPort 65534
LoadRunner参数调整:
LoadRunner在为长连测试的时候,需要修改Run-time Settings,红色部分尽量大一些

测试:
1. 并发2000个连接保持会话。
2. 并发100个VUser模拟向100个长连接发起事件驱动消息。
观察得到的结果:
1. 建立起2000个连接过程中load保持在0.1到0.3左右,完全建立好后也就0.1多。(表明建立连接后现在的事件驱动处理方式没有空转损耗)
2. 并发100个Vuser开始循环压测的时候,会有少数几个连接主动掉线。(为了看是服务端主动断连还是客户端发起,执行了tcpdump,从抓包的结果可以看到客户端主动的发起了Fin消息,当前只能认为在大量数据包下行的情况下,系统还是有保护的将下发数据频率过高的连接断开了,当防火墙或者杀毒软件打开的时候,更是容易屏蔽,这点为将来长连在客户端的问题处理也积累经验)
3. 并发100个Vuser测试时,Load有明显上升,在1-2.6之间,同时通过vmstat可以看到上下文切换数量递增了两个数量级。Sar方式统计也可以很明显的看到在数据大量输入输出时,整个框架的系统消耗不小。
于是,开始判断哪里出了问题。
Load变高作为java程序员如何判断哪里出了问题呢,以下是我的经验排查方式:
1. GC是否比较频繁。(直接看gc log或者jstat gcutil)
2. IO消耗是否比较大。(cpu占用率到不高,vmstat)
3. 是否有代码空转。(cpu占用率很高,往往就几个线程长期持有cpu)
4. 是否有大量的线程Blocked。(dump线程出来看看)
在刚才的测试基础上做了一个简单的对比,如果把一百个并发请求分散到500个事件随机触发上,整理的load要低于100个事件随机模拟,也就是说数据越集中到某几个连接的事件上,消耗越大。
本地jprofiler测试了一下,看到大量的blocked线程是在处理消息输出的时候。原来当时为了简单处理并发,在response上面就增加了一个写锁,保证每次输出时候能够支持并发,但write这个动作被放在锁里是否适合?其实就是把一个时间消耗较长的动作去做了同步,最终其实使得在并发比较高,压力比较大时,竞争和阻塞厉害,导致系统消耗增大。因此还是按照传统的tcp sendbuffer模式,挂接内容支持多线程并发,输出数据为单线程循环发送,再简单测试了一下,Load明显下去了,基本就在1左右。
你可以尝试着去看vmstat,里面的procs中的r其实表示统计瞬时需要执行的任务队列长度,你会发现有时候通过top看到的load很低,但是r还是会有些上下波动,但如果任务执行的快,其实对于load影响不大。
继续测试:
并发连接数
|
事件激发模拟用户数
|
Load(建立连接过程)
|
Load(事件处理过程)
|
2000
|
100(50个事件随机选取)
|
0.1 - 0.3
|
0.6 – 1.2
|
5000
|
100(50个事件随机选取)
|
0.1 – 0.3
|
0.7 – 1.4
|
5000
|
200(100个事件随机选取)
|
0.1 – 0.3
|
0.8 – 1.6
|
这个数据并不能反映容量,但是可以说明的是,长连接数量对于系统在高并发事件处理影响不是很大,建立长连接和管理长连接所属的事件并不消耗系统资源(cpu,内存都观察过)
这篇分享中没有介绍测试中对于并发处理在异步事件驱动中的修改,具体的后续可以比较一下上次公布出来的代码和新代码的区别,简单来说:
1. 原本可以状态不脱离于线程,使得状态不比担心多线程并发控制,现在需要关注状态和资源的并发控制(例如request的lazy解析,response的输出,ThreadLocal的数据传递和复制)。
2. 客户端可以主动断开服务端,服务端网络失败也可以断开客户端,因此在任何一个对于悬挂起的异步web请求处理时都需要做好检查和资源回收处理,防止资源泄露。
3. 系统的事件驱动模型状态变更及对象内容变化要提供接口来保证用户操作时可以支持多线程并发处理。
后续还会使用java写的客户端去测试接收和发送频率是否匹配,同时必要的情况下也尝试测试慢连接(外部服务器连接)支持的情况。
待续…
分享到:
相关推荐
项目工程资源经过严格测试运行并且功能上ok,可复现复刻,拿到资料包后可实现复刻出一样的项目,本人系统开发经验充足(全栈),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:包含源码、工程文件、说明等。资源质量优质,放心下载使用!可实现复现;设计报告可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,及时抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 质量优质,放心下载使用。下载后请首先打开说明文件(如有);项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途,网络商品/电子资源资料具可复制性不支持退款。质量优质,放心下载使用。
在当今化工行业转型升级的大潮中,智慧化工园区作为推动绿色、创新、高质量发展的关键力量,正逐步成为行业发展的新趋势。随着国家政策的不断引导和推动,智慧化工园区的建设已不仅仅是提升管理服务水平的手段,更是实现安全生产、环境保护和应急响应能力全面提升的重要途径。从提升重大危险源监测、隐患排查到完善风险分级管控机制,智慧化工园区利用信息化、智能化技术,构建了一个全方位、多层次的安全、环保、应急救援一体化管理平台。 智慧化工园区以安全、便捷、高效、节能、物联为核心理念,通过深度融合云计算、物联网、人脸识别、大数据分析、人工智能等先进技术,实现了园区生产、车辆、人员、环境、能源等关键环节的智能化管理。在基础网络方面,园区不仅实现了全千兆光纤接入,还覆盖了5G信号、NB-IoT信号和WiFi网络,为万物互联提供了坚实的基础。智慧安监作为园区的核心板块,通过企业安全云服务、安全文化宣传教育、舆情信息监管、风险分级管控、隐患排查治理以及重大危险源管理等功能,构建了从源头到末端的全过程安全监管体系。特别是企业一张表功能,实现了企业档案的数字化管理,为精准施策提供了有力支持。此外,智慧园区还通过物联网监测预警系统,利用智能终端设备对园区内的各类风险进行实时监测和预警,确保园区安全无虞。 在智慧节能与环保方面,园区通过智能仪表监测电、水、冷、气等能耗数据,实现能源管理的精细化和节能减排。智慧应急系统则融合了指挥调度、辅助决策等功能,能够在突发情况下迅速响应,有效处置。智慧环保系统则利用物联网技术和大数据分析,实现了环境质量的自动监测和预警,为环保部门提供了精准的执法依据。同时,智慧物流、智慧安防、智慧楼宇等系统的引入,进一步提升了园区的智能化水平和运行效率。这些系统的集成应用,不仅让园区的管理更加便捷高效,还极大地提升了园区的整体竞争力和可持续发展能力。对于正在筹备或优化智慧化工园区建设方案的读者来说,这份解决方案无疑提供了宝贵的参考和灵感,让智慧化工园区的建设之路变得更加清晰和有趣。
内容概要:本文汇集了各类对课程设计或项目设计至关重要的资源及其获取途径。主要包括在线课程平台、开源项目平台、设计工具、项目管理工具、学习资源、社区与论坛、模板与素材、编程练习平台、硬件与开发板、云服务平台以及学术资源。每个部分详细介绍不同的资源网站或工具的功能和特点,并为读者指出了各个领域的最佳实践资源。 适合人群:高校师生及项目管理人员,尤其适用于需要制定高效课程或推进开发项目的人员。 使用场景及目标:该综述提供了从理论学习到实际操作所需的一系列实用资源链接和简介,帮助使用者更快地上手相关技术和工具,优化教学方式并提高开发效率。同时也可以作为个人成长路径上的指南,为自我进修提供方向指引。 其他说明:无论你是希望构建更完善的课堂授课计划还是希望增强个人项目执行力,本篇文档都能够为你提供有价值的参考资料和支持渠道列表,确保你能迅速找到最适合自己的工具和技术解决方案。
基于灰狼算法优化SVR参数的多维输入单维输出回归预测模型及其精度提升表现,基于灰狼算法优化SVR参数的多维输入单维输出回归预测模型,精准预测并输出评估指标,基于灰狼算法优化SVR的c和g参数,实现多维输入单维输出的回归预测模型,提高模型的预测精度,具体的效果如下,同时模型可以输出模型的预测精度等评价指标,方便于判断模型的好坏, ,关键词:灰狼算法;SVR;c和g参数;多维输入单维输出;回归预测模型;预测精度;评价指标。,灰狼算法优化SVR模型:多维输入单维输出高精度预测
齿轮生成器:轻松编辑参数,一键生成多种常用齿轮(约400MB,支持Creo格式),高精度齿轮生成编辑器:一键参数调整,轻松生成各类常用齿轮模型(Creo格式,约400MB),齿轮生成器 文件大小:约400MB 各种常用齿轮,点击重新生成编辑参数即可,是creo格式 ,齿轮生成器; 400MB文件大小; 常用齿轮; 重新生成编辑参数; creo格式。,《400MB齿轮生成器:Creo格式,一键编辑参数重新生成各种常用齿轮》
大创项目代码
STM32F103C6T6控制NRF24L01
2000-2023年上市公司全要素生产率GMM法数据(含原始数据+计算代码+计算结果) 1、时间:2000-2023年 2、来源:上市公司年报 3、指标:Year、证券代码、固定资产净额、资产总计、负债合计、员工人数 、成立日期 、上市日期 、所属省份、所属城市、企业性质、营业收入、税金及附加、营业利润、购买商品、接受劳务支付的现金、支付给职工以及为职工支付的现金、 购建固定资产、无形资产和其他长期资产支付的现金、固定资产折旧额、是否国有、上市年份、成立年份、是否发生ST或ST或PT、是否发生暂停上市、全要素生产率 4、范围:上市公司 5、计算方法:GMM法 6、参考文献: 鲁晓东,Z国工业企业全要素生产率估计:1999-2007
代码备份鹅鹅鹅鹅鹅鹅呃呃
IEC 63093-14 2019.rar
基本信息 版本:以官方发布的 v1.0 版本为例。 大小:约 11.8M。 语言:简体中文。 适用系统:Windows 11、Windows 10、Windows 8、Windows 7。 功能特点 打印功能支持:能实现计算机向打印机发送打印任务,可设置多种打印参数。打印质量可在不同模式间选择,满足不同场景需求,如草稿模式适合快速预览,高质量模式用于重要文档输出。可选择多种纸张大小,包括 A4、Letter、A5、A6、信封等,还支持自定义纸张尺寸。能设置单面或双面打印,有效节约纸张。 状态监测反馈:实时反馈打印机的工作状态,如显示打印机是否处于就绪、忙碌、卡纸、缺纸等状态,让用户及时了解打印机情况,以便采取相应措施。可提示碳粉余量,方便用户及时更换碳粉,避免因碳粉不足影响打印工作。 网络连接管理:支持无线网络连接设置,用户可通过驱动程序将打印机轻松连接到 Wi-Fi 网络,实现多设备共享打印,摆脱线缆束缚,方便在不同位置的设备进行打印操作。
mysql安装教程zip版本安装详细教程
基于S7-300 PLC的结晶器液位智能自动控制与多重组态界面管理解决方案,基于S7-300 PLC的结晶器液位智能自动控制系统:含梯形图程序、接线图与多种组态界面选择,基于S7-300 PLC结晶器液位自动控制系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面 [红旗][hot]界面多种组态可供选择,详情请点头像查看 ,基于S7-300 PLC; 结晶器液位自动控制; 梯形图程序; 接线图原理图; IO分配; 组态画面,基于S7-300 PLC的结晶器液位自动控制系统:梯形图与组态画面详解
LabVIEW网口TCP通讯:欧姆龙OMRON PLC一网打尽,源码开放,多类型数据批量读写,替代OPC插件,原创视频分享,LabVIEW网口TCP通讯:欧姆龙OMRON PLC一网打尽,源码开放,多类型数据批量读写,替代OPC插件,原创视频分享,LabVIEW网口TCP通讯欧姆龙OMRON PLC,FINSTCP NJ501 CJ2M,常用功能一网打尽。 1.源码开放。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持Bool批量读写。 5.支持Bool单点读写。 不安装插件,完胜OPC 等。 原创视频 创作不易,非诚勿扰。 谢谢大家。 ,LabVIEW;TCP通讯;OMRON PLC;FINSTCP;NJ501 CJ2M;源码开放;批量读写;字符串读写;Bool读写;不安装插件;完胜OPC。,LabVIEW PLC通讯工具:欧姆龙OMRON高效通信助手
永磁同步电机凸极变交轴弱磁控制技术与仿真资料分享,附带基础模型及dq轴电流改进方案,永磁同步电机凸极变交轴弱磁控制技术与仿真研究:dq轴电流优化改进资料及基础模型赠送,永磁同步电机(凸极)_变交轴弱磁控制 资料包含仿真和相关文献资料,赠送仿真基础模型 dq轴电流跟踪效果不佳,可在此基础上做改进 ,核心关键词:永磁同步电机(凸极); 变交轴弱磁控制; 仿真; 文献资料; dq轴电流跟踪; 改进。,基于仿真资料的永磁同步电机凸极变交轴弱磁控制研究及模型优化
基于Comsol仿真的涡流无损检测模型研究:探究频率、电导率、提离与线径对阻抗特性的影响,无损检测涡流检测模型的Comsol仿真分析:频率、电导率与阻抗关系研究,无损检测:涡流Comsol仿真。 图一: 二维涡流检测模型 图二: 电导率140,频率80MHz下,磁通密度模 图三:0到100MHz下,频率和阻抗关系 图四:不同电导率和阻抗关系 图五:不同提离和阻抗关系 图六:不同线径和阻抗关系 一共是4个二维模型。 ,无损检测;涡流;Comsol仿真;二维涡流检测模型;电导率;频率;阻抗关系;提离;线径。,无损检测技术:涡流Comsol仿真与阻抗关系研究
URP视差云,视差遮蔽映射(Parallax Occlusion Mapping, POM)实现
S7-1200 PLC在MCGS M7120型平面磨床电气控制系统中的改造实践,S7-1200 PLC与MCGS系统改造M7120平面磨床电气控制系统升级方案,S7-1200 MCGS M7120型平面磨床电气控制系统的PLC改造 ,S7-1200 PLC; MCGS 监控系统; M7120平面磨床; 电气控制系统改造; 自动化升级,S7-1200 PLC在M7120型平面磨床电气系统中的升级改造
js+html,实现局部打印效果
项目工程资源经过严格测试运行并且功能上ok,可复现复刻,拿到资料包后可实现复刻出一样的项目,本人系统开发经验充足(全栈),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:包含源码、工程文件、说明等。资源质量优质,放心下载使用!可实现复现;设计报告可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,及时抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 质量优质,放心下载使用。下载后请首先打开说明文件(如有);项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途,网络商品/电子资源资料具可复制性不支持退款。质量优质,放心下载使用。