面試常問伺服器?—Nginx八道必懂面試題
1.nginx常用命令
啟動nginx ./sbin/nginx
停止nginx ./sbin/nginx -s stop ./sbin/nginx -s quit
過載配置 ./sbin/nginx -s reload(平滑重啟) service nginx reload
過載指定配置檔案 ./sbin/nginx -c /usr/local/nginx/conf/nginx.conf
檢視nginx版本 ./sbin/nginx -v
檢查配置檔案是否正確 ./sbin/nginx -t
顯示幫助資訊 ./sbin/nginx -h
2.nginx狀態碼
499:服務端處理時間過長,客戶端主動關閉了連線。
3.nginx是如何實現高併發的
一個主程序,多個工作程序,每個工作程序可以處理多個請求
每進來一個request,會有一個worker程序去處理。但不是全程的處理,處理到可能發生阻塞的地方,比如向上遊(後端)伺服器轉發request,並等待請求返回。那麼,這個處理的worker繼續處理其他請求,而一旦上游伺服器返回了,就會觸發這個事件,worker才會來接手,這個request才會接著往下走。
由於web server的工作性質決定了每個request的大部份生命都是在網路傳輸中,實際上花費在server機器上的時間片不多。這是幾個程序就解決高併發的祕密所在。即@skoo所說的webserver剛好屬於網路io密集型應用,不算是計算密集型。
4.nginx功能
作為http server(代替apache,對PHP需要FastCGI處理器支援)
反向代理伺服器
實現負載均衡
虛擬主機
FastCGI:Nginx本身不支援PHP等語言,但是它可以通過FastCGI來將請求扔給某些語言或框架處理
5.502錯誤可能原因
(1).FastCGI程序是否已經啟動
(2).FastCGI worker程序數是否不夠
(3).FastCGI執行時間過長
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
(4).FastCGI Buffer不夠
nginx和apache一樣,有前端緩衝限制,可以調整緩衝引數
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
(5). Proxy Buffer不夠
如果你用了Proxying,調整
proxy_buffer_size 16k;
proxy_buffers 4 16k;
(6).php指令碼執行時間過長
將php-fpm.conf的<value name="request_terminate_timeout">0s</value>的0s改成一個時間
6.nignx配置
7.nginx和apache的區別
輕量級,同樣起web 服務,比apache 佔用更少的記憶體及資源
抗併發,nginx 處理請求是非同步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高效能
高度模組化的設計,編寫模組相對簡單
最核心的區別在於apache是同步多程序模型,一個連線對應一個程序;nginx是非同步的,多個連線(萬級別)可以對應一個程序
8.fastcgi與cgi的區別
cgi:
web伺服器會根據請求的內容,然後會fork一個新程序來執行外部c程式(或perl指令碼...), 這個程序會把處理完的資料返回給web伺服器,最後web伺服器把內容傳送給使用者,剛才fork的程序也隨之退出。 如果下次使用者還請求改動態指令碼,那麼web伺服器又再次fork一個新程序,周而復始的進行。
fastcgi:
web伺服器收到一個請求時,他不會重新fork一個程序(因為這個程序在web伺服器啟動時就開啟了,而且不會退出),web伺服器直接把內容傳遞給這個程序(程序間通訊,但fastcgi使用了別的方式,tcp方式通訊),這個程序收到請求後進行處理,把結果返回給web伺服器,最後自己接著等待下一個請求的到來,而不是退出。
以上就是nginx常見的幾道面試題
粉絲福利
上圖中的資料都是我精心錄製視訊,感興趣的可以加入我的Java學習圈子: 免費獲取。希望能夠在你接下來即將應對的的面試過程中能夠盡到