NGINX的进程处理乱谈

服务器处理程序一般会采用fork模式, 每来一个新的连接时,会创建一个新的进程,新的进程中会重新创建一个socket,后续新连接的消息就由fork出来的这个进程处理.

NGINX架构修改了这种模式, 新连接过来时,还是由work进程来处理.


对于fork模式,  新建的进程如果采用阻塞模式,应该是性能更高,因为在没有报文时,该进程不会被调度.

而同一个进程处理多个连接,就必须抛弃阻塞模式,因为阻塞模式会阻塞进程处理其他的连接,同时如果select的话, 可能也不是最佳选择,首先select支持fd的数目有限,如果需要支持更多的fd,还需要修改linux系统头文件,还有select当支持fd过多时,性能很低, 所以效率较高的处理方式就是epoll.


linux创建进程的开销很大,并且也占用相当多的资源, 当linux进程变多时, linux进程调度开销也很大.

nginx采用一个进程处理多个连接就减少了上述开销,较少了连接的处理时间和资源消耗.


nginx考虑非常细致, 在多核上,为了减少因为work进程切换到不同核上带来的cache miss开销, nginx为work增加了核绑定处理.


nginx的事件驱动对性能提升也很大.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值