日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

如何对 Rocksdb以及类似存储引擎社区 提出 有效的性能问题?

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何对 Rocksdb以及类似存储引擎社区 提出 有效的性能问题? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

性能 是rocksdb的優點,活躍的社區十分歡迎大家對各自使用rocksdb 過程中性能相關的疑惑點進行提問。提問的時候如果能夠提供更多,更詳細的信息 是可以增加快速得到恢復回復的概率。當然,性能是一個非常廣泛且有巨量影響因素的話題,單純從一個簡單的描述是無法進行更進一步的性能問題討論的。

社區從兩方面給出了如下 性能相關issue的建議(當然有經驗的同學這一些描述即可不用在意),這一些建議也是我們存儲產品對內,對外展示性能的一個模版,個人覺得還是比較受用。

1. 問題描述

  1. 哪一種operation 性能較差?Get(), Put(), or Iterator ?

  2. 如果是其中一種workload,那么這個場景下的哪一項指標(qps , p50,p99,p9999…) 不滿足你的預期?你的預期的指標是多少?

    • 吞吐: 如果是吞吐的問題,你使用的壓測線程數是多少
    • 平均延時問題
    • 長尾延時問題
  3. 你使用的是哪一種存儲介質?

    • SSD
    • HDD
    • RAID-…(0,1,10…)
    • ramfs/tmpfs
    • HDFS 或者 其他的遠端存儲

2. DB配置 和 DB狀態 情況

  1. rocksdb啟動情況:rocksdb實例的數量,多個還是單db? 每一個DB的大小?每一個DB實例使用了多少CF?

  2. 使用的rocksdb 版本

  3. 編譯選項?如果使用的是make,可以直接將 make之后的 make_config.mk分享出來。如果無法提供全量的make_config.mk信息,則按照如下問題做一個回復:

    a. 哪一個平臺 ? Linux, Windows, OS X, etc…/
    b. 使用的是哪一種分配器? jemalloc, tcmalloc, glibc malloc …?如果是 jemalloc, 可以在make_config.mk中看到JEMALLOC=1的選項。如果是tcmalloc,可以在PLATFORM_LDFLAGS 中找到 -ltcmalloc的編譯選項。


    c. 是否打開了 SSE指令支持的crc校驗?如果有的話,這條信息會在rocksdb的LOG中打印,類似Fast CRC32 supported: 1
    d. 是否支持 并打開了linux的 預分配選項fallocate
    可以通過查看PLATFORM_CXXFLAGS或者 PLATFORM_CCFLAGS選項 中是否包含DROCKSDB_FALLOCATE_PRESENT配置

  4. 你使用的rocksdb 配置。如果能夠提供rocksdb的options file是最好的,一般這個文件會在你運行rocksdb相關應用的db目錄中,以OPTIONS-xxx命名。或者 也能夠將rocksdb LOG文件中的頭部 拷貝出來。

    如果無法提供全量的配置文件,可以回復以下的關鍵配置即可(未設置,即是默認的配置):

    a. write_buffer_size – memtable的大小,默認64M
    b. level0_file_num_compaction_trigger – L0觸發compaction的sst文件個數,默認4個
    c. target_file_size_base – sst文件大小,默認64M
    d. compression – 壓縮算法,默認snappy
    e. compaction_style – compaction策略,默認 leveled
    f. 如果配置了leveled compaction 策略:

    • max_bytes_for_level_base – L1 的最大容量,默認256M
    • max_bytes_for_level_multiplier – 每一層大小的倍數,比如size(Ln) =size(Ln-1) * max_bytes_for_level_multiplier, 默認是10
    • level_compaction_synamic_level_bytes 是否開啟動態調整每一層大小的配置

    g. 如果配置了 universal compaction策略:

    • size_ratio
    • max_size_amplification_percent

    h. block_cache_size block_cache 的大小
    i. Bloomfilter 相關的配置
    j. 其他并不 通用的配置,如果你更改了,也請貼上來。

  5. LSM-tree 結構情況
    一般可以通過應用程序中加入代碼, DB::GetProperty(“rocksdb.stats”)。
    另一種方式 是可以通過命令ldb --manifest_dump指定db目錄下的MANIFEST-xxx文件

  6. 當發生性能問題時 磁盤的IO情況。這里可以根據個人習慣進行io情況的統計, 一般使用iostat -xdt 1

  7. workload情況

    a. key + value size
    b. 讀/寫 百分比
    c. 如何刪除數據
    d. 。。。

  8. 如果方便的話,分享一下對應的LOG文件,LOG文件一般在db目錄之下,以LOG或者 LOG.old.xxx

  9. 硬件指標。如果沒有辦法給出精確的硬件數據,那么給出基本的內存 以及 CPU核數 的使用情況會比較方便,也很有用。

  10. 如果能夠提供 復現問題的方法/代碼 以及復現步驟,對社區精確解決性能問題會很有幫助。

總結

以上是生活随笔為你收集整理的如何对 Rocksdb以及类似存储引擎社区 提出 有效的性能问题?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。