nginx 10-Nginx排查优化

Nginx常见问题

1、相同server_name多个虚拟主机优先级访问

(就近原则)

2、location匹配优先级

=		--进行普通字符精确匹配,也就是完全匹配
^~		--进行普通字符匹配,使用前缀匹配
~ \~*	--表示执行一个正则匹配()
  • 配置案例:
server {
    listen       80;
    server_name  testserver1;
    root   /opt/app;

    location = /code1/ {
        rewrite ^(.*)$ /code1/index.html break;
    }
    location ~ /code.* {
        rewrite ^(.*)$ /code3/index.html break;
    }
    location ^~ /code {
        rewrite ^(.*)$ /code2/index.html break;
    }
}

3、try_files使用

  • 按顺序检查文件是否存在
  • 语法配置:
location / {
    try_files $uri $uri/ /index.php
}
  • 配置案例:
location / {
    root /opt/app/code/cache;
    try_files $uri @java_page;
}

location @java_page {
    proxy_pass http://127.0.0.1:9000;
}

4、nginx的alias和root区别

  • 配置案例:
location /request_path/image/ {
    root /local_path/image/;
}

请求url:http://www.test.com/request_path/image/cat/png
访问路径:/local_path/image/request_path/image/cat/png
location /request_path/image/ {
    alias /local_path/image/;
}

请求url:http://www.test.com/request_path/image/cat/png
访问路径:/local_path/image/cat/png

5、用什么方法传递用户的真实IP

set x_real_ip=$remote_addr

6、Nginx中常见错误码

Nginx:413 Request Entity Too Large
用户上传文件限制 client_max_body_size

502 bad gateway
后端服务无响应

504 Gateway Time-out
后端服务执行超时

Nginx性能测试

1、性能优化考虑点

  • 当前系统结构瓶颈:观察指标、压力测试
  • 了解业务模式:接口业务类型、系统层次化结构
  • 性能与安全

2、压测工具ab

  • 安装
yum install httpd-tools
  • 使用
ab -n 2000 -c 2 http://127.0.0.1
-n	总的请求数
-c	并发数
-k	是否开启长连接
  • 返回结果
localhost:~ user$ ab -n 100 -c 10 www.baidu.com/index.php
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.baidu.com (be patient).....done


Server Software:        BWS/1.1
Server Hostname:        www.baidu.com
Server Port:            80

Document Path:          /index.php
Document Length:        153242 bytes

Concurrency Level:      10
Time taken for tests:   2.358 seconds
Complete requests:      100
Failed requests:        98
   (Connect: 0, Receive: 0, Length: 98, Exceptions: 0)
Total transferred:      15422153 bytes
HTML transferred:       15325288 bytes
Requests per second:    42.41 [#/sec] (mean)
Time per request:       235.797 [ms] (mean)
Time per request:       23.580 [ms] (mean, across all concurrent requests)
Transfer rate:          6387.14 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       36   39   1.9     39      45
Processing:   117  186  77.4    135     339
Waiting:       38   72  38.4     46     142
Total:        156  225  77.5    174     381

Percentage of the requests served within a certain time (ms)
  50%    174
  66%    251
  75%    308
  80%    323
  90%    352
  95%    368
  98%    371
  99%    381
 100%    381 (longest request)
localhost:~ user$

系统与nginx性能优化

  • 网络、系统、服务、程序、数据库、底层服务

1、文件句柄

  • Linux一切皆文件,文件句柄就是一个索引
  • 系统全局性修改、用户全局部性修改、进程局部性修改
cat /etc/security/limits.conf

root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
  • 针对nginx进程进行限制
nginx.conf
...
worker_rlimit_nofile 65535;
http {
......
}

2、CPU的亲和设置

  • 把进程通常不会在处理器之间频繁迁移进程迁移的频率小,减少性能损耗。
  • 查看系统cpu情况
cat /proc/cpuinfo | grep "processor" | wc -l
cat /proc/cpuinfo | grep "physical id" | sort | uniq |wc -l
  • 查看nginx使用cpu的情况
ps -eo pid,args,psr | grep [n]ginx
  • 优化配置:
worker_processes  16;
#worker_cpu_affinity 0000000000000001 0000000000000010 0000000000000100 0000000000001000 0000000000010000 0000000000100000 0000000001000000 0000000010000000 0000000100000000 0000001000000000 0000010000000000 0000100000000000 0001000000000000 0010000000000000 0100000000000000 1000000000000000;
#worker_cpu_affinity 1010101010101010 0101010101010101;
worker_cpu_affinity auto;
.....
http {
......
}

3、Nginx通用配置优化

events {
    use epoll;
    worker_connections 10240;
}
http {
    ...
    charset utf-8;
    sendfile on;
    #tcp_nopush;
    #tcp_nodeny;
    keepalive_timeout 65;
    
    gzip on;
    gzip_diable "MSIE [1-6]\.";
    gzip_http_version 1.1;
}
posted @ 2019-04-09 16:27  瞎搞的富哥  阅读(515)  评论(0编辑  收藏  举报