<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # KeepAlive 在OpenResty中,連接池在使用上如果不加以注意,容易產生數據寫錯地方,或者得到的應答數據異常以及類似的問題,當然使用短連接可以規避這樣的問題,但是在一些企業用戶環境下,短連接+高并發對企業內部的防火墻是一個巨大的考驗,因此,長連接自有其勇武之地,使用它的時候要記住,長連接一定要保持其連接池中所有連接的正確性。 ~~~ -- 錯誤的代碼 local function send() for i = 1, count do local ssdb_db, err = ssdb:new() local ok, err = ssdb_db:connect(SSDB_HOST, SSDB_PORT) if not ok then ngx.log(ngx.ERR, "create new ssdb failed!") else local key,err = ssdb_db:qpop(something) if not key then ngx.log(ngx.ERR, "ssdb qpop err:", err) else local data, err = ssdb_db:get(key[1]) -- other operations end end end ssdb_db:set_keepalive(SSDB_KEEP_TIMEOUT, SSDB_KEEP_COUNT) end -- 調用 while true do local ths = {} for i=1,THREADS do ths[i] = ngx.thread.spawn(send) ----創建線程 end for i = 1, #ths do ngx.thread.wait(ths[i]) ----等待線程執行 end ngx.sleep(0.020) end ~~~ 以上代碼在測試中發現,應該得到get(key)的返回值有一定幾率為key。 原因即是在ssdb創建連接時可能會失敗,但是當得到失敗的結果后依然調用ssdb_db:set_keepalive將此連接并入連接池中。 正確地做法是如果連接池出現錯誤,則不要將該連接加入連接池。 ~~~ local function send() for i = 1, count do local ssdb_db, err = ssdb:new() local ok, err = ssdb_db:connect(SSDB_HOST, SSDB_PORT) if not ok then ngx.log(ngx.ERR, "create new ssdb failed!") return else local key,err = ssdb_db:qpop(something) if not key then ngx.log(ngx.ERR, "ssdb qpop err:", err) else local data, err = ssdb_db:get(key[1]) -- other operations end ssdb_db:set_keepalive(SSDB_KEEP_TIMEOUT, SSDB_KEEP_COUNT) end end end ~~~ 所以,當你使用長連接操作db出現結果錯亂現象時,首先應該檢查下是否存在長連接使用不當的情況。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看