随笔分类 -  调优

摘要:erlang 提供了简单易用的并发编程模型,基本不需要再考虑多线程并发问题。但实际应用中并不是那么的完美,很多地方需要注意,就算标准库也有不少问题。很多在多线程编程中很多很容易解决的事情,在erlang中是那么的蛋疼和无奈。erlang专注于自己擅长领域,本身十分健壮,强大的shell,分布式特... 阅读全文
posted @ 2014-12-27 13:12 LittlePeng 阅读(1210) 评论(0) 推荐(0)
摘要:linux TIME_WAIT 相关参数: 注意: - 不像Windows 可以修改注册表修改2MSL 的值,linux 需要修改内核宏定义重新编译,tcp_fin_timeout 不是2MSL 而是Fin-WAIT-2状态超时时间. - tcp_tw_reuse 和 SO_REUSEADDR 是两 阅读全文
posted @ 2014-12-07 13:19 LittlePeng 阅读(88384) 评论(2) 推荐(2)
摘要:一般说来抓dump 4种 方式: 1. erlang:halt(“abort”). 2. 在erlang shell下输入CTRL C + “大写的A” 3.等着进程崩溃自己产生dump 4.kill -SIGUSR1 (shell 无法进入时可以使用) 不过4个方式无一不是需要no... 阅读全文
posted @ 2014-12-07 11:35 LittlePeng 阅读(2044) 评论(0) 推荐(0)
摘要:系统级别perf top, dstat -tam, vtune 都能很好分析beam 瓶颈,本文主要erlang 级别排查:1. 反编译 确认线上运行代码是否正确,reltools没掌握好,升级偶尔出现问题decompile(Mod) -> {ok,{_,[{abstract_code,{_,... 阅读全文
posted @ 2014-12-07 11:26 LittlePeng 阅读(4993) 评论(0) 推荐(2)
摘要:现网服务,每次更新一个服务时,另外一个集群所有node 都跟着同时重启一遍,这么调皮,这是闹哪样啊。。 看系统日志:/var/log/messages Oct 30 15:19:41 localhost kernel: beam.smp[21880]: segfault at 7fa300... 阅读全文
posted @ 2014-12-07 11:06 LittlePeng 阅读(1223) 评论(1) 推荐(1)
摘要:上篇Erlang C1500K长连接推送服务-性能提到:150w连接,使用了23GB内存,每个连接占用15KB,约一半是内核使用。大概分析一下:1. Erlang 节点 12GB,内部因为有内存池碎片问题,实际使用9GB,也就是实际每个进程+Port占用越6K,因为采用hibernate策略,已经... 阅读全文
posted @ 2014-11-30 01:19 LittlePeng 阅读(1417) 评论(2) 推荐(0)
摘要:Whatsapp已经使用Erlang在生产环境跑到96GB内存单机 3M长连接,参加:WhatsApp的Erlang世界。毕竟业务级别能达到Whatsapp那样极少,现在只有千万级,单机太多挂一台影响太大,再者就是没有多线接入,每个机房都得扔那么几台机器吧,所以1M就能满足要求。Erlang 作为长... 阅读全文
posted @ 2014-11-30 00:05 LittlePeng 阅读(4077) 评论(2) 推荐(0)
摘要:erlang 默认启动参数更多的是针对电信平台实时特性,简单调整参数能很大程度降低CPU消耗,提高处理能力。1. 关闭spin_wait 设置参数:+sbwt none我上一篇文章提到:erlang 调度器CPU利用率低排查,关闭spin_wait 可能增加了调度器需要唤醒延时。关闭后CPU 基本... 阅读全文
posted @ 2014-10-18 01:17 LittlePeng 阅读(2861) 评论(0) 推荐(0)
摘要:-问题起因 近期线上一组服务中,个别节点服务器CPU使用率很低,只有其他1/4。排除业务不均,曾怀疑是系统top统计错误,从Erlang调度器的利用率调查找到通过erlang:statistics(scheduler_wall_time) 查看服务器CPU低的机器调度器实际的CPU利用率很高接近1... 阅读全文
posted @ 2014-09-18 00:21 LittlePeng 阅读(12761) 评论(4) 推荐(0)
摘要:rick 的两个ppt整理下载:2012 2013 ,使用半年erlang后,重新看这两个ppt才发现更多值的学习的地方,从ppt中整理如下:- Prefer os:timestamp to erlang:now 应该禁止使用erlang:now(),稍微用得多,整个node的%si 飙满,且整体性... 阅读全文
posted @ 2014-08-29 23:52 LittlePeng 阅读(4343) 评论(0) 推荐(0)
摘要:环境:Clients:N台linux, 使用“ab -k -c 20000...” 并发2w 请求haproxyHaproxy Server: R610 2*8核 2.4GReal Server: IIS6 (50字节 html静态文件)使用一台客户端向haproxy发起20000并发请求,如下:1... 阅读全文
posted @ 2013-07-24 22:45 LittlePeng 阅读(4940) 评论(1) 推荐(0)
摘要:多线程环境下使用那种锁往往凭个人感觉,缺乏测试数据的支持很容易走入误区,就像我知道的很多人就觉得Lock好慢好慢,Lock-Free 就能飞起来一样。下面对Lock、Level-Lock、Lock-Free、ReaderWriterLock、ReaderWriterLockSlim 这几种锁分别做下... 阅读全文
posted @ 2012-03-17 18:26 LittlePeng 阅读(7343) 评论(3) 推荐(1)
摘要:CLR Profiler 有两个版本,分别用于CLR1.1 和 CLR2.0,至于CLR4试了一些也可以,但不知道是否完全兼容不,分别2003,和2005 由微软CLR性能组发布的。几百k很小巧的工具,有给出源代码,核心部分用C++写的,UI使用C#编写。CLR Profiler使用注入式测试,他会 阅读全文
posted @ 2010-08-21 17:45 LittlePeng 阅读(4389) 评论(1) 推荐(1)