erlang
文章平均质量分 86
曾记花开不记年
go, php,erlang,c/c++,linux
展开
-
erlang 系统工具
erlang:memory().> erlang:system_info(process_limit). %%查看系统最多能创建多少process> erlang:system_info(process_count). %%当前系统创建了多少process i(). %%返回system信息原创 2016-01-14 11:13:55 · 358 阅读 · 0 评论 -
erlang 优化
霸爷指出,新的erlang虚拟机有很多调优启动参数,今后现在这个方面深挖一下。1. 进程标志设置: 消息和binary内存:erlang:process_flag(min_bin_vheap_size, 1024*1024),减少大量消息到达或处理过程中产生大量binary时的gc次数 堆内存:erlang:process_flag(min_heap转载 2016-05-19 11:17:15 · 881 阅读 · 0 评论 -
erlang 常用数据结构
ordsets 是lists实现的有序集合.由于数据元素的变动都会触发重新排序,所以ordsets效率不高,只适用于数据量比较小的场景.ordsets中包含了常见的集合操作:求交集,并集,是否为子集,是否存在交集原创 2016-05-13 17:34:13 · 2108 阅读 · 0 评论 -
进程字典与ets
进程字典是erlang游戏开发中最为常用的数据记录方式,理由很简单,因为它够快,差不多比ets快了一个数量级。但是,进程字典的数据为所在进程私有,无法跨进程直接get到进程字典的数据,而且,在进程被销毁时,进程字典的数据也会被回收。 再说下ets,对比进程字典,ets的适用场景是跨进程读写数据。遇到一个数据频繁被多个进程读到,就要考虑使用ets了。另外,ets有归属进程,但归属进程销毁时转载 2016-05-17 17:21:08 · 1603 阅读 · 0 评论 -
erlang 优化
1. 进程标志设置: 消息和binary内存:erlang:process_flag(min_bin_vheap_size, 1024*1024),减少大量消息到达或处理过程中产生大量binary时的gc次数 堆内存:erlang:process_flag(min_heap_size, 1024*1024),减少处理过程中产生大量term,尤其是list时的转载 2016-05-06 13:40:08 · 290 阅读 · 0 评论 -
erlang 创建一个进程所占的内存
1> Fun= fun()-> receive after infinity -> ok end end.#Fun2> {_,Bytes}=process_info(spawn(Fun),memory).{memory,2560}3> Bytes div erlang:system_info(wordsize).3204>原创 2016-04-17 10:22:08 · 707 阅读 · 0 评论 -
erlang dets ets 压测
磁盘:7200转 机械硬盘 内存:1333 MHz CPU: i5-2310 CPU @ 2.90GHz(3201 MHz) dets 写入100万条数据 54.18(27)秒 ,平均每条 0.000054 秒 ≈ 54微秒, QPS 1.8万 磁盘占用127 389 134 字节 127M ets 写入100万条数据 1.42(1.2)秒 ,平均每条 0.000原创 2016-05-19 16:54:10 · 628 阅读 · 0 评论 -
通用的erlang优化设置
设置是我在多个项目中通用的,不过根据应用场景的不同,还会有其它细调,就不在这一一说明了。 - Sunface 一、 erl启动时参数:+K true开启epoll调度,在linux中开启epoll,会大大增加调度的效率+A 100 异步线程池,为某些port调用服务+P 1024000最大进程数+Q 655转载 2016-05-13 09:56:35 · 1639 阅读 · 0 评论 -
erlang的垃圾回收
"The current default GC is a "stop the world" generational mark-sweep collector. "文档中这样描述Erlang垃圾回收器1.erlang 的回收机制是 复制-清除的 分代回收2.以进程为单位转载 2016-04-16 22:38:25 · 347 阅读 · 0 评论 -
Erlang服务器内存吃紧的优化解决方法
问题提出:服务器100万人在线,16G内存快被吃光。玩家进程占用内存偏高解决方法:第一步:erlang:system_info(process_count). 查看进程数目是否正常,是否超过了erlang虚拟机的最大进程数。第二步:查看节点的内存瓶颈所在地方> erlang:memory(). [{total,2099813400},{process转载 2016-04-16 23:41:57 · 931 阅读 · 0 评论 -
erlang性能监控
Etop类似top命令,查看erlang进程占用cpu、内存较高的进程node atom erlang nodeport integer The used portaccumulate boolean If true execution time is accumulatedlines i转载 2016-04-16 22:57:53 · 663 阅读 · 0 评论 -
ubuntu 安装erlang
1.库sudo apt-get install m4 sudo apt-get install build-essential //gcc套件sudo apt-get install opensslsudo apt-get install libssl-dev 2.配置sudo ./configure --prefix=/opt/erlang/OTP原创 2016-04-08 16:57:31 · 692 阅读 · 0 评论 -
erlang进程的负载均衡
一:虚拟机层面的负载均衡从erlang R12B版本开始,启动erl时系统自动检测CPU内核数,并启动相同数量的scheduler,也可以通过erl +S Number来设置,不过启动比CPU核数更多的调度器不会提高性能,启动erl时开启或关闭SMP(Symmetrical Multi Processor) -smp enable -smp disable [smp:4:4]原创 2016-03-07 11:53:13 · 1490 阅读 · 0 评论 -
Gen_server 和 gen_server2
Gen_server 和 gen_server21.erlang project里大部分module都是gen_server,RabbitMQ重新实现了gen_server -> gen_server2, 很多Module都是用了这个behavior 2.gen_server 原理 启动流程:gen_server.erl Gen.erl G原创 2016-03-18 17:17:00 · 736 阅读 · 0 评论 -
erlang 格式化输出
erlang 格式化输出io:format的格式化参数。 c 输出多个重复的字符。 1.io:format(”~2c”,”a”). 结果:aa,标识输出字母2次。 2.io:format(”~2.1c”,”a”). 结果:_a,标识输出2个字符,1个是后面跟的字母,另一个位置用空格补充,从左开始,如果是”~-2.1c”是从右侧开始。 s转载 2016-03-17 11:46:10 · 4672 阅读 · 0 评论 -
erlang热更新
热更原理 内存中可以保留两个版本的代码,当前版本代码'current'和老版本代码'old',一旦模块被加载就变成'current',再有一个版本过来被加载,之前的版本就变成'old',新加载的变成'current'.这时候,两个版本还是同时存在,新的请求执行的时候会使用新的版本,而老版本的代码还会被使用因为还有其他模块的调用'old'版本中。如果再进行一次热更新,这时就有第三个转载 2016-02-04 14:29:42 · 920 阅读 · 0 评论 -
erlang 编程思想
1.erlang 没有显式锁,在需要有锁的场景下,把该操作放在一个单独的进程去执行原创 2016-06-16 18:03:52 · 525 阅读 · 0 评论