nginx 面試知識點
阿新 • • 發佈:2020-12-05
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 開啟之後減少客戶端傳輸頻寬,提高頁面載入速度
靜態檔案快取
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指令碼執行時間過長