项目地址: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 :)
相关推荐
总之,"erlang websocket 练习"是一个深入理解Erlang并发特性和WebSocket协议的好机会。通过这个项目,你可以掌握如何在Erlang中构建高效、可靠的WebSocket服务,并实现一个简单的聊天应用,这对于提升你的IT技能和...
在本文中,我们将深入探讨如何使用Erlang语言进行游戏服务器的开发实践。Erlang是一种功能强大的...《Erlang-game-server开发实践》这本书将引导你逐步探索这个领域,帮助你在实践中掌握Erlang游戏服务器开发的精华。
4. **实时通信**:为了实现实时交互,可以使用Erlang的TCP/UDP套接字接口进行网络通信,或者利用Erlang的Websocket库,如`gun`或`websocket_client_server`。 5. **rabbitMQ灵感**:既然项目参考了rabbitMQ,那么...
4. **通信协议**:如果Erlang部分负责后台服务,可能会涉及使用Erlang的OTP库(如gen_server、gen_event等)来实现可靠的服务模型,并通过HTTP、WebSocket或其他协议与Android前端通信。 5. **错误处理与容错**:...
Erlang是一种流行的高级编程语言,特别适合构建并发系统,例如分布式系统、电信系统等。在Erlang中,使用socket进行网络编程是非常重要的基础技能,它可以让我们创建能够处理网络通信的服务器和客户端应用。本文将...
2. **erlang**:cowboy是用Erlang编程语言实现的,Erlang以其并发处理和容错能力著称,适合构建高可用系统。 3. **functional**:Erlang是一种函数式编程语言,cowboy的设计和实现遵循这一编程范式,可能包含无副...
开发者可以通过定义Erlang行为(如gen_server)来实现业务逻辑,然后通过N2O的路由系统将HTTP请求映射到相应的处理函数。 **五、CSS在N2O中的应用** 作为标签中提到的一个关键点,CSS在构建Web界面时起着至关重要的...
2. **启动服务器**:使用gen_server或者其他Erlang OTP行为启动gen_http服务器实例。 3. **发起请求**:通过服务器实例向指定URL发起HTTP请求,可以设置请求头、方法、超时等参数。 4. **处理响应**:gen_http...
Elixir是一种函数式、并发、面向进程的编程语言,运行在 Erlang VM (BEAM) 上,设计用于构建可扩展和高可用性的系统。它的并发特性使得在处理大量并发请求时能保持高性能,这对于构建像Spendable这样的实时应用程序...
从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+百万个...
Elixir是一种动态类型的函数式编程语言,运行在 Erlang VM (BEAM) 上,提供了并发性、分布式和容错性的能力。它的语法简洁且具有表达性,适合构建大规模、高可用性的系统。 Phoenix框架是Elixir社区中的明星产品,...
Elixir是一种基于Erlang VM(BEAM)的函数式编程语言,以其并发性、容错性和可扩展性而闻名。选择Elixir作为实现Binance API包装器的语言,是因为它能够高效地处理大量并发请求,这对于高频交易和实时数据处理非常...