`
wudixiaotie
  • 浏览: 138337 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

erlang websocket server 并发测试

 
阅读更多

项目地址:gatling(https://github.com/wudixiaotie/gatling)

1.首先去除系统限制:http://wudixiaotie.iteye.com/blog/2213342

2.3个erlang shell作为client 一个erlang shell 作为服务端。3个client shell每个启动30000个websocket client。每个client shell 每200毫秒创建一个websocket client,一个websocket client发送握手请求后发送一条123的数据。

3.然后发现每次服务端链接到28232个websocket client后,新的客户端就一直报{error,eaddrinuse}这个链接错误,原来是机器的端口不够用了,每个tcp链接怎么区别其他的tcp链接呢,有4个数据来标示(目的地IP,目的地Port,来源IP,来源Port)==(src_ip,src_port,dst_ip,dst_port),由于本机又做server又做client所以client发送的链接请求中(src_ip,dst_ip,dst_port)是固定的,那么只有src_port是可变的,所以每个websocket client的链接都要占用一个端口。而我的端口数是(32768~61000)之间(由cat /proc/sys/net/ipv4/ip_local_port_range命令查看),所以大概是28232个。由于一个IP地址的端口通过16bit进行编号,最多可以有65536个端口,所以这里最多能扩展范围也就是1024~65535左右。

su
echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range
cat /proc/sys/net/ipv4/ip_local_port_range

 4.继续测试:

server在链接到30000左右的时候内存占用是940M左右,cpu6%左右,

链接到50000左右的时候内存占用1.4G,cpu5%左右,

链接到65000左右的时候内存占用1.7G,cpu5%左右,

测试完毕! Have fun :)

0
0
分享到:
评论

相关推荐

    erlang websocket 练习

    总之,"erlang websocket 练习"是一个深入理解Erlang并发特性和WebSocket协议的好机会。通过这个项目,你可以掌握如何在Erlang中构建高效、可靠的WebSocket服务,并实现一个简单的聊天应用,这对于提升你的IT技能和...

    Erlang-game-server开发实践.zip

    在本文中,我们将深入探讨如何使用Erlang语言进行游戏服务器的开发实践。Erlang是一种功能强大的...《Erlang-game-server开发实践》这本书将引导你逐步探索这个领域,帮助你在实践中掌握Erlang游戏服务器开发的精华。

    erlang 聊天室源码

    4. **实时通信**:为了实现实时交互,可以使用Erlang的TCP/UDP套接字接口进行网络通信,或者利用Erlang的Websocket库,如`gun`或`websocket_client_server`。 5. **rabbitMQ灵感**:既然项目参考了rabbitMQ,那么...

    erlang+android

    4. **通信协议**:如果Erlang部分负责后台服务,可能会涉及使用Erlang的OTP库(如gen_server、gen_event等)来实现可靠的服务模型,并通过HTTP、WebSocket或其他协议与Android前端通信。 5. **错误处理与容错**:...

    Erlang中的socket编程简单例子

    Erlang是一种流行的高级编程语言,特别适合构建并发系统,例如分布式系统、电信系统等。在Erlang中,使用socket进行网络编程是非常重要的基础技能,它可以让我们创建能够处理网络通信的服务器和客户端应用。本文将...

    cowboy:适用于ErlangOTP的小型,快速,现代HTTP服务器

    2. **erlang**:cowboy是用Erlang编程语言实现的,Erlang以其并发处理和容错能力著称,适合构建高可用系统。 3. **functional**:Erlang是一种函数式编程语言,cowboy的设计和实现遵循这一编程范式,可能包含无副...

    n2o_skeleton:基于http的N2O应用骨架

    开发者可以通过定义Erlang行为(如gen_server)来实现业务逻辑,然后通过N2O的路由系统将HTTP请求映射到相应的处理函数。 **五、CSS在N2O中的应用** 作为标签中提到的一个关键点,CSS在构建Web界面时起着至关重要的...

    gen_http:具有可插拔客户端实现的实验性通用HTTP接口

    2. **启动服务器**:使用gen_server或者其他Erlang OTP行为启动gen_http服务器实例。 3. **发起请求**:通过服务器实例向指定URL发起HTTP请求,可以设置请求头、方法、超时等参数。 4. **处理响应**:gen_http...

    spendable:基于Phoenix和React的预算应用程序

    Elixir是一种函数式、并发、面向进程的编程语言,运行在 Erlang VM (BEAM) 上,设计用于构建可扩展和高可用性的系统。它的并发特性使得在处理大量并发请求时能保持高性能,这对于构建像Spendable这样的实时应用程序...

    emqx:EMQ X Broker-5G时代的物联网可扩展分布式MQTT消息代理

    从3.0版本开始, EMQ X Broker完全支持MQTT V5.0协议规范,并与MQTT V3.1和V3.1.1以及其他通信协议(例如MQTT-SN,CoAP,LwM2M,WebSocket和STOMP)向后兼容。 EMQ X代理的3.0版本可以在一个群集上扩展到10+百万个...

    phoenix-channel-example

    Elixir是一种动态类型的函数式编程语言,运行在 Erlang VM (BEAM) 上,提供了并发性、分布式和容错性的能力。它的语法简洁且具有表达性,适合构建大规模、高可用性的系统。 Phoenix框架是Elixir社区中的明星产品,...

    binance.ex:Binance公共API的Elixir包装器

    Elixir是一种基于Erlang VM(BEAM)的函数式编程语言,以其并发性、容错性和可扩展性而闻名。选择Elixir作为实现Binance API包装器的语言,是因为它能够高效地处理大量并发请求,这对于高频交易和实时数据处理非常...

Global site tag (gtag.js) - Google Analytics