erlang网络编程的几个性能调优和注意点

Unity XR Interaction Toolkit(二)手柄交互 XR Interaction 手柄事件和抓取设置 阅读详情
 转载: http://coderplay.iteye.com/blog/94209

前些天给echo_server写了个非常简单的连接压力测试程序,

代码
  1. -module(stress_test).  
  2.   
  3. -export([start/0, tests/1]).  
  4.   
  5. start() ->  
  6.     tests(12345).  
  7.   
  8. tests(Port) ->  
  9.     io:format("starting~n"),  
  10.     spawn(fun() -> test(Port) end),  
  11.     spawn(fun() -> test(Port) end),  
  12.     spawn(fun() -> test(Port) end),  
  13.     spawn(fun() -> test(Port) end).  
  14.   
  15. test(Port) ->  
  16.      case gen_tcp:connect("192.168.0.217", Port, [binary,{packet, 0}]) of  
  17.     {ok, _} ->  
  18.             test(Port);  
  19.     _ ->  
  20.         test(Port)  
  21.     end.  

一开始我的这个stress_test客户端运行在windows上面, echo_server服务器端运行在linux上面。 结果接受了1016个连接就停止了. 于是我用ulimit -n 改了服务器端的文件描述符数量为10240. 接着还是如此,折腾了几天,最终还是没有搞明白。

于是就求助于公司的linux编程牛人,结果让我一倒...  客户端没有修改文件描述符个数. windows上得在注册表里面改.
牛人开始对这东西的性能感兴趣了,刚好我摸了一阵子erlang的文档,于是我俩就走向了erlang网络连接的性能调优之旅啦~~过程真是让人兴奋。 我们很快通过了1024这一关~~到了4999个连接,很兴奋.

但为什么4999个连接呢, 检查一下代码终于发现echo_server.erl定义了一个宏, 最大连接数为5000. 我又倒~~
修改编译之后, 连接数跑到101xx多了, 太哈皮了!
再测102400个连接时,到32767个连接数erl挂了~说是进程开得太多了. 好在记得这个erl的参数+P,可以定义erlang能生成的进程数. 默认是32768. 改了!

后面不知怎么着,在81231个连接停止了. 新的性能瓶颈又卡了我们.  好在牛人对linux熟, 用strace(这东西会莫名地退出), stap查出一些苗头.   我也想到在otp文档好像提过另一个limit,那就是端口数...在此同时我们发现erlang在linux上是用的传统poll模型. 但查erlang的源代码发现是支持epoll的. 在网上搜了半天,终于搜到了个maillist的帖子.

代码
  1. $./configure --enable-kernel-poll  
    由于我们的测试服务器是双核的,我们在配置的时候也打开了smp支持.  欢快的make  & make install之后....
    把 /proc/sys/net/ipv4/ip_local_port_range 的内容改成了1024到65535.  最多也也能改成65535 :)
代码
  1. $echo 1024 65535 > ip_local_port_range  
    另外再添加一个erl的环境变量
代码
  1. $export ERL_MAX_PORTS=102400  
    于是开始跑了,不过这次跑不一样了
echo_server
  1. $erl -noshell  +P 102400 +K true +S 2 -smp -s echo_server start  
stress_test
 
  1. $erl -noshell  +P 102400 +K true +S 2 -smp -s stress_test start  

这里的+K true,表示使用内核poll,+S 2 表示两个核. 这样可欢快啦~~~ 10w大关过咯! 而且比刚才没用epoll的速度快暴多~~
于是我们又开始了204800个连接发测试了~~~

用top一看cpu占用率极低,服务器只在5%左右。 内存也不是很大~~

SAP CEWB 高效批量调整工艺路线与BOM的实战指南 本文详细介绍了SAP CEWB工具在批量调整工艺路线与BOM中的高效应用。通过实战案例和操作指南,帮助制造业企业快速掌握批量修改技巧,显著提升工作效率,避免手工操作带来的错误和耗时。特别适合需要频繁更新工艺路线和BOM的企业用户。 阅读详情

相关推荐

Elasticsearch连接中断:深入解析Connection reset by peer问题及优化策略

本文深入解析Elasticsearch连接中断问题,特别是Connection reset by peer错误的成因与解决方案。从TCP层的心跳机制到客户端与服务端的配置差异,详细介绍了网络不稳定、防火墙拦截等常见原因,并提供了六种优化策略,包括KeepAlive调整、TCP参数调优和智能重试机制等,帮助提升Elasticsearch连接的稳定性。

weixin_42546392的博客 410

Erlang/OTP 26 正式发布

Erlang 是一种通用的并发函数式程序设计语言。Erlang 也可以指 Erlang/OTP 的通称,开源电信平台 (OTP) 是 Erlang 的常用执行环境及一系列标准组件。

llawliet0001的专栏 1288

GD32 I2C中断通信实战:主机与从机高效数据交换方案

本文详细解析了GD32微控制器I2C中断通信的实战方案,通过配置I2C0为主机、I2C1为从机,实现高效的双向数据交换。文章深入剖析了中断服务程序(ISR)的核心配置、关键状态标志位处理以及事件驱动机制,帮助开发者避免常见陷阱,提升系统响应速度与资源利用率,适用于传感器连接、多机通信等嵌入式场景。

cream的博客 846

[Erlang 0078] Erlang HiPE 二三事

HiPE(High Performance Erlang) 霸爷有一个一语中的的描述"erlang的hipe相当于jit, 根据语言评测有hipe支持在纯erlang的运算上会快2-3倍,这个性能的提升对于计算密集型的应用还是比较可观的。" 维基百科上关于Jit的资料: 即时编译(Just-in-time compilation),又称为动态翻译,是一种提高程序运行效率的方法。通常,程序有

坚强2002@优快云 9539

2021.11.23 Covins 多机器人单目协同建图 跑Euroc数据集 更新

近日,一直在调试如何使用Covins跑通数据集,因为是初学者,所以很多bug出来的时候原理都不懂,只能复制——百度——尝试解决的过程。 现分享一下近日的结果以及与Covins作者帮助解答的一些问题。 使用代码行跑依次跑Euroc多数据集 这里的意思是使用作者提供的covins_examples文件夹中的euroc_examples_mh123_vigba.sh文件,这个文件是将三个Euroc数据集依次运行,跑完第一个数据集,第二个数据集运行的时候在第一个数据集生成地图的基础上继续绘制,由于我只下载了两个数据

qq_42614598的博客 2474

Mac开发环境一键配置指南|从零到生产力

类别工具包管理Homebrew终端版本管理容器编辑器效率用一键脚本的话,2小时内可以搞定全部环境。有问题评论区交流~

在代码的世界里,每天进步1% 623

erlang的坑

持续记录erlang中的各种坑以及各种解决方案。入门级别的同学都能说出erlang的优点,但是我们不能忽略erlang的各种缺点,一不小心可能造成大麻烦。 1、计算密集型代码执行瓶颈 Erlang的虚拟机是register based的,性能上和python类似,和c语言大概有7倍的差距。这几乎是公认的事实,虽然大部分的集群和网络服务器,性能瓶颈在IO上面,而且这块erts(erlang运行期

pyf725324的专栏 1679

Obsidian笔记同步实战:基于Git的私有化部署与自动化管理

本文详细介绍了如何利用Git为Obsidian笔记构建私有化、自动化且免费的同步方案。通过安装配置Git与Obsidian-git插件,结合Gitee等远程仓库,实现笔记的版本管理、多设备同步与自动备份,打造安全可靠的知识管理体系。

y7z8a的博客 272

Erlang 游戏后端性能优化总结

本人主要从事游戏后端开发,所以本文只从游戏开发角度分析Erlang使用中应注意的问题和优化点。  单节点还是多节点 Erlang节点之间的通信是透明的,节点内部和外部之间的调用一致。基于这样的特性,很多人会选用多节点,把各子系统(登陆节点,玩家节点,地图节点,全局节点等)分配到不同的节点中,以支持更多的在线玩家。这样做的出发点是好点是好的,但会引起一列表的问题:登陆、转场逻辑复杂,

blade2001的专栏 3044

从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(12)

今天是本系列的最后一期,完整代码呈现Huggingface transformers平台上微调BERT-wwm-ext的过程方法。

weixin_49518391的博客 3763

Open3D 体素下采样【2026最新版】

体素滤波,博客长期更新,本文最近更新时间为:2026年4月11日。

点云侠的博客 37万+

Erlang网络编程的几个性能调优和注意点

前些天给echo_server写了个非常简单的连接压力测试程序,代码  -module(stress_test).      -export([start/0, tests/1]).      start() ->       tests(12345).      tests(Port) 

lee576的专栏 1494

YOLO11涨点优化:loss优化 | 一种新的基于Wasserstein距离的小目标检测评估方法,助力小目标涨点

提出了一种新的基于Wasserstein距离的小目标检测评估方法,通过它们对应的高斯分布计算它们之间的相似性

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1015

erlang网络调优

原文网址:erlang网络编程的几个性能调优和注意点 原文作者:coderplay 前些天给echo_server写了个非常简单的连接压力测试程序, 下载: stress_test.erl -module(stress_test). -export([start/0, tests/1]). start() -> ...

lunhuiyan的博客 158

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Erlang语言的网络编程

Erlang是一种函数式编程语言,最初由爱立信(Ericsson)开发,旨在简化电信系统的开发与维护。Erlang的核心设计理念是“轻量级进程”(lightweight process)和消息传递机制,这使得它在处理大量并发连接时表现得非常优越。

2501_90426006的博客 302

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【转】erlang 网络调优实战

原文网址:erlang网络编程的几个性能调优和注意点 原文作者:coderplay 前些天给echo_server写了个非常简单的连接压力测试程序, 下载: stress_test.erl -module(stress_test). -export([start/0, tests/1]). start() -> ...

jic5566的博客 194

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ErLang语法提要收藏

 ErLang语法提要收藏 新一篇: erlang网络编程的几个性能调优和注意点 | 旧一篇: .NET Rocks上值得花时间了解的一些技术信息 function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.get

skyremember的专栏 662

无涯教程-Erlang - Web编程

库在Erlang中构建Web服务器,让我们看一下Erlang中可用于网络编程的一些功能,可以实现HTTP服务器,也称为httpd来处理HTTP请求。无涯教程网提供在Erlang中,可以使用 inets 库在Erlang中构建Web服务器,让我们看一下Erlang中可用于...库的启动功能,以便可以实现Web服务器,以下是在Erlang中创建Web服务器进程的示例。要在Erlang中实现 Hello Learnfk Web服务器,请执行以下步骤-编译上面的文件,然后在 erl 中运行以下命令。

无涯教程 1235

Erlide 使用Eclipse做Erlang的IDE

Erlide 使用Eclipse做Erlang的IDE

gftygff的博客 209
上一篇: erlang常用命令收集
下一篇: gen_server三两话
jamesjun
博客等级 码龄19年 25粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值