用 recon 定位 Erlang 内存泄露问题

前面一部分直接从以前的 blog copy 过来。http://blog.yunba.io/erlang-memory-leak/ 随着项目越来越依赖Erlang,碰到的问题也随之增加。前段时间线上系统碰到内存高消耗问题,记录一下troubleshooting的分析过程。线上系统用的是Erlang R16B02版本。 问题描述 有几台线上系统,运行一段时间,内存飙升。系统模型很简单,等待网络新连接,pool中找新可用process进行处理。top命令观察,发现内存都被Erlang进程给吃完了,netstat命令查看网络连接数,才区区几K。问题应该是Erlang内存泄漏了。 分析方法 Erlang系统有个好处,可以直接进入线上系统,在生产现场分析问题。我们系统是通过Rebar管理的,可以用不同方法进入线上系统。 本机登录 可以直接登录到线上机器,然后通过以下命令attach到Erlang系统里面 $ cd /path/to/project $ rel/xxx/bin/xxx attach (node@host)> 通过remote shell…

高考来了,“共享单车”英语考点汇总

英语高考马上要开始了,准备迎接人生最重要的一次考试的考生怎能不复习准备近年火遍全国的“共享单车”话题? 在这里云巴君就为广大考生们准备了关于共享单车的英语考点汇总。 首先,关于共享单车的描述,英文怎么说? 共享单车 :shared bikes 例句: We can unlock the shared bikes by using our smartphone. 我们可以用手上的智能手机解锁共享单车。 二维码 :two-dimensional bar codes 、QR code dimensional这个词相信大家不会陌生,就是维度的意思,3D就是three-dimensional的缩写。而QR code 是Quick Response Code,快速响应码的缩写,两个都可以用喔。 例句:Every bike was placed with two-dimensional bar codes. 每辆单车都附带一个二维码。 扫码开锁…

云巴 - CEO张虎演讲整理

云巴自成立初就决心为开发者打造可靠、高并发的实时系统,提供大规模实时云服务。 现今云巴通过 3 年的技术积累, 已为过亿终端提供服务。温故知新,我们整理了云巴 CEO 张虎在技术交流论坛发表的演讲,包含了云巴实时系统这段时间的实践、发展和不同时期我们对云服务的理解。 二〇一七年: 题目:《分布式系统的微服务化实践》 时间:2017年1月15日 地点:深圳 活动: ECUG Con 十周年盛会 PPT链接 二〇一六年: 题目:《高并发实时直播弹幕研发实践》 时间:2016年11月3日 地点:深圳 活动:七牛|架构师实践日 文章链接 题目:《实时系统 Erlang 实践》 时间:2016年11月18日 地点:北京 活动:2016中国软件开发者大会 SDCC PPT链接…

浅析 Node.js 的 vm 模块以及运行不信任代码

在一些系统中,我们希望给用户提供插入自定义逻辑的能力,除了 RPC 和 REST 之外,运行客户提供的代码也是比较常用的方法,好处是可以极大地减少在网络上的耗时。JavaScript 是一种非常流行而且容易上手的语言,因此,让用户用 JavaScript 来写自定义逻辑是一个不错的选择。下面我们介绍 Node.js 提供的 vm 模块以及分析用它来运行不信任代码可能遇到的问题。 vm 模块 vm 模块是 Node.js 内置的核心模块,它能让我们编译 JavaScript 代码和在指定的环境中运行。请看下面例子: const util = require('util'); const vm = require('vm'); // 1. 创建一个 vm.Script 实例, 编译要执行的代码 const script = new vm…

浅析时钟向量算法

算法的目的 在使用分布式数据库的时候,不同节点中数据的一致性一向是一个经典且难以解决的问题,而这个问题的根源是难以实现一个全局统一的时钟。下面就描述了这种问题的一种情况: 如上图所示:A,B,C 表示分布式系统中的三个数据库,纵轴表示时间。在 TA1 时刻 A 做出了更改 Key=Value1,这次更改在 TC2 时刻传输到了 C;在 TB1 时刻 B 做出了更改 Key=Value2,这次更改在 TC1 时刻传输到了 C。那么问题来了:C 数据库中的 Key 应该等于 Value1 还是 Value2 呢? 自然地,我们可以想到:Key 的取值应该和最新的更改保持一致。但是,由于很难实现一个所有节点都一致的全局时钟,所以不同节点各自的时钟实际上并不具有可比性,即…

云巴新价格方案即将上线

为什么要推出新的价格方案 到目前为止,云巴已经为数万开发者提供 App、Web、物联网实时通讯云服务。为了更好地满足用户的需求,带来更优质更专业的服务,我们决定推出新的价格方案。在保留免费额度的同时,方案增加新的收费档次概念,包含基础版、专业版和私有云的收费方案。新方案将更合理地根据用户的实际需求和实际用量进行收费。 新的价格方案 这次的价格方案核心在于用户使用多少,我们就收费多少,不作多余收费;当用户日活需求增多时,我们自动为用户升级扩容,自动划分收费档次,每月云巴系统自动结算费用,省事省力。 也就是说我们的收费是基于用户每个月使用情况收费,用户在使用服务前不需要费神先挑选付费套餐,也避免固定付费套餐带来的资源浪费。云巴系统会根据每月用量自动进行费用的结算,免去了繁琐的收费商务沟通。 我们根据用户帐号的日活进行几个收费档次的划分,具体的收费档次分为几个部分,分别为免费版、基础版、专业版和私有云服务。请参考我们下面的对不同收费档次的划分价格表。 怎样计算,升级流程是怎么样的? 每个用户帐号都默认为从使用免费版开始,云巴系统会根据用户使用的日活来定义帐号所属的收费档次。若使用过程中日活超量,系统会为用户自动升级扩容。云巴会根据帐号每个月( 30 个自然日)实际用量收费,档次不变的情况下仅对超出部分(消息量、频道数)额外收费。 即 费用…