随笔分类 -  linux

摘要:今天看了下云风写的关于 c coroutine博客 (代码), 发现 coroutine 实现原理其实还比较简单,就用户态栈切换,只需要几十行汇编,特别轻量级。 具体实现 1. 创建一个coroutine: 也就是创建一块连续内存,用于存放栈空间,并设置好入口函数所需要的寄存器 makecontex 阅读全文
posted @ 2015-03-11 00:41 LittlePeng 阅读(2108) 评论(2) 推荐(0)
摘要:正常情况tcp四层握手关闭连接,rst基本都是异常情况,整理如下: 1. GFW 2. 对方端口未打开,发生在连接建立 如果端口打开,只是sync_backlog满了的话,sync简单被丢弃,表现为超时,而不会rst。 3. close Socket 时recv buffer 不为空 例如,客户端发 阅读全文
posted @ 2014-12-07 16:51 LittlePeng 阅读(24384) 评论(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)
摘要:现网服务,每次更新一个服务时,另外一个集群所有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)
摘要:需求是在缓存最近一周内用户所有消息列表,考虑用Redis 存储;为每个存储一个独立Sorted Set,value 为消息体,Score 为MessageId,用以实现增量消息同步。 问题就来了:Sorted Set 怎么清理? -设计内存容量只允许放一周内最新的,太久了缓存意义不大,太... 阅读全文
posted @ 2014-10-25 15:23 LittlePeng 阅读(8872) 评论(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)
摘要:因为需要,尝试了预研下面常用几个软负载,大概整理了如下:(自己只是在虚机部署,大概跑跑,没做详细性能测试,性能数值为网上看到的文章归纳,仅供参考):1.LVS 性能最强1. LVS :Linux Virtual Server(VS),请求对于RealServer(RS)都是透明的(不修改Src),使... 阅读全文
posted @ 2013-07-21 21:42 LittlePeng 阅读(1721) 评论(0) 推荐(1)
摘要:主机有时会使用自己的IP地址作为目标地址发送ARP请求。这种ARP请求称为Gratuitous ARP,主要有两个用途:(1)检查重复地址(如果收到ARP响应表明存在重复地址)。 在windows NT下,网卡启动时,TCP/IP协议栈初始化时会最大发送3次Gratuitous ARP请求(初始化... 阅读全文
posted @ 2013-06-10 21:39 LittlePeng 阅读(4005) 评论(0) 推荐(0)
摘要:所了解到的网络设备设计情况,网络设备CPU很弱,只用来完成如DHCP、ARP路由更新等较轻工作,主要的路由转发直接有ASIC专用芯片。ASIC芯片类似于一段固定程序由硬件来实现,处理速度和能效相比CPU要高出一两个数量级,而且可以由很多物理核心并行完成;这好比GPU要比CPU在专用计算上的差距。思科... 阅读全文
posted @ 2013-06-10 20:02 LittlePeng 阅读(1350) 评论(0) 推荐(0)
摘要:使用zookeeper 实现一致性hash。redis服务启动时,将自己的路由信息通过临时节点方式写入zk,客户端通过zk client读取可用的路由信息。服务端使用python 脚本写的守护进程:https://github.com/LittlePeng/redis-manager脚本部署在red... 阅读全文
posted @ 2013-06-10 17:10 LittlePeng 阅读(21062) 评论(6) 推荐(1)