为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:v3.0.5
- 【问题描述】:1:通过ansible部署,环境为单机多TiKV实例,修改tikv.yml文件后,使用ansible-playbook rolling_update.yml --tags=tikv1-1 对tikv服务进行滚动升级,发现tikv,toml文件参数为生效,问题该如何排查? 2:因部署的单机多TiKV实例,如果一次性滚动升级所以tikv服务,使参数生效?
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
对所有 tikv 操作 ansible-playbook rolling_update.yml --tags=tikv
对单个 tikv 操作 ansible-playbook rolling_update.yml -l tikv1-1
执行ansible-playbook rolling_update.yml --tags=tikv所有tikv升级出现如下错误:
TASK [check_config_tikv : Load customized config: tidb-ansible/conf/tikv.yml] ************************************************************************************************************************************
fatal: [TiKV1-1]: FAILED! => {“ansible_facts”: {“tikv_conf_custom_check”: {}}, “ansible_included_var_files”: , “changed”: false, “message”: "Syntax Error while loading YAML.
did not find expected key
The error appears to have been in ‘/home/tidb/tidb-ansible/conf/tikv.yml’: line 288, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
\
defaultcf:
^ here
"}
执行错误参数行如图:
参数配置参考https://github.com/pingcap/docs-cn/blob/master/v2.0/op-guide/tune-tikv.md,求指导,谢谢!
YAML 配置文件内容格式有误,检查下是否参数缩进或语法问题。
按照这个https://pingcap.com/docs-cn/stable/reference/performance/tune-tikv/文档开启参数后才出现这个问题,关闭后才正常,是不是这个配置不适合3.x?
应该是格式问题导致的,方便的话上传一下报错的配置文件模板。
tikv.yml (22.8 KB) 根据报错我注释了一些参数,这个yml是正常了了。https://pingcap.com/docs-cn/stable/reference/performance/tune-tikv/文档中不支持的参数有对 [rocksdb], [rocksdb.defaultcf]设置无法开启,麻烦看看,谢谢!
问题2:修改tikv参数只要为了解决OOM问题。通过syncer工具进行增量同步(没有查询),当数据量多些的情况tikv机器就会出现OOM,错误如下:
Feb 7 16:24:18 tidb1 kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/system.slice/tikv-20171.service,task=tikv-server,pid=32386,uid=1002
Feb 7 16:24:18 tidb1 kernel: Out of memory: Killed process 32386 (tikv-server) total-vm:13449716kB, anon-rss:9918720kB, file-rss:0kB, shmem-rss:0kB
Feb 7 16:24:18 tidb1 kernel: oom_reaper: reaped process 32386 (tikv-server), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
Feb 7 16:24:18 tidb1 systemd: tikv-20171.service: main process exited, code=killed, status=9/KILL
Feb 7 16:24:18 tidb1 systemd: Unit tikv-20171.service entered failed state.
Feb 7 16:24:18 tidb1 systemd: tikv-20171.service failed.
Feb 7 16:24:34 tidb1 systemd: tikv-20171.service holdoff time over, scheduling restart.
Feb 7 16:24:34 tidb1 systemd: Stopped tikv-20171 service.
Feb 7 16:24:34 tidb1 systemd: Started tikv-20171 service.
Feb 7 16:24:34 tidb1 run_tikv.sh: sync …
Feb 7 16:24:34 tidb1 run_tikv.sh: real#0110m0.010s
Feb 7 16:24:34 tidb1 run_tikv.sh: user#0110m0.001s
Feb 7 16:24:34 tidb1 run_tikv.sh: sys#0110m0.001s
Feb 7 16:24:34 tidb1 run_tikv.sh: ok
有什么好的优化建议吗?根据官方的tikv性能优化文档进行了参数修改还是没有效果。
机器的物理内存多大,参数模板中 block cache 的大小设置是 24G,默认是内存的 45%。
物理内存48G,一台机器分别有两个tikv实例。
两个 tikv 实例需要将 block cache 的默认大小除以 2,约设置为 12G;部署文档相关说明
https://pingcap.com/docs-cn/stable/how-to/deploy/orchestrated/ansible/#单机多-tikv-实例集群拓扑
开始设置的就是12G,也是OOM,才改成24G,发现还是OOM。
是的 还部署了其他服务,但是没有跑程序。从top上看是tikv占了内存的30%左右。恩,我调小点试试。https://pingcap.com/docs-cn/stable/reference/performance/tune-tikv/文档中不支持的参数有对 [rocksdb], [rocksdb.defaultcf]设置无法开启,麻烦看看.谢谢了。
测了下 tune-tikv 文档中 rocksdb 和 rocksdb.defaultcf 下的参数,兼容性没什么问题,把相关参数的注释去掉就可以了
rocksdb:
max-manifest-file-size: "20MB"
defaultcf:
compression-per-level: ["no", "no", "lz4", "lz4", "lz4", "zstd", "zstd"]
block-size: "64KB"
level0-slowdown-writes-trigger: 20
level0-stop-writes-trigger: 36
write-buffer-size: "128MB"
max-write-buffer-number: 5
max-bytes-for-level-base: "512MB"
target-file-size-base: "32MB"
TIKV参数修改无法生效是因为参数缩进问题导致,已解决,谢谢。
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。