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

Nginx之连接超时

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

配置nginx

[[email protected] ~]# yum install pcre-devel zlib-devel gcc gcc-c++ -y ##安装环境包

[[email protected] ~]# useradd -M -s /sbin/nologin nginx  ##创建程序性用户

[[email protected] ~]# mkdir /chen  ##创建挂载点
[[email protected] ~]# mount.cifs //192.168.100.23/LNMP /chen  ##挂载
Password for [email protected]//192.168.100.23/LNMP:  

[[email protected] chen]# tar zxvf nginx-1.12.2.tar.gz -C /opt/  ##解压

[[email protected] chen]# cd /opt/
[[email protected] opt]# ls
nginx-1.12.2  rh
[[email protected] opt]# cd nginx-1.12.2/
[[email protected] 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

[[email protected] nginx-1.12.2]# make && make install ##编译

[[email protected] nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ##做软链接让系统能识别nginx的所有人命令
[[email protected] 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管理器管理

[[email protected] nginx-1.12.2]# cd /etc/init.d/ ##到系统启动脚本

[[email protected] 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

[[email protected] init.d]# chmod +x nginx  ##给Nginx提升权限
[[email protected] init.d]# chkconfig --add nginx  ##添加nginx
[[email protected] init.d]# service nginx start
[[email protected] init.d]# netstat -ntap | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      17544/nginx: master 

[[email protected] init.d]# systemctl stop firewalld.service
[[email protected] init.d]# setenforce 0

配置连接超时

修改nginx配置文件

[[email protected] ~]# cd /usr/local/nginx/conf/
[[email protected] conf]# vim nginx.conf

在http协议级别区域中添加

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

nginx进程管理优化

查看进程

[[email protected] 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 内存 硬盘 网络带宽 这些叫做垂直扩展
服务器实例的数量 叫做水平扩展

[[email protected] conf]# init 0 ##关闭服务器才能扩展

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

[[email protected] ~]# cd /proc/ ##查看你的cpu,内存信息
[[email protected] 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
[[email protected] 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配置文件

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

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

 4 worker_cpu_affinity 01 10
[[email protected] conf]# service nginx stop
[[email protected] conf]# service nginx start
[[email protected] 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

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

原文地址:https://blog.51cto.com/14449524/2450508

时间: 2024-08-02 07:43:27

Nginx之连接超时,进程管理优化(负载均衡)的相关文章

Nginx功能模块以及进程管理

1.      功能 1.1.           功能描述 使用缓存加速反向代理,简单负载均衡和容错: 使用缓存机制加速远程FastCGI服务器的访问: 模块化结构: 基本的HTTP功能: 邮件代理服务器功能: 架构可扩展:非阻塞.时间驱动.一个master多个worker.高度模块化: 主要扮演角色为反向代理.CDN缓存服务 1.2.           基本模块 内核模块.事件驱动模块.邮件模块.服务模块 相关配置参数举例: 内核模块参数env\error_log\master_proce

Nginx——事件驱动机制(惊群问题,负载均衡)

事件框架处理流程 每个worker子进程都在ngx_worker_process_cycle方法中循环处理事件,处理分发事件则在ngx_worker_process_cycle方法中调用ngx_process_events_and_timers方法,循环调用该方法就是 在处理所有事件,这正是事件驱动机制的核心.该方法既会处理普通的网络事件,也会处理定时器事件. ngx_process_events_and_timers方法中核心操作主要有以下3个: 1)  调用所使用事件驱动模块实现的proce

Nginx服务器的安装与反向代理负载均衡

Nginx服务器 一:什么是Nginx? 我们生活的世界中,有的时候需要上网.我们可以浏览很多很多的网页,这些网页都是由一系列的程序组成,但是我们是否想过,这些程序存储在什么地方呢?没错,这些程序都是存储在一种名叫服务器的硬件上,比如我们的电脑也是一种服务器,只不过我们的个人电脑作为服务器的话性能会比较低.我们的网页程序存储在服务器硬件上,是否可以随意存储呢?不是的,我们需要在服务器硬件的操作系统中搭建一个服务器软件,那么这样,有服务器软件跟服务器硬件配合,才形成一个完整的服务器.服务器软件有非

Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理

Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理 通常我们会用Nginx的upstream做基于http/https端口的7层负载均衡,由于Nginx老版本不支持tcp协议,所以基于tcp/udp端口的四层负载均衡一般用LVS或Haproxy来做.至于4层负载均衡和7层负载均衡的区别,可以参考:http://www.cnblogs.com/kevingrace/p/6137881.html.然而Nginx从1.9.0版本开始,新增加了一个stream模块,用来实现四层协

Nginx+keepalived做双机热备加tomcat负载均衡

Nginx+keepalived做双机热备加tomcat负载均衡 环境说明: nginx1:192.168.2.47 nginx2:192.168.2.48 tomcat1:192.168.2.49 tomcat2:192.168.2.50 vip:192.168.2.51 一.Nginx配置1.安装Nginx所需pcre库wgetftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.gz tar -zxvf pc

Nginx的安装以及反向代理和负载均衡的配置

环境说明 由于我使用的是windows系统,所以我用虚拟机虚拟出来了3台linux系统 虚拟机一:192.168.1.20 (Nginx反向代理和负载均衡服务器,系统kali linux) 虚拟机二:192.168.1.19 (node服务器一,系统ubuntu 17.10) 虚拟机三:192.168.1.22(node服务器二,系统ubuntu 17.10) 环境需要的程序 git Node Nginx pm2 首先环境的搭建,由于这三台电脑都是我刚刚虚拟出来的,所以什么环境都没有! 虚拟机一

Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第三部分

Nginx反向代理.动静分离.负载均衡及rewrite隐藏路径详解 (Nginx Apache MySQL Redis) 楓城浪子原创,转载请标明出处! 更多技术博文请见个人博客:https://fengchenglangzi.000webhostapp.com 微信bh19890922 QQ445718526.490425557 三.Nginx动静分离及负载均衡 3.1 Nginx安装 请参考:https://fengchenglangzi.000webhostapp.com/?p=511 亦

单节点nginx为两台apache服务器提供负载均衡

需求:本实验为单节点nginx为两台apache服务器提供负载均衡,所有配置为最简单 1.初始化3台测试server,该关的关了 [[email protected] ~]# vim /etc/hosts 192.168.1.101 ng-master 192.168.1.161 web1 192.168.1.162 web2 [[email protected] ~]# yum clean all [[email protected] ~]# systemctl stop firewalld.

nginx和tomcat实现反向代理、负载均衡和session共享

这类的文章非常多,nginx和tomcat实现反向代理.负载均衡实现非常easy,能够參照http://blog.csdn.net/liuzhigang1237/article/details/8880752 但tomcat借助memcache实现session共享非常麻烦(和jar的版本号有关),这里做个记录. 我的tomcat的版本号是7.0.53,须要加入的jar是: couchbase-client-1.2.0 javolution-5.4.3.1 Memcached-Java-Clie