nginx 面试知识点

1、nginx使用哪些指令进行负载均衡(upstream七层,stream四层)

upstream aaa{
        server 127.0.0.1
        server 127.0.0.2
}

stream {
    upstream redis{
        server 127.0.0.1:6381 max_fails=2 fail_timeout=10s;
        server 127.0.0.1:6382 max_fails=2 fail_timeout=10s;
    }
    server{
        listen 6379;
        proxy_timeout 3s;
        proxy_pass redis;
    }
}

2、负载均衡策略

轮询:
    upstream back{
        server 127.0.0.1
        server 127.0.0.2
    }

权重:
    upstream back{
        server 127.0.0.1 weight=5;
        server 127.0.0.1 weight=10;
    }

ip_hash:
    upstream back{
        ip_hash;
        server 127.0.0.1:88;
        server 127.0.0.2:80;
    }

fair:后端相应时间长短来分配
url_hash:url哈希,每个url定向到同一个后端,后端有缓存效率高

3、root和alias的区别

location /aaa/{
    root /home/www/;
}
访问aaa/匹配对应的是/home/www/aaa/

location /bbb/{
    alias /home/www/;
}
访问bbb/匹配对应是路径是/home/www/,结尾必须加斜杠

4、日志中检查前10的ip

cat access.log|awk '{print $1}'|sort|uniq -c|sort -klnr|head -n 10

5、如何保证高并发

异步非阻塞 epoll 一个master 管理、监控多个worker进程
每个请求进入之后,会有一个worker处理,处理到有阻塞的时候(发送请求到后端等待回应),注册标记时间,待可解除阻塞(后端相应)的时候,标记激活继续处理。

6、nginx 为何不用多线程

单线程 采用异步非阻塞处理请求,不必为每个请求创建一个线程,节约资源cpu\内存开支,减少cpu的上下文切换。

7、常见优化配置

worker_process  工作进程,一般和cpu核心数对应
worker_connections 最大客户端数,工作进程数*1024,1024为每个核心允许的最大进程数
gzip压缩 gzip on 开启之后减少客户端传输带宽,提高页面加载速度
事件指定模型
  events{
    use epoll;
    worker_connections 51200;
    multi_accept on;
      }
静态文件缓存
    location ~* .(jpg|jpeg|css|js)${
            expires 7d;
           }
keepalive相关超时时间
    client_body_timeout 12;
    client_header_timeout 12;
    keepalive_timeout 15;
    send_timeout 10;
access_log些缓冲区
    access_log /var/log/nginx/access.log main buffer=32k flush=1m
    32k缓存区大小,缓冲时间为1分钟

8、502报错

fastcgi 进程是否启动
fastcgi worker 进程数是否不够
fastcgi 执行时间过长
fastcgi buffer 不够(fastcgi_buffer_size 32k;fastcgi_buffers 8 32K)
proxy buffer 不够(proxy_buffer_size 16k;proxy_buffer 4 16K)
php脚本执行时间过长
posted @ 2020-12-05 17:35  乌鸦yy  阅读(162)  评论(0编辑  收藏  举报