NGINX的进程处理乱谈
2014-01-27 23:07
197 查看
服务器处理程序一般会采用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的事件驱动对性能提升也很大.
NGINX架构修改了这种模式, 新连接过来时,还是由work进程来处理.
对于fork模式, 新建的进程如果采用阻塞模式,应该是性能更高,因为在没有报文时,该进程不会被调度.
而同一个进程处理多个连接,就必须抛弃阻塞模式,因为阻塞模式会阻塞进程处理其他的连接,同时如果select的话, 可能也不是最佳选择,首先select支持fd的数目有限,如果需要支持更多的fd,还需要修改linux系统头文件,还有select当支持fd过多时,性能很低, 所以效率较高的处理方式就是epoll.
linux创建进程的开销很大,并且也占用相当多的资源, 当linux进程变多时, linux进程调度开销也很大.
nginx采用一个进程处理多个连接就减少了上述开销,较少了连接的处理时间和资源消耗.
nginx考虑非常细致, 在多核上,为了减少因为work进程切换到不同核上带来的cache miss开销, nginx为work增加了核绑定处理.
nginx的事件驱动对性能提升也很大.
相关文章推荐
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- Nginx启动提示找不到libpcre.so.1解决方法
- 编译安装Nginx-1.5.9
- Nginx proxy_pass后的url加不加/的区别
- nginx_vhost_mod
- 在LNMP或Nginx上配置NameCheap免费SSL
- nginx rewrite 规则
- Nginx Location配置总结
- 读nginx main函数【总纲】
- nginx - 性能优化,突破十万并发
- 服务器群集常用Nginx模块
- Nginx日志深入详解
- nginx扩展模块
- nginx 优化系列之worker_connections
- Nginx — 内存池
- nginx--C语言之对齐
- 自己制作ssl证书:自己签发免费SSL证书,为nginx生成自签名ssl证书
- Nginx处理php的步骤 处理请求的流程
- lvs、haproxy、nginx负载均衡的比较分析
- APACHE与NGINX 详细分析