nginx调优 nginx安装 ngx_http_stub_status监控连接信息 ngxtop监控请求信息 nginx-rrd图形化监控 nginx优化 修改yum源 vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 yum install nginx -y nginx的启停 systemctl status/start/stop nginx 查看启动关闭nginx nginx -s reload 重启 nginx -V 查看编译参数 /etc/nginx/nginx.conf 默认配置文件 注意:配置反向代理要关闭selinux setenforce 0 nginx -s stop/start/reload ngx_http_stub_status配置 主要监控nginx连接信息 使用yum安装时,默认编译了此模块,如编译安装,需手动编译进去 查看编译参数nginx -V 添加配置 location = /nginx_status{ stub_status on; access_log off; allow 127.0.0.1; deny all; } ngxtop安装 主要监控nginx请求信息 yum install epel-release python-pip pip install ngxtop ngxtop使用 指定配置文件: ngxtop -c /etc/nginx/nginx.conf 查询状态是200: ngxtop -c /etc/nginx/nginx.conf -i 'status==200' 查询访问最多ip: ngxtop -c /etc/nginx/nginx.conf -g remote_addr nginx-rrd监控 可以监控nginx的连接信息和请求信息 1.安装nginx 配置ngx_http_stub_status监控 关闭防火墙 iptables -F systemctl stop firewalld 2.安装php相关依赖 yum install -y php php-gd php-soap php-mbstring php-xmlrpc php-dom php-fpm 3.nginx整合php-fpm 修改/etc/php-fpm.d/www.conf文件中的user和group,与nginx.conf中的user一致. user = nginx group = nginx 4.启动php-fpm服务 systemctl start php-fpm 5.修改nginx的配置 location ~ .php${ root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include fastcgi_params; } 6.重启nginx nginx -s reload 7.编写index.php cd /usr/share/nginx/html cat index.php <?php phpinfo();?> 8.打开浏览器访问:http://ip/index.php 9.安装rrdtool相关依赖 yum install -y perl rrdtool perl-libwww-perl libwww-perl perl-rrdtool 10.安装nginx-rrd wget http://soft.vpser.net/status/nginx-rrd/nginx-rrd-0.1.4.tgz tar -zxvf nginx-rrd-0.1.4.tgz cd nginx-rrd-0.1.4 cp usr/sbin/* /usr/sbin #复制主程序文件到/usr/sbin下 cp etc/nginx-rrd.conf /etc #复制配置文件到/etc下 cp html/index.php /usr/share/nginx/html/ 11.修改配置 vim /etc/nginx-rrd.conf RRD_DIR="/usr/share/nginx/html/nginx-rrd"; WWW_DIR="/usr/share/nginx/html/"; 12.新建定时任务 crontab -e crontab -l * * * * * /bin/sh /usr/sbin/nginx-collect */1 * * * * /bin/sh /usr/sbin/nginx-graph 查看任务 tail -f /var/log/cron crontab -l 13.ab压测 安装ab压测工具: yum install -y httpd-tools ab -n 10000 -c 10 http://127.0.0.1/index.html nginx优化 增加工作线程数和并发连接数 启用长连接 #开启与后端Server的长连接-反向代理时 启用缓存/压缩 操作系统优化 配置工作线程和并发数 worker_processes 4; #CPU 也可以改为 auto 让Nginx自动选择 events{ worker_connections 10240; #每一个进程打开的最大连接数,包含了Nginx与客户端和Nginx与upstream之间的连接 该值受限于操作系统 multi_accept on; #可以一次建立多个连接 use epoll; #启用epoll网络模型 } 注:nginx -t 可测试nginx的配置文件是否正确!!! 配置后端Server的长连接 upstream server_pool{ server localhost:8080 weight=1 max_fails=2 fail_timeout=30s; server localhost:8180 weight=1 max_fails=2 fail_timeout=30s; keepalive 300; } location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade": proxy_pass http://server_pool/; } 配置压缩 gzip on; gzip_http_version 1.1; gzip_disable "MSIE [1-6].(?!.*SV1)"; gzip_proxied any; gzip_types text/plain text/css application/javascript application/x-javascript application/json application/xml application/vnd.ms-fontobject application/x-font-ttf application/svg+xml application/x-icon; #html默认开启 gzip_vary on; #Vary:Accept-Encoding gzip_static on; #如果有压缩好的 直接使用 编译nginx需要加入相关选项 操作系统优化 配置文件/etc/sysctl.conf sysctl -w net.ipv4.tcp_syncookies = 1 #防止一个套接字有过多的试图连接达到是引起过载 sysctl -w net.core.somaxconn = 1024 #默认128,连接队列 sysctl -w net.ipv4.tcp_fin_timeout = 10 #timewait的超时时间 sysctl -w net.ipv4.tcp_tw_reuse = 1 #OS直接使用timewait的连接 sysctl -w net.ipv4.tcp_tw_recycle = 0 #回收禁用 如果打开可能会引起tcp协议做不下去,引起系统不稳定 配置文件/etc/security/limits.conf * hard nofile 204800 * soft nofile 204800 * soft core unlimited * soft stack 204800 其他优化 sendfile on; #减少文件在应用和内核之间的拷贝 tcp_nopush on; #当数据包达到一定大小再发送 tcp_nodelay off; #有数据随时发送