存档

文章标签 ‘网络编程’

Libev轻网络库 源码浅析

2014年3月31日 3 条评论 30867次阅读    

忍不住先吐槽一下,Libev里面的宏真T*D难看而且很多不必要的宏,好吧,其实他是为了性能。
估计介绍Libev的文章挺多的,这里只是个人记录一下,随便写点东西,libev代码还算简洁,虽然宏多了点,还有各种预定义变量等,今天花了几个小时下载了代码看看,简单记录一下。
之前没有用过libev,一般直接裸写的epoll,总结的话,libev的功能是: 支持将SOCKET,管道, 信号,以及定时器统一为通用的变成逻辑,给开发人员提供了一个简单高效的异步网络编程库。
阅读全文...

Share

网络服务器由于文件连接数不够而导致listen sock总是可读CPU跑满

2014年3月30日 没有评论 7246次阅读    

前几天碰到碰到一个线上redis CPU跑满的情况,基本无法处理正常请求了,刚开始以为是其他地方的问题,后来grep "Max open files" /proc/`pidof redis-server`/ -r  排查原来是启动redis的时候。ulimit -n 只有1024,从而无法接受新连接。

晚高峰时段段时间突发的大量请求导致某个时候redis连接数超过1024,从而listen sock 持续可读并且accept失败,从而CPU跑满,进而导致更严重的雪崩。 阅读全文...

Share
分类: TCP/IP 标签: , ,

poll 内核原理-注释

2012年9月20日 没有评论 6585次阅读    

之前整理的poll的实现原理,给内核代码做了个注释,linux 2.6.11代码貌似,后来偷懒没有写epool了,只是在代码里面分析了一下epoll,poll,select的区别。
下面是一张poll过程的草图,点击大图看清楚一些,太大了不太好显示:

poll原理流程图

阅读全文...

Share