从源码和内核角度分析redis和nginx以及java NIO可以支持多大的并发

本文从源码和内核角度探讨了redis、nginx为何能支持高并发,主要涉及epoll的红黑树数据结构和文件句柄限制。分析表明,epoll_create创建的红黑树和准备就绪list链表使得高并发成为可能,而实际并发能力取决于系统资源。同时提到了Java NIO中的EpollSelectorImpl。
摘要由CSDN通过智能技术生成

有人询问我网上一篇关于“redis为什么单线程这么快”的文章,我建议他不要看了,因为redis是单进程不是单线程,后面的意见不用看了,文章质量肯定不会很好,他也说了自己看了很久源码似乎还是有些云里雾里,所以我就给他分析了为什么redis这么快,这篇主要讲epoll的实现。

从redis和nginx源码和llinux内核角度分析redis和nginx可以支持多大的并发.

redis和nginx都使用epoll。

这篇专栏你可以看到怎么结合内核源码的角度分析epoll的红黑树数据结构以及linux的文件句柄。

内核版本linux-5.5.7,redis版本redis-5.0.7,nginx版本nginx-1.16.1,jdk版本1.8。

 

对于epoll内核系统了几个调用

1.执行epoll_create时,创建了红黑树和就绪list链表。

2.执行epoll_ctl时,如果增加fd(socket),则检查在红黑树中是否存在,存在立即返回,不存在则添加到红黑树上,然后向内核注册回调函数,用于当中断事件来临时向准备就绪list链表中插入数据。

3.执行epoll_wait时立刻返回准备就绪链表里的数据即可。


redis和nginx,Tomcat netty都是先调用epoll_create创

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值