管理nginx

nginx主进程的id默认写在/usr/local/nginx/logs/nginx.pid,主进程支持以下命令: 1.TERM,INT 强制停止 2.QUIT 正常停止(不再接收请求,但把当前请求处理完) 3.HUP 改变配置,使用新配置开启新工作进程,正常停止老工作进程 4.USR1  重开日志文件 5.USR2 更新可执行文件 6.WINCH 正常关闭工作进程 无效的工作进程也可用命令控制: 1. TERM ,INT 强制停止 2.QUIT 正常停止 3.USR1 重开日志 4.WINCH 为调试终止(需要debug_points启用)   修改配置文件: 为了让nginx重新读取新的配置文件,需要使用给主进程发送HUP命令,主进程首先检查配置文件的语法正确,再启用新的配置(打开日志文件,新建sockets连接,如果失败则返回重新使用旧的配置,成功则开启新进程并发信号给旧工作进程让它们正常停止,旧进程关闭sockets监听并继续提供服务至完成再停止) ps -eF | grep nginx 输出如下: root 2436 1 0 1505 732 0 22:01 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx www 2437 2436 0 4058 11100 0 22:01 ? 00:00:00 nginx: worker process www 2446 2436 0 4058 11100 0 22:01 ? 00:00:00 nginx: worker process www 2447 2436 0 4058 11100 0 22:01 ? 00:00:00 nginx: worker process www 2448 2436 0 4058 11100 0 22:01 ? 00:00:00 nginx: worker process www 2449 2436 0 4058 11100 0 22:01 ? 00:00:00 nginx: worker process www 2450 2436 0 4058 11100 0 22:01 ? 00:00:00 nginx: worker process www 2451 2436 0 4058 11100 0 22:01 ? 00:00:00 nginx: worker process www 2452 2436 0 4058 11084 0 22:01 ? 00:00:00 nginx: worker process 日志切割: 首先重命名日志文件,再发送USR1命令给主进程,然后主进程重新打开当前日志文件并授权给工作进程的用户,重打开日志完成后主进程关闭所有打开的文件并发送命令给工作进程让它们重打开日志文件,工作进程立即打开新文件关闭旧文件,之后旧文件就可以转储。 无缝更新可执行文件: 首先把新的可执行文件替代老的文件,之后发送USR2命令给主进程,主进程用pid重命名老文件到以.oldbin结尾的新文件(logs/nginx.pid.oldbin),之后开启新可执行文件并开启工作进程 之后所有(新的和旧的)工作进程继续接收请求,如果WINCH命令被发送到第一个主进程,它将发信号到它的工作进程让它们正常关闭 (当使用rtsig方式时,新进程在老进程发送WINCH信号前不能接收新请求,所以USR1必须不断被发送给新的主进程直到可以接收请求) 旧的主进程不会克隆监听的sockets,如果需要它可以再次开启自己的工作进程: 发送HUP信号给旧的主进程,它会不重读配置而直接开启工作进程,在这之后新的主进程就可以通过发送QUIT正常关闭 发送TERM信号给新主进程,它会发立即停止的信号给工作进程,工作进程马上停止工作,主进程停止后老进程就将启动 如果新进程不退进,KILL掉它,新进程关闭后,旧进程将开启新工作进程 主进程结束后,旧进程将去掉.oldbin后缀 如果更新成功,就可以发QUIT信号给旧进程,新进程将继续工作。 nginx采用了hash table来处理server_name,map参数,MIME类型名字的请求头,在启动和重配置的时候nignx使用最少的hash table,这样使用确定的hash值来存hash key的bucket size就不会超过配置的hash backet size,调整会持续到table的大小超过hash table size参数,大部分hash参数是可修改的,server name的参数是 server_names_hash_max_size 和 server_names_hash_bucket_size hash bucket size参数是进程缓存线的很多倍,减少了内存使用,加快了键的搜索,如果bucket size与进程缓存线大小相同,在进行键查找时最差会要两次(第一次计算bucket地址,第二次进入bucket查找),如果nginx发出需要增加hash max size和hash backet size参数的信息时,第一个参数优先需要增加
posted @ 2012-07-16 22:10  X海阳  阅读(175)  评论(0编辑  收藏  举报