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

erlang websocket server 并发测试(二)

 
阅读更多

今天测试的内容是一次大量链接的情况:

我的系统是ubuntu 14.04,如果什么都不设置,直接测试,大概同时链接在1000左右就是极限了,否则就会在客户端gen_tcp:connect时返回{error, eaddrinuse},但是我有个思路,linux在tcp握手的时候有用到两个队列,一个是存储客户端syn请求的队列,一个是给过客户端ack后的队列,我估计可能是客户端syn请求队列过小导致的,所以试着改了2个文件,

 

su
echo 10000 > /proc/sys/net/core/somaxconn
echo 10000 > /proc/sys/net/core/netdev_max_backlog

 着两个文件的最小值决定了客户端syn请求队列的大小,也就是backlog的大小。如果这个大小设置了那么还要在erlang代码中创建listen socket的时候的backlog也要设置成一样大小,否则也是不行。

 

果真修改了之后不存在链接请求不被受理的情况了,每秒能接收5000个左右的tcp链接。

分享到:
评论

相关推荐

    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的并发模型使得N2O可以轻松处理高并发场景。开发者可以通过定义Erlang行为(如gen_server)来实现业务逻辑,然后通过N2O的路由系统将HTTP请求映射到相应的处理函数。 **五、CSS在N2O中的应用** 作为标签中...

    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+百万个...

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

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

    phoenix-channel-example

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

Global site tag (gtag.js) - Google Analytics