读《实战nginx-取代Apache的高性能web服务器》--精华部分纪要

  
  
  
  
  1. Nginx 能够选择高效的epoll(linux 2.6内核) 、kqueue(FreeBSD)、eventport(Solars10) 
  2. 作为网络I/O模型而Apache使用的则是传统的select模型,其比较稳定的Prefork模式为多进程模式,
  3. 需要经常派生子进程所消耗的CPU等服务器资源比Nginx高很多。

  
  
  
  
  1. nginx编译容易混淆的几个参数 
  2.  
  3. --sbin-path=<path> 
  4. #nginx可执行文件安装路径。如没指定,默认<prefix>/sbin/nginx 
  5.  
  6. --conf-path=<path> 
  7. #在没有给定-c选项默认的nginx.conf的路径,默认<prefix>/conf/nginx.conf 
  8.  
  9. --error-log-path=<path> 
  10. #在nginx.conf中没有指定error_log指定的情况下,默认的错误日志的路径。如果没有指定,默认为<prefix>/logs/error.log 
  11.  
  12. --http-log-path=<path> 
  13. #在nginx.conf中没有指定access_log指定的情况下,默认的错误日志的路径。如果没有指定,默认为<prefix>/logs/access.log 

 

  
  
  
  
  1. nginx的几种停止,重启,升级方式  
  2. 从容停止  
  3. kill - QUIT  <pid>  
  4. 快速停止  
  5. kill - TERM  <pid> 或 kill - INT <pid>  
  6. 强制停止  
  7. pkill -9  <pid>  
  8. 重新打开日日志文件,在切割日志时用处很大 
  9. kill - USER1  <pid>  
  10.   
  11. 平滑重启 
  12. kill -HUP  <pid>  
  13. 当Nginx接到HUP信号时,他会尝试先解析配置文件(如果指定配置文件,就使用指定的,否则使用默认的) 
  14. 如果成功,就应用新的配置文件(例如,重新打开日志文件或监听的套接字)。之后,Nginx运行新的进程。 
  15. 通知工作进程关闭监听套接字,但是继续为当前连接的客户端提供服务。所有客户端的服务完成后, 
  16. 旧得工作进程被关闭。如果新的配置文件应用失败,Nginx将继续使用旧的配置进行工作  
  17.   
  18. 平滑升级 
  19. kill - USER2  <pid>  
  20. 旧版本的nginx的主进程将重命名他的.pid文件为.oldbin (例如:nginx.pid.oldbin), 
  21. 然后执行新版本的Nginx可执行程序,依次启动新的主进程和新的工作进程。 
  22. 此时,新、旧版本的nginx实例会同时进行,共同处理输入请求,要逐步停止旧版本的nginx实例 
  23. 你必须发送WINCH 信号给旧的主进程,然后,他的工作流程就将开始从容关闭。 
  24. kill -WINCH <旧版本nginx pid> 
  25. 一段时间后,旧的工作进程处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了。 
  26. 如果在新旧进程同时存在时,你不想升级了,则可以Kill -QUIT 或者 kill - TERM 新的主进程号。 
  27. 在新的主进程退出后,旧的主进程会移除.oldbin前缀,恢复为他的.pid文件,一切恢复如初。 
  28.   
  1. nginx常用配置参数解析
  2. # 使用的用户和组 
  3. user  www www; 
  4. # 指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍,例如两个四核CPU,则总核数为8) 
  5. worker_processes 8; 
  6. # 指定错误日志存放的路径,错误日志记录级别可选项为:[ debug | info | notice | warn | error | crit ]
  7. error_log  /data1/logs/nginx_error.log  crit; 
  8. # 指定 pid 存放的路径 
  9. pid        /usr/local/webserver/nginx/nginx.pid; 
  10. # 指定文件描述符数量 
  11. worker_rlimit_nofile 51200; 
  12. # 使用的网络I/O模型,Linux系统推荐采用epoll模型,FreeBSD系统推荐采用kqueue模型 
  13. use epoll; 
  14. # 允许的连接数 
  15. worker_connections 51200; 
  16. # 设置使用的字符集,如果一个网站有多种字符集,请不要随便设置,应让程序员在HTML代码中通过Meta标签设置 
  17. #charset  gb2312; 
  18. # 设置客户端能够上传的文件大小 
  19. client_max_body_size 8m; 
  20. # 开启gzip压缩 
  21. gzip on; 
  22. #log_format 设置日志记录格式 
  23. $remote_addr $http_x_forwarded_for 用户记录IP地址 
  24. $remote_user记录远程客户端用户名称 
  25. $time_local用户记录访问时间与时区 
  26. $request用于记录请求URL与HTTP协议 
  27. $status记录请求状态,例如200,404 
  28. $body_bytes_sent记录发送给客户端的文件主题内容大小 
  29. $http_referer记录从哪个页面链接访问过来的 
  30. $http_user_agent 记录客户端浏览器相关信息 
  31. #access_log 设置访问日志格式 
  32. #在nginx0.7.4之后的版本中,access_log 指定中的日志文件路径可以包含变量,如:access_log /var/log/$server_name.log 
  33. 如果日志文件路径中包含变量,则有以下一些限制 
  34. 1.nginx进程设置的用户和组必须对该路径有创建文件的权限 
  35. 2.缓冲将不会被使用 
  36. 3.对于每一条日志记录,日志文件都将先打开文件,再写入日志记录,然后马上关闭。为了提高包含变量的日志文件存放路径的性能,须使用open_log_file_cache指令设置经常被使用的日志文件描述符缓存。此选项默认是禁止的。 
  37. #nginx自动列目录配置 
  38. autoindex on; 

 

  
  
  
  
  1. nginx服务器优化内核参数 
  2. vim /etc/sysctl.conf 
  3.  
  4. vi /etc/sysctl.conf 
  5. 在末尾增加以下内容: 
  6.  
  7. # Add  
  8. net.ipv4.tcp_max_syn_backlog = 65536  
  9. net.core.netdev_max_backlog =  32768  
  10. net.core.somaxconn = 32768  
  11. net.core.wmem_default = 8388608  
  12. net.core.rmem_default = 8388608  
  13. net.core.rmem_max = 16777216  
  14. net.core.wmem_max = 16777216  
  15. net.ipv4.tcp_timestamps = 0  
  16. net.ipv4.tcp_synack_retries = 2  
  17. net.ipv4.tcp_syn_retries = 2  
  18. net.ipv4.tcp_tw_recycle = 1  
  19. #net.ipv4.tcp_tw_len = 1  
  20. net.ipv4.tcp_tw_reuse = 1  
  21. net.ipv4.tcp_mem = 94500000 915000000 927000000  
  22. net.ipv4.tcp_max_orphans = 3276800  
  23. #net.ipv4.tcp_fin_timeout = 30  
  24. #net.ipv4.tcp_keepalive_time = 120  
  25. net.ipv4.ip_local_port_range = 1024  65535  
  26.    
  27. 使配置立即生效: 
  28. /sbin/sysctl -p 

 

你可能感兴趣的:(nginx)