<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          記一次 nginx 502 問題排查解決思路和過程!

          共 1314字,需瀏覽 3分鐘

           ·

          2022-06-15 14:34

          你知道的越多,不知道的就越多,業(yè)余的像一棵小草!

          你來,我們一起精進!你不來,我和你的競爭對手一起精進!

          編輯:業(yè)余草

          blog.csdn.net/w2009211777

          推薦:https://www.xttblog.com/?p=5347

          記一次 nginx 502 問題排查!

          總結(jié):nginx502:Tomcat調(diào)優(yōu)之a(chǎn)cceptCount

          問題背景:UI 頁面點擊會偶爾返回 error,檢查調(diào)用日志,發(fā)現(xiàn) nginx 報 502 報錯,因此本文即排查 502 報錯原因。

          如下紅框可知,訪問本機個備機的服務(wù) 502 了,用時 3 秒左右(可見并不是超時)。

          先給出原因:是因為 tomcat8 默認的 acceptCount 是 100,請求量大的時候,會將一些來不及處理的請求塞到 acceptCount,當(dāng) acceptCount 塞滿的時候,請求會被丟棄,即我們上面說的 nginx 報的 502 錯誤。

          解決方案:將 acceptCount 調(diào)大,目前線上調(diào)整到了 10000,經(jīng) 16 小時的觀察,沒有再報 502 錯誤,問題得以解決。

          排查過程:

          懷疑一:首先發(fā)現(xiàn) DB 的壓力突增,見圖,但是 DBA 幫排查后,這個時間點并沒有慢查詢,因此懷疑是否是服務(wù)器的問題。

          懷疑二:是不是有一臺服務(wù)有問題。

          但是經(jīng)排查 nginx 日志,兩臺服務(wù)都有 502 出現(xiàn)。因此這個情況排除

          懷疑三:tomcat 的本身的問題。

          由于 nginx 出現(xiàn) 502 的時候,時間有的只有3秒或者更小,因此也不是訪問 tomcat 超時的,所以最大的可能就是 tomcat 丟棄了請求,經(jīng)確認確實是丟棄了。

          怎么證明這個推斷呢?

          首先:看請求是否進入 tomcat 了,好在我們配置了 tomcat 的訪問日志記錄:配置如下:

          日志:檢查 502 請求的時間,在 tomcat 里面沒有記錄日志,可見并沒有進入 tomcat,從而論證了上面的觀點:502 是因為請求被丟棄了。

          那么為什么會丟棄呢?

          看了一些 tomcat 的默認配置,幾個重要的配置。參考:Apache Tomcat 8 Configuration Reference (8.5.78) - The HTTP Connectorhttps://tomcat.apache.org/tomcat-8.5-doc/config/http.html

          看到一個很重要的參數(shù) acceptCount。acceptCount 是100,第一感官,太小了,超過這個隊列就被丟棄了。

          acceptCount 解釋:當(dāng) maxConnections 超過 10000 萬(tomcat 默認值是10000)的時候,會將多余的連接放到 acceptCount 中,即默認的 tomcat 可以支持的最大連接數(shù)是 10000 + 100 = 10100;

          當(dāng)超過 10100 的時候,請求就會被丟棄,即 nginx 的 502 日志,解決方法:將acceptCount調(diào)整成 10000。502問題得以解決。

          注:

          maxConnections 與 acceptCount 的關(guān)系。

          瀏覽 71
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  狂插猛操 | 亚洲一区翔田千里无码 | 天天日日夜夜爱 | 凹凸超碰69 | 在线观看免费视频a |