Chinaunix首页 | 论坛 | 博客
  • 博客访问: 94476
  • 博文数量: 27
  • 博客积分: 97
  • 博客等级: 民兵
  • 技术积分: 458
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-02 00:11
文章分类
文章存档

2012年(10)

2011年(17)

分类:

2011-12-30 22:06:08

原文地址:ngnix简述 作者:深蓝苹果

基于nginx-1.1.7

src/
core/ 该目录存放核心基础模块的代码,也是Nginx服务的入口
event/ Nginx 自身对事件处理逻辑的封装
http/ HTTP协议处理模块的代码,Nginx作为WEB服务器和代理服务器运行时的核心模块
mali/ Mail处理模块的代码,Nginx作为pop3/imap/smtp代理服务器运行时的核心模块
misc/ nginx 的一些utils,定义了test和profiler的一些外围模块的逻辑
os/ Nginx对各个平台抽象逻辑的封装,目前只有unix系
Nginx可以开启多个进程,每个进程拥有最大上限128个子线程以及一定的可用连接数。
如果希望使用线程可以在配置文件中设置worker_threads这个参数,但这个参数在Nginx官方手册上没有。
只有通过阅读源代码才看到。最大客户端连接数等于进程数与连接数的乘积,连接是在主进程中初始化的,一开始所有连接处于空闲状态。

每一个客户端请求进来以后会通过事件处理机制,在Linux是Epoll,在FreeBSD下是KQueue放到空闲的连接里。

如果设置了线程数,那么被填充的连接会在子线程中处理,否则会在主线程中依次处理。
如果解析出是动态脚本请求,会根据fast-cgi的设置访问php-cgi进程,php进程数量的多少依据php-fpm.conf中max_children的设置。
因此Nginx的动态请求能力不仅仅依靠Nginx本身的设置,还要调试php-fpm。


从源代码级别上看nginx由以下几个元素组成:

1. worker(进程)
2. thread(线程)
3. connection(连接)
4. event(事件)
5. module(模块)
6. pool(内存池)
7. cycle(全局设置)
8. log(日志)
connection和event是按照链表的方式进行存放的,区别在于connection是单向链表而event是双向链表。
nginx由若干模块组成,但所有模块全部采用静态编译的办法。
阅读(1164) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~