乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Elasticsearch 線上問題排查——搞一天了,明天還要給客戶解決這個問題

       銘毅天下 2021-12-24

      1、線上問題

      線上問題描述:

      原來是聊天形式,比較冗長,精簡后的問題描述如下:
      • 癥狀:新增節(jié)點后,shard 沒有分配到新節(jié)點上。如下圖所示:

      2、問題排查

      我的大致排解思路:

      如下第一、第二、第三......代表排查問題的推進(jìn)步驟。

      2.1 第一:確定節(jié)點角色劃分,核實未被分配的節(jié)點類型。

      僅主節(jié)點是不參與分片數(shù)據(jù)落地存儲的,這是認(rèn)知大前提。
      經(jīng)對方核實,未分配的節(jié)點的確是數(shù)據(jù)節(jié)點。
      集群有3個候選主節(jié)點,3個數(shù)據(jù)節(jié)點,其中1個數(shù)據(jù)節(jié)點為新添加的節(jié)點。

      2.2 第二:關(guān)閉索引再打開試試。

      close 再 open 之前驗證過會走重新分配機(jī)制,部分場景適用。
      經(jīng)對方核查,沒有生效。

      2.3 第三:獨立創(chuàng)立一個新索引,設(shè)置3個副本。

      分片分配策略是:主、副本會分配到不同的節(jié)點上。
      多個副本,如果數(shù)據(jù)節(jié)點夠多,肯定會相對均勻的分片到多個節(jié)點。
      經(jīng)核查:仍然無法分配到新增的數(shù)據(jù)節(jié)點。
      不過,此時看截圖,已有了未分配的灰色分片。

      2.4 第四:查看分片未分配的原因。

      排查方法:
      GET _cluster/allocation/explain
      這時候,客戶反饋:“我設(shè)置了節(jié)點踢出集群的設(shè)置”。
      我的第一反應(yīng):“和這個有關(guān)系,為什么要設(shè)置?!”
      且 explain 執(zhí)行結(jié)果驗證了剛才的推斷:
      “cannot allocate because allocation is not permitted to any of the nodes”。

      2.5 第五:為什么設(shè)置?在哪里設(shè)置的?如何設(shè)置的?

      • 為什么設(shè)置?

      客戶反饋:“我看書上寫的只要有節(jié)點離開集群就會觸發(fā) rebalance。所以就設(shè)置了這個參數(shù)。”
      • 在哪里設(shè)置?
      經(jīng)反復(fù)確認(rèn),是集群層面的設(shè)置,非索引層面。
      起初認(rèn)為是索引層面的設(shè)置,我單獨驗證后不對,才想起來是集群層面的配置。
      • 如何設(shè)置的?
      這個之前的博文:Elasticsearch集群管理之1——如何高效的添加、刪除節(jié)點?中講過,我自己也在實戰(zhàn)環(huán)境中用過。
      命令行如下:
      PUT _cluster/settings
      {
        "transient" : {
          "cluster.routing.allocation.exclude._ip" : "10.0.0.1"
        }
      }

      2.6 取消這個設(shè)置就會恢復(fù)新節(jié)點的分片分配。

      我推薦的命令行如下:
      PUT _cluster/settings
      {
        "transient" : {
          "cluster.routing.allocation.exclude._ip" : ""
        }
      }
      經(jīng)客戶驗證也是 ok 的。

      3、我的幾點觀察和思考

      3.1 關(guān)于 head 插件 和 Kibana dev tools 的選型

      head 插件在集群節(jié)點、分片可視化方面做得的確不錯。
      如果在 1.X版本、2.X版本,由于當(dāng)時 Kibana 功能還不盡完善,甚至還沒有被 Elastic 官方收購,選型 head 插件做問題排查無可厚非。
      但是,5.X、6.X、7.X 后,Kibana 已經(jīng)有了突飛猛進(jìn)的發(fā)展,無論是 dev tools 的命令行提示功能,還是多維度的可視化監(jiān)控。
      head 插件做命令行的調(diào)試的確稍顯笨拙,就類似早期的C、C++編譯器 VC6.0一樣。
      而 Kibana dev tools 類似 VS2020+版本或者開源的 Codeblocks,用過你會發(fā)現(xiàn)“如絲般順滑”般的效率提升。

      3.2 關(guān)于優(yōu)化參數(shù)配置

      我自己在管理集群、維護(hù)集群的階段,也是看到網(wǎng)上有好的優(yōu)化參數(shù)、新版本新特性參數(shù)都會在集群中試驗,對比看看有沒有功能提升或者性能改善。
      但,一定得了解參數(shù)的確切含義、函數(shù)的用途、加與不加對集群或分片等層面的影響;明確相關(guān)參數(shù)的應(yīng)用背景,貼合自己應(yīng)用場景的經(jīng)驗證 ok 才可以使用。
      且,一定得先小范圍測試環(huán)境沒有問題,甚至連續(xù)3天+沒有問題后,才能有的放矢的應(yīng)用到生成環(huán)境。
      比如:線程池隊列的參數(shù)優(yōu)化,和 CPU 核數(shù)相關(guān),不見得是放之四海而皆準(zhǔn)的“萬能參數(shù)”。

      3.3 關(guān)于設(shè)置,在哪個層面設(shè)置?

      從全局角度考慮,Elasticsearch 設(shè)置分為:集群層面設(shè)置、索引層面設(shè)置等。
      而集群層面設(shè)置又細(xì)分為:
      1. 臨時設(shè)置
      2. 永久設(shè)置
      3. 配置文件設(shè)置
      索引層面設(shè)置又細(xì)分為:
      1. 靜態(tài)設(shè)置
        1. 在索引創(chuàng)建階段或者關(guān)閉索引階段設(shè)置。
      2. 動態(tài)設(shè)置
        1. 通過 update-index-settings 方式隨時更新設(shè)置。
      如上圖所示,不同的設(shè)置含義不同。
      需要設(shè)置前仔細(xì)核對各個參數(shù)的含義以及各個參數(shù)的設(shè)置方式。

      3.4 設(shè)置生效容易,使得設(shè)置失效一樣得會

      參數(shù)生效、參數(shù)失效是一對“好兄弟”,兩個都得靈活掌握。
      設(shè)置完參數(shù)、參數(shù)生效的同時要考慮:如何回退?如何恢復(fù)到?jīng)]有加參數(shù)的原始狀態(tài)。
      比如:前面設(shè)置的   "cluster.routing.allocation.exclude._ip" : "",不加具體的 IP 就是回退、不設(shè)置的含義。
      官方對于設(shè)置回退有沒有說明呢?
      有的,官方明確說明如下:
      You can reset persistent or transient settings by assigning a null value.

      也就是我們上面的命令行操作更嚴(yán)謹(jǐn)?shù)膶懛☉?yīng)該是:

      PUT _cluster/settings
      {
        "transient" : {
          "cluster.routing.allocation.exclude._ip" : null
        }
      }

      如果有標(biāo)準(zhǔn)寫法,上面的這個才是最正宗、最標(biāo)準(zhǔn)的寫法。

      4、小結(jié)

      事后觀察,只通過后面的第四、五、六步,就能定位問題的根本原因。

      但,畢竟不在現(xiàn)場,多去了解問題的來龍去脈,更有助于輔助解決問題。

      復(fù)盤總結(jié)一下,希望對大家也有所幫助。

      參考

      • 集群層面設(shè)置
        • https://www./guide/en/elasticsearch/reference/7.14//cluster-update-settings.html
      • 索引層面設(shè)置
        • https://www./guide/en/elasticsearch/reference/7.x/index-modules.html

      推薦

      1、Elasticsearch 7.X 進(jìn)階實戰(zhàn)私訓(xùn)課
      2、如何系統(tǒng)的學(xué)習(xí) Elasticsearch ?
      3、全網(wǎng)首發(fā)!《 Elasticsearch 最少必要知識教程 V1.0 》低調(diào)發(fā)布
      4、兩個 Elasticsearch 線上實戰(zhàn)問題及解讀
      5、且慢!聽說你線上環(huán)境準(zhǔn)備選型 Elasticsearch SQL 了?
      短時間快習(xí)得多干貨!
      中國50%+Elastic認(rèn)證工程師出自于此!
      比同事搶先一步學(xué)習(xí)進(jìn)階干貨!

        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多