Nginx之连接超时,进程管理优化(负载均衡)

Nginx之连接超时,进程管理优化(负载均衡)

Nginx之连接超时

在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费
可设置相应的连接超时参数,实现控制连接访问时间

配置nginx

[root@localhost ~]# yum install pcre-devel zlib-devel gcc gcc-c++ -y ##安装环境包
[root@localhost ~]# useradd -M -s /sbin/nologin nginx  ##创建程序性用户
[root@localhost ~]# mkdir /chen  ##创建挂载点
[root@localhost ~]# mount.cifs //192.168.100.23/LNMP /chen  ##挂载
Password for root@//192.168.100.23/LNMP:
[root@localhost chen]# tar zxvf nginx-1.12.2.tar.gz -C /opt/  ##解压
[root@localhost chen]# cd /opt/
[root@localhost opt]# ls
nginx-1.12.2  rh
[root@localhost opt]# cd nginx-1.12.2/
[root@localhost nginx-1.12.2]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
./configure   ##安装nginx组件
--prefix=/usr/local/nginx 
--user=nginx 
--group=nginx 
--with-http_stub_status_module
[root@localhost nginx-1.12.2]# make && make install ##编译
[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ##做软链接让系统能识别nginx的所有人命令
[root@localhost nginx-1.12.2]# nginx -t  ##检查语法错误
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

写nginx脚本放在系统启动脚本中方便service管理器管理

[root@localhost nginx-1.12.2]# cd /etc/init.d/ ##到系统启动脚本
[root@localhost init.d]# vim nginx   ##写一个nginx脚本
#!/bin/bash
#chkconfig: - 99 20  #注释信息
#description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"  #这个变量,指向我的命令文件
PIDF="/usr/local/nginx/logs/nginx.pid"  #这个变量,指向nginx的进程号
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
[root@localhost init.d]# chmod +x nginx  ##给Nginx提升权限
[root@localhost init.d]# chkconfig --add nginx  ##添加nginx
[root@localhost init.d]# service nginx start
[root@localhost init.d]# netstat -ntap | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      17544/nginx: master
[root@localhost init.d]# systemctl stop firewalld.service
[root@localhost init.d]# setenforce 0

配置连接超时

修改nginx配置文件

[root@localhost ~]# cd /usr/local/nginx/conf/
[root@localhost conf]# vim nginx.conf

在http协议级别区域中添加

31     keepalive_timeout  65 180; ##65是服务器超时时间,180是客户端超时时间
32     client_header_timeout 80;  ##80是网页中的头部超时时间
33     client_body_timeout 80;  ##80是网页中身体的超时时间
[root@localhost conf]# service nginx stop
[root@localhost conf]# service nginx start

nginx进程管理优化

查看进程

[root@localhost conf]# ps aux | grep nginx
root      51524  0.0  0.0  20544   600 ?        Ss   20:05   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx     51525  0.0  0.0  23072  1388 ?        S    20:05   0:00 nginx: worker process
root      51531  0.0  0.0 112728   972 pts/3    S+   20:06   0:00 grep --color=auto nginx

master只是起到一个监督的作用,不会去处理请求
worker才是工作进程,处理请求
这边我们只有一工作进程,所有的请求都会交给它
如果我们想优化就要去扩展,我们在虚拟机中,直接扩展

如果我们这个nginx是在阿里云上面,即可以手动扩,也可以自动扩,自动扩就要写一个自动编排的工具,我们需要触发到比如CPU不足,这个时候就需要zbbix监控。
cpu 内存 硬盘 网络带宽 这些叫做垂直扩展
服务器实例的数量 叫做水平扩展

[root@localhost conf]# init 0 ##关闭服务器才能扩展

Nginx之连接超时,进程管理优化(负载均衡)

回到服务器中修改配置文件

[root@localhost ~]# cd /proc/ ##查看你的cpu,内存信息
[root@localhost proc]# ls
1     1536  1790  305  40   526  626  717        devices      mtrr
10    1542  18    306  41   53   628  72         diskstats    net
100   1545  189   307  416  54   63   723        dma          pagetypeinfo
1082  1557  19    31   417  55   630  724        driver       partitions
1084  1562  2     319  418  558  651  73         execdomains  sched_debug
1085  1565  20    32   42   560  652  732        fb           schedstat
1089  1581  21    320  43   575  654  733        filesystems  scsi
1096  1594  22    33   433  576  666  74         fs           self
11    16    23    333  44   577  667  75         interrupts   slabinfo
1106  1613  24    334  443  578  668  76         iomem        softirqs
1107  1629  25    335  45   579  669  763        ioports      stat
12    1633  26    336  450  580  671  77         irq          swaps
1228  1637  27    337  451  581  674  78         kallsyms     sys
126   1640  28    338  456  582  675  79         kcore        sysrq-trigger
13    1648  288   339  47   583  679  8          keys         sysvipc
131   1651  289   34   48   584  685  80         key-users    timer_list
1335  1660  29    340  486  585  686  888        kmsg         timer_stats
1337  1668  290   341  49   586  687  9          kpagecount   tty
1338  1680  298   342  5    587  690  99         kpageflags   uptime
136   1687  299   343  50   588  697  acpi       loadavg      version
14    1689  3     35   51   589  698  buddyinfo  locks        vmallocinfo
1438  1696  30    36   516  590  7    bus        mdstat       vmstat
1449  17    300   360  52   593  700  cgroups    meminfo      zoneinfo
1478  1739  301   37   522  6    701  cmdline    misc
1479  1741  302   38   523  60   703  consoles   modules
15    1749  303   39   524  61   71   cpuinfo    mounts
1532  1768  304   4    525  62   716  crypto     mpt
[root@localhost proc]# cat cpuinfo  ##查看CPU,有8个核心数
processor   : 7
vendor_id   : GenuineIntel
cpu family  : 6
model       : 94
model name  : Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
stepping    : 3
microcode   : 0xcc
cpu MHz     : 2591.567
cache size  : 6144 KB
physical id : 1
siblings    : 4
core id     : 3
cpu cores   : 4
apicid      : 7
initial apicid  : 7
fpu     : yes
fpu_exception   : yes
cpuid level : 22
wp      : yes

修改nginx配置文件

[root@localhost proc]# cd /usr/local/nginx/conf/
[root@localhost conf]# vim nginx.conf
3 worker_processes  8;  ##第三行修改原来只有一个核心数,现在我们改成8个
每个核心数默认处理1024个请求

让所有的请求分摊给这8个核心数去处理,做负载均衡

 4 worker_cpu_affinity 01 10
[root@localhost conf]# service nginx stop
[root@localhost conf]# service nginx start
[root@localhost conf]# ps aux | grep nginx ##查看进程
root       1951  0.0  0.0  20544   660 ?        Ss   23:24   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      1952  0.0  0.0  23072  1396 ?        S    23:24   0:00 nginx: worker process
nginx      1953  0.0  0.0  23072  1384 ?        S    23:24   0:00 nginx: worker process
nginx      1954  0.0  0.0  23072  1388 ?        S    23:24   0:00 nginx: worker process
nginx      1955  0.0  0.0  23072  1396 ?        S    23:24   0:00 nginx: worker process
nginx      1956  0.0  0.0  23072  1388 ?        S    23:24   0:00 nginx: worker process
nginx      1957  0.0  0.0  23072  1396 ?        S    23:24   0:00 nginx: worker process
nginx      1958  0.0  0.0  23072  1396 ?        S    23:24   0:00 nginx: worker process
nginx      1959  0.0  0.0  23072  1396 ?        S    23:24   0:00 nginx: worker process
root       1984  0.0  0.0 112728   972 pts/0    S+   23:25   0:00 grep --color=auto nginx

以上就是我们全部的内容,谢谢收看