如何緩解indexshard過大造成的影響

這篇文章主要講解了“如何緩解index shard過大造成的影響”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何緩解index shard過大造成的影響”吧!

創(chuàng)新互聯(lián)建站主要從事成都網站設計、成都網站建設、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務寶山,十年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220

下面這些都是屬于應急操作,屬于快速止血止痛,部分操作屬高危,一定要謹慎使用。

調整OSD的幾個op超時參數

下面的幾個參數只是用例,具體根據各位線上情況進行調整,但是不宜過大。

  osd_op_thread_timeout = 90 #default is 15
  osd_op_thread_suicide_timeout = 300 #default is 150

  filestore_op_thread_timeout = 180 #default is 60
  filestore_op_thread_suicide_timeout = 300 #default is 180

  osd_scrub_thread_suicide_timeout = 300 #如果出現(xiàn)scrub導致的op超時可以適當增加這個

壓縮OSD的OMAP目錄

在可以停OSD的情況下,可以對OSD進行compact操作,推薦在ceph 0.94.6以上版本,低于這個版本有bug。

1. 開啟noout操作
ceph osd set noout

2. 停OSD服務
systemctl stop ceph-osd@<osd-id> 或者
/etc/init.d/ceph stop osd.<osd-id>

3. 檢查osd進程
ps -ef| grep "id <osd_id>"

4. 在ceph.conf中對應的[osd.id]加上下面配置
leveldb_compact_on_mount = true

5. 啟動osd服務
systemctl start ceph-osd@<osd-id> 或
/etc/init.d/ceph start osd.<osd-id>

6. 確認進程運行中
ps -ef| grep "id <osd-id>"

7. 使用ceph -s命令觀察結果,最好同時使用tailf命令去觀察對應的OSD日志.
等所有pg處于active+clean之后再繼續(xù)下面的操作

8. 確認compact完成以后的omap大小:
du -sh /var/lib/ceph/osd/ceph-$id/current/omap

9. 刪除osd中臨時添加的leveldb_compact_on_mount配置

10. 取消noout操作(視情況而定,建議線上還是保留noout):
ceph osd unset noout

對bucket做reshard操作

對bucket做reshard操作,可以實現(xiàn)調整bucket的shard數量,實現(xiàn)index數據的重新分布。
僅支持ceph 0.94.10以上版本,需要停bucket讀寫,有數據丟失風險,慎重使用,出了問題本人概不負責。

注意下面的操作一定要確保對應的bucket相關的操作都已經全部停止,之后使用下面命令備份bucket的index

radosgw-admin bi list --bucket=<bucket_name> > <bucket_name>.list.backup

通過下面的命令恢復數據
radosgw-admin bi put --bucket=<bucket_name> < <bucket_name>.list.backup

查看bucket的index id

root@demo:/home/user# radosgw-admin bucket stats --bucket=bucket-maillist
{
    "bucket": "bucket-maillist",
    "pool": "default.rgw.buckets.data",
    "index_pool": "default.rgw.buckets.index",
    "id": "0a6967a5-2c76-427a-99c6-8a788ca25034.54133.1", #注意這個id
    "marker": "0a6967a5-2c76-427a-99c6-8a788ca25034.54133.1",
    "owner": "user",
    "ver": "0#1,1#1",
    "master_ver": "0#0,1#0",
    "mtime": "2017-08-23 13:42:59.007081",
    "max_marker": "0#,1#",
    "usage": {},
    "bucket_quota": {
        "enabled": false,
        "max_size_kb": -1,
        "max_objects": -1
    }
}


Reshard對應bucket的index操作如下:

使用命令將"bucket-maillist"的shard調整為4,注意命令會輸出osd和new兩個bucket的instance id
root@demo:/home/user# radosgw-admin bucket reshard --bucket="bucket-maillist" --num-shards=4
*** NOTICE: operation will not remove old bucket index objects ***
***         these will need to be removed manually             ***
old bucket instance id: 0a6967a5-2c76-427a-99c6-8a788ca25034.54133.1
new bucket instance id: 0a6967a5-2c76-427a-99c6-8a788ca25034.54147.1
total entries: 3


之后使用下面的命令刪除舊的instance id

root@demo:/home/user# radosgw-admin bi purge --bucket="bucket-maillist" --bucket-id=0a6967a5-2c76-427a-99c6-8a788ca25034.54133.1

查看最終結果
root@demo:/home/user#  radosgw-admin bucket stats --bucket=bucket-maillist
{
    "bucket": "bucket-maillist",
    "pool": "default.rgw.buckets.data",
    "index_pool": "default.rgw.buckets.index",
    "id": "0a6967a5-2c76-427a-99c6-8a788ca25034.54147.1", #id已經變更
    "marker": "0a6967a5-2c76-427a-99c6-8a788ca25034.54133.1",
    "owner": "user",
    "ver": "0#2,1#1,2#1,3#2",
    "master_ver": "0#0,1#0,2#0,3#0",
    "mtime": "2017-08-23 14:02:19.961205",
    "max_marker": "0#,1#,2#,3#",
    "usage": {
        "rgw.main": {
            "size_kb": 50,
            "size_kb_actual": 60,
            "num_objects": 3
        }
    },
    "bucket_quota": {
        "enabled": false,
        "max_size_kb": -1,
        "max_objects": -1
    }
}

關閉pool的scrub和deep-scrub

Jewel以上版本可用

使用下面的命令開啟pool的noscrub和deep-scrub
# ceph osd pool set <pool-name> noscrub 1
# ceph osd pool set <pool-name> nodeep-scrub 1

使用下面命令確認配置
# ceph osd dump | grep <pool-name>
pool 11 'pool-name' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 8 pgp_num 8 last_change 800 flags hashpspool,noscrub,nodeep-scrub stripe_width 0

取消pool的noscrub和deep-scrub設置
# ceph osd pool set <pool-name> noscrub 0
# ceph osd pool set <pool-name> nodeep-scrub 0

感謝各位的閱讀,以上就是“如何緩解index shard過大造成的影響”的內容了,經過本文的學習后,相信大家對如何緩解index shard過大造成的影響這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!

名稱欄目:如何緩解indexshard過大造成的影響
網頁路徑:http://bm7419.com/article2/igojic.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站建設、靜態(tài)網站、自適應網站、面包屑導航、云服務器、做網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站建設網站維護公司