国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

nginx偶發(fā)502 no live upstreams while connecting to upstream

這篇具有很好參考價值的文章主要介紹了nginx偶發(fā)502 no live upstreams while connecting to upstream。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、問題現(xiàn)象

客戶截屏系統(tǒng)偶發(fā)報錯
nginx偶發(fā)502 no live upstreams while connecting to upstream
后臺排查nginx后臺偶爾大量報錯
no live upstreams while connecting to upstream
nginx偶發(fā)502 no live upstreams while connecting to upstream
在nginx服務(wù)器上nestat查看
nginx偶發(fā)502 no live upstreams while connecting to upstream
發(fā)現(xiàn)存在大量的 TIME_WAIT狀態(tài)的連接

二、問題分析

問題表現(xiàn)在nginx與下游服務(wù)器的連接出現(xiàn)了異常,在突發(fā)流量以后由于TIME_WAIT狀態(tài)的連接過多導(dǎo)致無法創(chuàng)建足夠的連接。

為什么會有如此之多的TIME_WAIT呢?
我的分析是nginx中upstream與下游服務(wù)器之間要么是配置的短連接,要么是keepalive 的數(shù)量太少了。經(jīng)過排查發(fā)現(xiàn)upstream中并無keepalive相關(guān)的配置。

如果nginx與下游服務(wù)器連接都是短連接的話,會頻繁的創(chuàng)建和斷開連接。每次斷開連接都會導(dǎo)致連接處于TIME_WAIT一段時間才能被回收掉。
TIME_WAIT狀態(tài)的持續(xù)時間是2MSL,2MSL的是時間還是比較長的,大概幾十秒到幾分鐘。
當(dāng)流量突增的時候,會出現(xiàn)大量無法回收的連接,最終導(dǎo)致新連接無法創(chuàng)建而報錯。

如果nginx與下游服務(wù)器配置了長連接,但是upstream中keepalive很小的話也會出問題。
nginx偶發(fā)502 no live upstreams while connecting to upstream
舉個極端的例子:
假如nginx最多可以建10000個連接,keepalive的連接數(shù)配置的是1000個,即,對空閑連接最多可以維持1000個。空閑連接的回收時間為60秒。

在第一秒突然流量高峰,瞬間建了10000個連接,抗住了壓力,沒出什么大問題。然后在接下來的60秒,幾乎沒有什么流量訪問,那么在此期間nginx會把9000個空閑連接給斷開進(jìn)行回收。但是回收中的連接會經(jīng)歷2MSL時間的TIME_WAIT。也就是說在此期間,這9000個連接是無法提供服務(wù)的。等到第61秒后,又來了一波流量高峰,需要建10000個連接才能抗住。這時就要出問題了,由于9000個連接無法有效回收,nginx只能拿出1000個連接應(yīng)對請求,新建連接失敗,后臺報錯。服務(wù)器上存在大量TIME_WAIT狀態(tài)的連接。

三、配置修改

為了解決上面的問題,對nginx做了如下的配置調(diào)整后,問題解決。
nginx偶發(fā)502 no live upstreams while connecting to upstream
nginx偶發(fā)502 no live upstreams while connecting to upstream
經(jīng)過若干天的觀察問題得到了解決
nginx偶發(fā)502 no live upstreams while connecting to upstream

四、nginx的容量分析

系統(tǒng)入口的平均響應(yīng)時間大概是150毫秒
nginx偶發(fā)502 no live upstreams while connecting to upstream
在http1.1的協(xié)議下,也就是說一個連接在1秒鐘大概可以處理6.6個請求。
1000毫秒 / 150毫秒 = 6.6

如果nginx長期維持1000個活躍連接,每秒的QPS大概能到6600
當(dāng)然流量突增的時候nginx還會新建連接,抗壓能力應(yīng)該會被6600要高。

這只是在理論上粗略的思考一下自己的nginx的抗壓能力。實際業(yè)務(wù)場景流量成分的差異、nginx連接的回收和復(fù)用,網(wǎng)絡(luò)擁塞情況,等等都會對nginx的性能產(chǎn)生很大的影響。文章來源地址http://www.zghlxwxcb.cn/news/detail-489752.html

到了這里,關(guān)于nginx偶發(fā)502 no live upstreams while connecting to upstream的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • NGINX [upstream timed out (110: Connection timed out) while reading response header from upstream]錯誤

    NGINX [upstream timed out (110: Connection timed out) while reading response header from upstream]錯誤

    最近負(fù)責(zé)的項目生產(chǎn)環(huán)境久不久會報響應(yīng)異常的錯誤,查看相應(yīng)的NGINX有持續(xù)幾分鐘的連接超時的日志,如下: 查看相應(yīng)的access日志,相應(yīng)時間的請求沒有響應(yīng)碼,再看沒有響應(yīng)前的請求日志,發(fā)現(xiàn)有幾筆持續(xù)請求超過設(shè)定時長5S的響應(yīng)時間的請求。查看應(yīng)用服務(wù)器的TCP請求

    2024年02月15日
    瀏覽(20)
  • upstream timed out (110: Connection timed out) while reading response header from upstream

    原因: ?1、nginx緩沖區(qū)太小或超時時間太短 ?2、后端服務(wù)器響應(yīng)慢 解決方案: 1、設(shè)置緩沖區(qū)大小和超時時長 server { ??? listen?????? 8080; ??? server_name? XXX.XXX.com; ??? large_client_header_buffers 4 16k;???? # 讀取客戶端請求頭的緩沖區(qū)的最大數(shù)量和大小 ??? client_max_body_siz

    2024年02月09日
    瀏覽(27)
  • permission denied while trying to connect to the Docker daemon socket 錯誤

    安裝 docker 執(zhí)行錯誤如下: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json”: dial unix /var/run/docker.sock: connect: permission denied 解決方法: docker.sock 文件的權(quán)限問題,可以重置其權(quán)限: 之后就正常了

    2024年02月13日
    瀏覽(25)
  • docker: permission denied while trying to connect to the Docker daemon socket at

    docker: permission denied while trying to connect to the Docker daemon socket at

    今天執(zhí)行docker時候報錯,docker: permission denied while trying to connect to the Docker daemon socket atXXX 因為是我新裝的docker,沒有執(zhí)行過什么任務(wù) 可能屬于新裝docker都會有的一些問題 一開始是報錯 : docker: Cannot connect to the Docker daemon at unix:xxx 意思是無法連接docker,檢查一下docker 服務(wù)是

    2024年02月04日
    瀏覽(24)
  • 【docker問題】permission denied while trying to connect to the Docker daemon socket at unix

    permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get \\\"http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json\\\": dial unix /var/run/docker.sock: connect: permission denied 配置VScode docker 插件??

    2024年02月02日
    瀏覽(26)
  • 解決nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)以及nginx 502 Bad Gateway解決方法

    解決nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)以及nginx 502 Bad Gateway解決方法

    今天早晨到公司,打開測試環(huán)境的登錄網(wǎng)頁,如下圖所示: 輸入用戶名和密碼,點擊 login ,一直無法登錄。 于是,打開控制臺,卻發(fā)現(xiàn)報出如下錯誤: 于是,登錄 nginx 所在的服務(wù)器,使用如下命令,找到 nginx 的安裝目錄:

    2024年02月08日
    瀏覽(21)
  • 【git報錯】The current branch dev has no upstream branch. To push the current branch and set the remote

    【git報錯】The current branch dev has no upstream branch. To push the current branch and set the remote

    發(fā)現(xiàn)問題 本地新建了一個dev分支,然后把dev分支下的代碼push到遠(yuǎn)程倉庫中,使用git push,但是報錯了,如下: fatal: The current branch dev has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin dev 翻譯 錯誤:當(dāng)前分支:dev沒有遠(yuǎn)程對應(yīng)的dev分支

    2024年02月11日
    瀏覽(25)
  • 遇到Got permission denied while trying to connect to the Docker daemon socket at unix:///var/怎么辦?

    遇到Got permission denied while trying to connect to the Docker daemon socket at unix:///var/怎么辦?

    問題:在使用執(zhí)行docker命令的時候,總是提示如下報錯 原因是:在默認(rèn)情況下,docker 的 Unix Socket屬于root用戶,當(dāng)然其他用戶可以使用sudo方式來訪問。因為這個原因, docker 進(jìn)程就一直是root用戶運行的。為了在使用 docker 命令的時候前邊不再加sudo,我們需要創(chuàng)建一個叫 dock

    2024年02月13日
    瀏覽(26)
  • permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

    permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

    錯誤: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get \\\"http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json\\\": dial unix /var/run/docker.sock: connect: permission denied 原因: docker進(jìn)程使用Unix Socket而不是TCP端口,而默認(rèn)情況下,Unix socket屬于root用戶,需要root權(quán)限才能

    2024年02月04日
    瀏覽(48)
  • transport: Error while dialing dial unix /var/run/dockershim.sock: connect: no such file or director

    transport: Error while dialing dial unix /var/run/dockershim.sock: connect: no such file or director 默行默致 分析: 根據(jù)報錯提示,使用的容器運行時是:/var/run/dockershim.sock。然后,我目前k8s的版本是v1.25.0,容器運行時應(yīng)該是/run/containerd/containerd.sock。因為做以下修改。 # 或者選擇修改配置文件也

    2024年02月03日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包