zoukankan      html  css  js  c++  java
  • 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脚本执行时间过长
  • 相关阅读:
    [Clr via C#读书笔记]Cp18 定制Attribute
    [Clr via C#读书笔记]Cp16数组
    [Clr via C#读书笔记]Cp17委托
    [Clr via C#读书笔记]Cp15枚举和位标识
    [Clr via C#读书笔记]Cp14字符字符串和文本处理
    [Clr via C#读书笔记]Cp13接口
    [Clr via C#读书笔记]Cp12泛型
    [Clr via C#读书笔记]Cp11事件
    [Clr via C#读书笔记]Cp10属性
    【程序员面试金典】面试题 02.06. 回文链表
  • 原文地址:https://www.cnblogs.com/plefan/p/14090386.html
Copyright © 2011-2022 走看看