自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

這些 Nginx 負(fù)載均衡配置誤區(qū),運(yùn)維請(qǐng)注意

開發(fā) 前端
之前有很多朋友問關(guān)于 Nginx 的 upstream 模塊中 max_fails 及 fail_timeout,這兩個(gè)指令,分別是配置關(guān)于負(fù)載均衡過程中,對(duì)于上游(后端)服務(wù)器的失敗嘗試次數(shù)和不可用時(shí)間,很多人不是很理解這兩個(gè)參數(shù)到底怎么用及具體的含義。

 [[393315]]

之前有很多朋友問關(guān)于 Nginx 的 upstream 模塊中 max_fails 及 fail_timeout,這兩個(gè)指令,分別是配置關(guān)于負(fù)載均衡過程中,對(duì)于上游(后端)服務(wù)器的失敗嘗試次數(shù)和不可用時(shí)間,很多人不是很理解這兩個(gè)參數(shù)到底怎么用及具體的含義。

先看官網(wǎng)文檔中的描述

官網(wǎng)文檔中解釋 max_fails 是指在 fail_timeout 配置的時(shí)間內(nèi),服務(wù)器通信失敗的次數(shù),默認(rèn)為1,即在 fail_timeout 時(shí)間內(nèi),1次請(qǐng)求失敗即不再嘗試,將請(qǐng)求根據(jù) hash 規(guī)則,轉(zhuǎn)發(fā)到下一個(gè)上游服務(wù)

fail_timeout 有兩種含義:

  • 當(dāng)已經(jīng)確認(rèn)上游服務(wù)不可用時(shí),是指與上游服務(wù)器通信失敗次數(shù)的時(shí)間
  • 服務(wù)器不可用的時(shí)間段

默認(rèn)是10s

文字不是很好理解,搭建個(gè)實(shí)驗(yàn)環(huán)境,環(huán)境如下:

  • Nginx
  • PHP-FPM(x2)

nginx 通過 fast-cgi 將 php 請(qǐng)求轉(zhuǎn)發(fā)到 PHP-FPM,這里 PHP-FPM 服務(wù)即上游服務(wù),設(shè)置 upstream,負(fù)載 PHP-FPM

upstream 按照默認(rèn)配置,即 max_fails=1,fail_timeout=10

現(xiàn)在通過 tailf 分別監(jiān)聽兩個(gè) PHP-FPM 日志

請(qǐng)求4次,因?yàn)槭悄J(rèn)輪詢的,所以可以看時(shí)間,輪詢將請(qǐng)求分發(fā)到兩個(gè)PHP-FPM上游

可以從上面的日志中看到,按照輪詢規(guī)則,下次請(qǐng)求應(yīng)該落到 PHP-FPM2 上面,接著,關(guān)掉 PHP-FPM1,繼續(xù)請(qǐng)求

可以看到,PHP-FPM1肯定是不響應(yīng)了,PHP-FPM2正常響應(yīng),接著看下Nginx日志

可以看到,關(guān)掉 PHP-FPM1 后,發(fā)起的請(qǐng)求,本來第二次請(qǐng)求(17:49:58)應(yīng)該分發(fā)到 PHP-FPM1 的,然后從 Nginx 錯(cuò)誤日志可以看到,連接 PHP-FPM1 失敗,這里只做了一次失敗嘗試,然后 Nginx 將請(qǐng)求轉(zhuǎn)發(fā)到 PHP-FPM2 處理了。

接著將 max_fails 設(shè)置為2,繼續(xù)上面的請(qǐng)求

開啟 PHP-FPM1,繼續(xù)請(qǐng)求,兩個(gè)負(fù)載輪詢轉(zhuǎn)發(fā)請(qǐng)求

接著繼續(xù)關(guān)掉 PHP-FPM1,連續(xù)發(fā)起多次請(qǐng)求,查看日志

所有請(qǐng)求都在 PHP-FPM2上,看 Nginx 錯(cuò)誤日志

兩次輪詢到PHP-FPM1的時(shí)候,失敗,之后不會(huì)再將請(qǐng)求分發(fā)到 PHP-FPM1 上游服務(wù)

接著,不開啟 PHP-FPM1,繼續(xù)發(fā)起多次請(qǐng)求,由于默認(rèn)的 fail_timeout=10,所以在上面的失敗檢測(cè) 10s 之后再次發(fā)起請(qǐng)求,查看日志

繼續(xù)分發(fā)到 PHP-FPM2,接著看 Nginx 錯(cuò)誤日志

可以看到,過了 fail_timeout 的時(shí)間后,Ngxin 會(huì)再次將請(qǐng)求發(fā)往 FPM-PHP1 進(jìn)行嘗試,嘗試2次失敗后,在 fail_timeout 時(shí)間內(nèi),不會(huì)再將請(qǐng)求分發(fā),

這里有幾個(gè)誤區(qū):

  • Nginx 記錄了連接上游失敗,這個(gè)請(qǐng)求就返回錯(cuò)誤請(qǐng)求,或這個(gè)請(qǐng)求丟失沒處理

這個(gè)理解是錯(cuò)誤的,Nginx 只是記錄了失敗的請(qǐng)求到日志,并將這個(gè)請(qǐng)求又轉(zhuǎn)發(fā)到了可用的其他上游服務(wù),知道所有上游都不可用時(shí),才會(huì)返回錯(cuò)誤狀態(tài)

  • max_fails 是指連續(xù)請(qǐng)求失敗的次數(shù)

max_fails 是在 fail_timeout 指定的時(shí)間內(nèi)的失敗次數(shù),請(qǐng)求還是按照配置的負(fù)載均衡算法來走,并不是第一次請(qǐng)求失敗之后,繼續(xù)將這個(gè)請(qǐng)求在嘗試一次,達(dá)到失敗次數(shù)之后,標(biāo)記為不可用

  • fail_timeout 越短越好

當(dāng)訪問量大的時(shí)候,fail_timeout 設(shè)置太短,會(huì)導(dǎo)致不斷的嘗試與不可用上游的連接,耗費(fèi)大量的 tcp 資源進(jìn)行連接

  • fail_timeout 越長(zhǎng)越好

當(dāng)訪問量大的時(shí)候,fail_timeout設(shè)置太長(zhǎng),會(huì)導(dǎo)致負(fù)載不均衡,有可能會(huì)擊穿某個(gè)上游后端,達(dá)不到負(fù)載的效果。

 

責(zé)任編輯:張燕妮 來源: 運(yùn)維研習(xí)社
相關(guān)推薦

2016-12-09 13:21:45

運(yùn)維Linux命令

2014-07-28 11:37:49

NginxTomcat

2018-03-28 11:03:23

Nginx負(fù)載均衡運(yùn)維

2023-10-08 07:15:54

NGINX網(wǎng)關(guān)參數(shù)

2010-03-25 18:52:15

Nginx負(fù)載均衡

2012-07-31 09:25:42

nginx負(fù)載均衡反向代理

2013-04-22 11:29:14

Nginx

2021-07-12 15:20:47

運(yùn)維負(fù)載均衡CDN

2010-03-30 13:59:56

Nginx負(fù)載均衡配置

2012-12-07 10:14:48

Nginx負(fù)載均衡

2021-07-27 16:28:23

Windows 11Windows微軟

2013-08-22 16:32:24

2019-07-09 15:10:02

Nginx反向代理負(fù)載均衡

2010-05-04 13:32:37

nginx負(fù)載均衡器

2011-12-02 22:51:46

Nginx負(fù)載均衡

2019-05-28 15:05:10

NginxTomcat負(fù)載均衡

2011-02-17 09:45:54

FreeBSD 8.1nginx負(fù)載均衡

2010-05-04 13:38:25

nginx負(fù)載均衡器

2010-05-06 10:01:26

nginx負(fù)載均衡

2011-09-01 10:23:47

Nginx負(fù)載均衡器負(fù)載均衡
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)