摘要: 为了避免系统过载, 对系统做负载保护, 往往需要对系统被调用次数做一定的限制, 比如一段时间内调用次数不能超过某个值.先简化下场景, 让描述变得简单一些, 系统在任意60秒内只允许10次调用.絮絮叨叨有一种方案, 是初始化limit(10), 每次调用将limit减1, 每隔60秒, 将limit ... 阅读全文
posted @ 2015-05-06 12:16 _00 阅读(1900) 评论(0) 推荐(0) 编辑
摘要: RabbitMQ大名鼎鼎, 其networking 部分经常被众多Erlang 程序员, 爱好者分析. 小的时候就见到很多人写过这方面的blog, 比如:1,http://www.blogjava.net/killme2008/archive/2009/11/29/304079.html2,http... 阅读全文
posted @ 2015-04-11 17:50 _00 阅读(1331) 评论(0) 推荐(0) 编辑
摘要: 遇见recon 以来, 每次定位系统瓶颈, 总是能让我眼前一亮. 比如说, 定位非尾递归导致的内存暴涨, 定位引发CPU满载的进程.得心应手,每每额手称庆.recon是ferd 大神 释出的一个 用于生产环境诊断Erlang 问题的一个工具, 不仅仅是对Erlang stdlib 接口的封装, 还有... 阅读全文
posted @ 2015-04-01 21:35 _00 阅读(1634) 评论(1) 推荐(2) 编辑
摘要: log 这个事, 说大不大说小又不小. 大点的, 可以用scribe flume 这样的系统去做, 小点的, 也就打印一个调试信息而已. 在Erlang 中, log 这事情确实比较伤, error_logger 是个单点, io:format 容易导致节点崩溃. 在开源社区, lager 算是使用... 阅读全文
posted @ 2015-03-17 23:38 _00 阅读(2159) 评论(0) 推荐(0) 编辑
摘要: 上一次说到了实现一个简单cache 的基本思路和想法,http://www.cnblogs.com/--00/p/erlang_ets_something_about_cache.html在文末, 说到了判断single record 内存占用量. 这次继续说说Erlang 数据项内存的相关问题.在... 阅读全文
posted @ 2015-03-06 15:24 _00 阅读(1649) 评论(0) 推荐(2) 编辑
摘要: 都说用ets 写一个cache 太简单, 那就简单的搞一个吧, 具体代码就不贴了, 就说说简要的需求和怎么做(说设计有点虚的慌).需求场景>> 查询系统,对于主存储而言,一次写入多次查询所以,cache 需要能实现:UserA 在查询 RecordA 时, UserB 也需要查询RecordA, 就... 阅读全文
posted @ 2015-03-02 18:44 _00 阅读(1447) 评论(0) 推荐(0) 编辑
摘要: Erlang 的process 是虚拟机层面的进程,每个Erlang process 都包括一个 pcb(process control block), 一个stack 以及私有heap .这部分的姿势, 在各种论文中都有提到. 网上也有各种各样的解读,包括但不仅限于:1,http://fengch... 阅读全文
posted @ 2015-02-24 21:03 _00 阅读(4030) 评论(0) 推荐(0) 编辑
摘要: 上一篇已经分析了rpool 的三个module , 以及简单的物理关系. 这次主要分析用户进程和 worker_pool 进程还有worker_pool_worker 进程之间的调用关系. 在开始之前, 必须先明确一点, 就是一个worker_pool_worker 进程只有在处理完一个用户进程的任... 阅读全文
posted @ 2015-02-12 18:44 _00 阅读(1190) 评论(0) 推荐(0) 编辑
摘要: 在RabbitMQ中,pool 是以worker_pool 的形式存在的, 其主要用途之一是对Mnesia transaction的操作. 而在RabbitMQ 中, pool 中的worker 数量是固定不变的, 是和虚拟机的schedulers 相关.这次会首先分别分析设计worker_pool... 阅读全文
posted @ 2015-02-11 23:50 _00 阅读(1507) 评论(0) 推荐(0) 编辑
摘要: 在上一篇关于Emysql pool (http://www.cnblogs.com/--00/p/4281938.html)的分析的最后提到现在的emysql_conn_mgr gen_server 进程属于单点,也就是所有的pool 的管理调度都是由一个进程来完成.如果在同一个Erlang nod... 阅读全文
posted @ 2015-02-10 21:02 _00 阅读(1373) 评论(3) 推荐(0) 编辑