深入理解nginx读书笔记---初识nginx

Why nginx?

1、更快

一方面,正常情况下,单次请求会得到更快的响应;另一方面,在高峰期nginx会比其他代理响应更迅速。

2、高扩展性

Nginx的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。低耦合的特点造就了nginx大量的第三方模块,且都是通过嵌入到二进制文件中执行的,都具备优秀的性能。

3、高可靠性

依赖于nginx核心代码的优秀设计、模块设计的简单性;每一个worker进程都相对独立,出错后可以马上另外拉起一个。

4、低内存消耗

一般情况下,10000个非活跃的HTTP keepalive连接连接仅在nginx消耗2.5M内存。

5、单机支持10w以上的高并发连接。

6、热部署

master管理进程和worker工作进程的分离设计,使nginx在不中断工作的情况下进行热升级、热加载、更换日志文件等。

7、最自由的BSD协议

使得人们可以免费试用nginx的代码,还可以二次开发。

基础库

yum install -y gcc
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
 

内核参数优化(通用说明)

  • fs.file-max:系统内所有进程打开的文件描述符数量。可以查看系统当前值:
    #查看当前设置
    [root@localhost ~]# cat /proc/sys/fs/file-max 
    6553560
    #查看当前打开的文件描述符数,依次是 当前系统打开文件描述符数量,0,file-max
    [root@localhost ~]# cat /proc/sys/fs/file-nr
    9216	0	6553560
  • net.ipv4.tcp_tw_reuse:当作为客户端调用connect时,能够复用TIME_WAIT状态的套接字。
  • net.ipv4.tcp_keepalive_time:表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,调整短一些,可以更快地清理无效的连接。
  • net.ipv4.tcp_fin_timeout:主动关闭连接时,本端保持在FIN-WAIT-2状态的最大时间。
  • net.ipv4.tcp_max_tw_buckets:系统保留TIME_WAIT状态的最大套接字数量,如果超过这个值,套接字将立即被清除并打印告警记录。该参数被设定为抵御简单的dos攻击,一般不建议人为改小。
  • net.ipv4.tcp_max_syn_backlog:SYN_RECV状态的最大值,对于内存降低的机器,设置最小值为128。其默认值会随着内存增加而增加。当机器/服务负载过高,无法及时处理连接时,可以适当调高此值。一个SYN请求大概占用304字节的内存。修改此值得同时也要适当调整 /proc/sys/net/core/somaxconn参数。
  • net.core.somaxconn:表示一个处于LISTEN状态的套接字,其接受SYN的队列长度。
  • net.ipv4.ip_local_port_range:定义了UDP和TCP连接使用的本地端口范围,最好设置为一个偶数,一个奇数。必须大于或等于 ip_unprivileged_port_start。
  • net.ipv4.ip_unprivileged_port_start:是命名空间粒度的配置,定义了非特权端口的最小值。特权端口需要root或 CAP_NET_BIND_SERVICE 才能绑定。默认值为1024.
  • net.ipv4.tcp_rmem:定义了TCP接收缓存(用于TCP接收滑动窗口)的最小值,默认值和最大值。单位为B。
  • net.ipv4.tcp_wmem:定义了TCP发送缓存(用于TCP发送滑动窗口)的最小值,默认值和最大值。单位为B。
  • net.core.netdev_max_backlog:接收网卡数据包的缓存队列长度。
  • rmem_default:套接字接收缓存区默认大小。会被tcp_rmem 的default覆盖。
  • rmem_max:套接字接收缓存区最大的大小。不会被tcp_rmem 的max覆盖。
  • wmem_default:套接字发送缓存区默认大小。会被tcp_wmem 的default覆盖。
  • wmem_max:套接字发送缓存区最大的大小。不会被tcp_wmem 的max覆盖。

安装(此处没有按照书中的源码安装,而是安装的openresty版本,环境为centos7.7,内核5.9.11)

openresty官网:http://openresty.org/en/linux-packages.html

# add the yum repo:
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/

# update the yum index:
sudo yum check-update

#install openresty
sudo yum install openresty

命令行控制(默认安装位置 /usr/local/openresty/)

1、指定配置文件

/usr/local/openresty/nginx/sbin/nginx -c tmp.conf

2、临时指定全局配置项。

注意:指定临时全局配置启动后,执行其他命令时也要加上这些配置,否则会执行出错;且临时配置不能与配置文件中的配置冲突。

#指定pid文件
/usr/local/openresty/nginx/sbin/nginx -g 'pid /var/nginx.pid;'
/usr/local/openresty/nginx/sbin/nginx -g 'pid /var/nginx.pid;' -s stop

3、测试配置文件

/usr/local/openresty/nginx/sbin/nginx -t

4、进程操作相关

#强制停止
/usr/local/openresty/nginx/sbin/nginx -s stop
kill -s SIGTERM $(cat nginx.pid)
kill -s SIGINT $(cat nginx.pid)

#优雅退出
/usr/local/openresty/nginx/sbin/nginx -s quit
kill -s SIGQUIT $(cat nginx.pid)

#热加载配置文件
/usr/local/openresty/nginx/sbin/nginx -s reload
kill -s SIGHUP $(cat nginx.pid)

#日志文件回滚(将旧的日志文件回滚后,reopen使进程重新打开日志文件,完成回滚)
/usr/local/openresty/nginx/sbin/nginx -s reopen
kill -s SIGUSER1 $(cat nginx.pid)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值