`
hepeng19861212
  • 浏览: 151056 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

netty4.0_websocket压测

    博客分类:
  • java
 
阅读更多

Netty websocket server压力测试

硬件配置:

压测客户端和服务器端在同一台pc上。Pc配置:

AMD A10-5800K APU with Radeon(tm) HD Graphics 3.80Ghz 四核

4G RAM

西数WDC WD10EZEX-60ZF5A0 ( 1 TB / 7200 /这个可以不写的

主要的测试目标分为:

1.       服务器端在一定时间内可接受客户端空闲连接的数量/峰值

连接数

时间

1

180ms

1000

1150ms

2000

2207ms

6000

9000ms

每次建立tcp连接(包括web socket握手),平均需要180ms左右;

但是并不意味着 建立1000个连接需要180*1000ms,因为建立连接过程是异步的,详见压测客户端的代码。当建立较大量连接时(一万以内),所耗费的时间与连接数基本上是线性关系。

测试中,当测试6000连接数多于2次,在不重启jvm的情况下,测试程序客户端基本上就会报buffer空间不足的异常。

2.       服务器端同时保持空闲长连接的数量/峰值;

连接数

服务端java进程内存

服务端cpu利用率

0

358M

0%

6000

458M+

1%

10000

458M+

1%

服务器启动后,可以看到已使用内存为358M,客户端连接后为457M。它们之间的差值并不是保持所有连接 耗费的内存。因为建立连接过程中,在新生代中产生了很多垃圾内存。

 

标准的测试方法是:在开始连接之前,强制gc,这时看到是java进程真正占用的内存m1;在1w个连接建立之后,再次强制gc,用当前值m2减去上次gc后的内存值m1,才是保持连接实际占用的内存值,约为25M

注意:频繁连接服务器建立1w个连接,即使全部断开,在客户端netstat –p依然可以看到这2w个端口在被占用着,未完全释放。这时就会出现异常 java.net.SocketException: No buffer space available (maximum connections reached?): connect 

3.       分别在单个连接和多个连接的情况下,统计服务器端netty网络层的吞吐率。

单连接 客户端发送PingWebSocketFrame

时间表示客户端从发送第一个ping消息 开始计时,在收到最后一个pong消息后结束计时。

ping次数

时间

1k

160ms

3k

380ms

5k

550ms

1w

785ms

10w

2617ms

100w

24602ms

多连接:

连接数

每个连接ping次数

时间

吞吐率

1k

100

4280ms

23364

1k

500

10432ms

47929

1k

1k

18082ms

55303

1k

2k

36261ms

55155

2k

100

6900ms

28985

2k

500

19610ms

50994

2k

1000

33727ms

59299

3k

100

9752ms

30762

3k

500

31461ms

47678

3k

1000

56176ms 122491ms

压测无法进行(丢包,卡)

4.       测试网络流量

客户端向服务器端发送ClientRequestpayloadLoadTest对象,序列化为json字符串,大约800+个字符。可大致认为每条请求消息字符长度为800+

连接数

每个连接请求次数

时间

平均每秒请求数

IO性能(每秒字符数)

1

1k

566ms

1766

 

1

5k

1099ms

4549

 

1

1w

1157ms

8643

 

1

10w

5601ms

17853

 

1k

100

11094ms

9013

 

2k

100

25959ms

7692

 

3k

100

40062ms

7500

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    netty_websocket示范网页聊天项目源码

    在本项目中,"netty_websocket示范网页聊天项目源码" 提供了一个基于 Netty 和 WebSocket 协议实现的网页聊天应用示例。WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,常用于实时通信场景,如在线聊天、...

    Netty4.0 jar包 及 源代码 和 例子

    Netty4.0全部jar包.开发时候只需要倒入总的哪一个netty4.0.jar就行了 后缀为resources.jar的全部是源码。 简单的代码例子在netty-example-resources.jar里面。

    基于Netty的Java WebSocket集群框架。.zip

    本项目"基于Netty的Java WebSocket集群框架"旨在构建一个能够支持高并发、分布式部署的WebSocket服务。下面我们将深入探讨相关的技术点和实现细节。 1. **Netty框架**:Netty的核心是它的NIO(非阻塞I/O)模型,它...

    netty_websocket__weixin_javaIM(Demo)

    IDE:myeclips 服务器:tomcat JDK:1.7+ 说明: 直接运行 浏览器进入页面聊天 功能:把微信公众号收到的消息推送到页面(微信公众测试号需自己申请)

    Spring+Netty+WebSocket实例

    在现代Web开发中,实时通信已经成为一个不可或缺的功能,Spring、Netty和WebSocket的结合为构建高性能、低延迟的实时应用提供了强大的解决方案。本实例将详细探讨如何利用这三种技术进行集成,实现高效的双向通信。 ...

    netty4.0文件分片上传+断点续传+权限校验

    在本文中,我们将深入探讨如何利用Netty 4.0实现文件分片上传、断点续传以及权限校验的功能。 **文件分片上传** 文件分片上传是为了处理大文件传输时,避免一次性加载整个文件到内存中,从而减少内存消耗和提高...

    Netty4.0 官网例子(免费)

    Netty4.0 是其一个重要版本,引入了诸多改进和新特性。 在 Netty4.0 中,主要知识点包括: 1. **ByteBuf**:Netty4.0 引入了 ByteBuf 作为缓冲区,替代了传统的 ByteBuffer。ByteBuf 提供了更高效的内存管理,支持...

    Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码.rar

    Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码;Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码;Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码

    netty5_兼容tcp、websocket小例子 实现信息广播

    在这个“netty5_兼容tcp、websocket小例子”中,我们将探讨如何利用Netty 5版本实现TCP和WebSocket的兼容,并实现信息的广播功能。TCP是一种面向连接的、可靠的传输层协议,而WebSocket则是一种在Web上提供全双工...

    Netty4.0学习笔记系列之四:混合使用coder和handler

    在本篇Netty4.0学习笔记中,我们将聚焦于如何在实际应用中混合使用`coder`和`handler`,这是Netty框架中非常关键的一部分,对于构建高性能、低延迟的网络应用程序至关重要。Netty是一个用Java编写的异步事件驱动的...

    rxjava_netty_websocket_client

    标题“rxjava_netty_websocket_client”提示我们这是一个关于使用RxJava和Netty实现WebSocket客户端的项目。RxJava是Java中的一个响应式编程库,它允许我们处理异步数据流。而Netty则是一个高性能、异步事件驱动的...

    Netty 超时_心跳机制_断线重连 demo

    配置maven添加io.netty 在com.zhao的包下的文件,可以自行修改使用

    深入浅出Netty_netty5.0_

    《深入浅出Netty_netty5.0_》是针对Netty 5.0版本的一本详细教程,旨在帮助读者理解并熟练运用这一强大的网络编程框架。Netty是一个开源的Java框架,它为开发高效、稳定、可扩展的网络应用提供了全面的支持。在本文...

    netty4.0.45jar包socket和http工具包

    此外,Netty还支持WebSocket,允许双向通信,这对于实时更新保险状态或推送通知特别有用。 Netty的HTTP模块不仅提供了基础的HTTP服务,还支持自定义的编码器和解码器,这意味着你可以根据项目需求扩展其功能。例如...

    netty4.0工具包

    NIO socket开发,netty4.0工具包。

    Springboot 2.0 整合 Netty 4.0 实现IO异步通讯架构

    Springboot2.0.8集成 netty4 ,使用protobuf作为ping的数据交换,比json更加的小巧,占用数据量更小,可用于任何第三方应用做心跳监控。 已完成功能: - 客户端授权验证(基于protoBuff) - 心跳检测(基于protoBuff) ...

    Netty4.0 http案例

    在这个“Netty4.0 http案例”中,我们将深入探讨如何利用Netty 4.0 实现HTTP服务,以及客户端如何通过HTTP请求与服务器进行交互,特别是在处理JSON格式的数据时。 首先,让我们了解HTTP协议。HTTP(超文本传输协议...

    netty+websocket实现心跳和断线重连

    在本文中,我们将深入探讨如何利用 Netty 和 WebSocket 实现心跳检测和断线重连机制。 首先,我们需要理解 WebSocket 协议。WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它为客户端和服务器提供了低...

    springboot+netty+websocket+redis

    **SpringBoot+Netty+WebSocket+Redis:构建分布式实时聊天应用** 在当今的互联网世界中,实时通信和数据共享是许多应用程序的核心需求。Spring Boot作为一款流行的Java框架,因其简洁的配置和快速开发特性而备受...

    websocket_for_linux.rar_educationcrz_linux WebSocket_websocket_w

    4. **Java + Jetty/Netty**:在Java世界里,Jetty和Netty都是强大的服务器框架,它们都支持WebSocket。Jetty的WebSocket API简单易用,而Netty则提供了更底层的控制和更高的性能。 实现WebSocket通信时,你需要关注...

Global site tag (gtag.js) - Google Analytics