-
Notifications
You must be signed in to change notification settings - Fork 42
xcache配置项说明
Daoguang Dong edited this page Apr 25, 2020
·
3 revisions
xcache配置和pika官方配置基本一致,新增配置会标记说明。
# pika 端口
port : 9221
# pika是多线程的, 该参数能够配置pika的线程数量, 不建议配置值超过部署服务器的CPU核心数量
thread-num : 1
# sync 主从同步时候从库执行主库传递过来命令的线程数量
sync-thread-num : 6
# sync 处理线程的任务队列大小, 不建议修改
sync-buffer-size : 10
# Pika日志目录, 用于存放INFO, WARNING, ERROR日志以及用于同步的binlog(write2fine)文件
log-path : ./log/
# Pika日志级别,只支持info和error
loglevel : info
# Pika日志大小,默认1800MB
max-log-size :
# Pika数据目录
db-path : ./db/
# Pika 底层单个rocksdb单个memtable的大小, 设置越大写入性能越好但会在buffer刷盘时带来更大的IO负载, 请依据使用场景合理配置
[RocksDb-Tuning-Guide](https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide)
write-buffer-size : 268435456
# Pika 底层memtable数量,默认最少2个
max-write-buffer-number : 2
# Pika 的连接超时时间配置, 单位为秒, 当连接无请求时(进入sleep状态)开始从配置时间倒计时, 当倒计时为0时pika将强行
# 断开该连接, 可以通过合理配置该参数避免可能出现的pika连接数用尽问题, 该参数默认值为60
timeout : 60
# [新增] 采集info信息周期,info信息改为异步获取,避免同步获取时有可能发生阻塞
fresh-info-interval : 60
# 密码管理员密码, 默认为空, 如果该参数与下方的userpass参数相同(包括同时为空), 则userpass参数将自动失效, 所有用户均为
# 管理员身份不受userblacklist参数的限制
requirepass : password
# 同步验证密码, 用于slave(从库)连接master(主库)请求同步时进行验证, 该参数需要与master(主库)的requirepass一致
masterauth :
# 用户密码, 默认为空, 如果该参数与上方的userpass参数相同(包括同时为空), 则本参数将自动失效, 所有用户均为管理员身份不
# 受userblacklist参数的限制
userpass : userpass
# 指令黑名单, 能够限制通过userpass登录的用户, 这些用户将不能使用黑名单中的指令, 指令之间使用","隔开, 默认为空
# 建议将高风险命令配置在该参数中
userblacklist : FLUSHALL, SHUTDOWN, KEYS, CONFIG
# Pika的dump文件名称前缀, bgsave后生成的文件将以该前缀命名
dump-prefix : backup-
# 守护进程模式 [yes | no]
daemonize : yes
# slotmigrate [yes | no]
#slotmigrate : no
# [新增] 数据迁移线程数
slotmigrate-thread-num : 8
# [新增] 单个线程一次迁移key数量
thread-migrate-keys-num : 64
# Pika dump目录设置, bgsave后生成的文件将存放在该目录中
dump-path : /data1/pika9001/dump/
# dump目录过期时间, 单位为天, 默认为0即永不过期
dump-expire: 0
# pidfile Path pid文件目录
pidfile : /data1/pika9001/pid/9001.pid
# pika最大连接数配置参数
maxclients : 20000
# rocks-db的sst文件体积, sst文件是层级的, 文件越小, 速度越快, 合并代价越低, 但文件数量就会超多, 而文件越大, 速度相对变慢, 合并代价大, 但文件数量会很少, 默认是 20M
target-file-size-base : 20971520
# rocks-db L1层的最大容量,默认256M
max-bytes-for-level-base : 268435456
# binlog(write2file)文件保留时间, 7天, 最小为1, 超过7天的文件会被自动清理
expire-logs-days : 7
# binlog(write2file)文件最大数量, 200个, 最小为10, 超过200个就开始自动清理, 始终保留200个
expire-logs-nums : 200
# [新增] 异步写binlog任务队列大小
binlog-writer-queue-size : 1000
# [新增] 同步还是异步写binlog,[async | sync]
binlog-writer-method : async
# [新增] 异步写binlog线程数
binlog-writer-num : 4
# root用户连接保证数量:2个, 即时Max Connection用完, 该参数也能确保本地(127.0.0.1)有2个连接可以同来登陆pika
root-connection-num : 2
# 慢日志记录时间, 单位为微秒, pika的慢日志记录在pika-ERROR.log中, pika没有类似redis slow log的慢日志提取api
slowlog-log-slower-than : 10000
# 最多保存的slowlog数量
slowlog-max-len : 12800
# slave是否是只读状态(yes/no, 1/0)
# slave-read-only : 0
# Pika db 同步路径配置参数
db-sync-path : ./dbsync/
# 该参数能够控制全量同步时的传输速度, 合理配置该参数能够避免网卡被用尽, 该参数范围为1~125, 意为:1mb~125mb,当该参数
# 被配置为小于0或大于125时, 该参数会被自动配置为125
db-sync-speed : -1
# 指定网卡
# network-interface : eth1
# 同步参数配置, 适用于从库节点(slave), 该参数格式为ip:port, 例如192.168.1.2:6666, 启动后该示例会自动向192.168.1.2的
# 6666端口发送同步请求
# slaveof : master-ip:master-port
# 自动全量compact, 通过配置的参数每天定时触发一次自动全量compact, 特别适合存在多数据结构大量过期、删除、key名称复用的场景
# 参数格式为:"启动时间(小时)-结束时间(小时)/磁盘空余空间百分比", 例如你需要配置一个每天在凌晨3点~4点之间自动compact的任务
# 同时该任务仅仅在磁盘空余空间不低于30%的时候执行, 那么应配置为:03-04/30, 该参数默认为空
compact-cron :
# 自动全量compact, 该参与与compact-cron的区别为, compact-cron每天仅在指定时间段执行, 而compact-interval则以配置时间为周期
# 循环执行, 例如你需要配置一个每4小时执行一次的自动compact任务, 同时该任务仅仅在磁盘空余空间不低于30%的时候执行, 那么该参
# 数应配置为:4/30, 该参数默认为空
compact-interval :
###################
# Threadpool Settings
# 线程池设置
###################
# [新增] 是否使用线程池模型,no表示worker线程同步执行命令,yes表示命令丢给线程池异步执行。
# 默认使用线程池,可以避免单个worker线程上的多个命令之间相互阻塞
use-thread-pool : yes
# [新增] 快命令线程池大小,默认16。测试线程数设置超过16时,对QPS的提升并不明显。
fast-thread-pool-size : 16
# [新增] 慢命令线程池大小
slow-thread-pool-size : 16
# [新增] 慢命令列表,慢命令列表中的命令都会丢到慢线程池执行,其它命令都会丢到快线程池执行
slow-cmd-list : hgetall,zadd
###################
# Cache Settings
# 缓存设置
###################
# [新增] 底层缓存db个数,建议设置和线程池数量一致
cache-num : 16
# [新增] 缓存模式,0表示不使用缓存,1表示读缓存
cache-model : 0
# [新增] 缓存最大容量, 单位bytes
cache-maxmemory : 10737418240
# [新增] 缓存淘汰策略,和redis的淘汰策略一致
# 0: volatile-lru -> Evict using approximated LRU among the keys with an expire set.
# 1: allkeys-lru -> Evict any key using approximated LRU.
# 2: volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
# 3: allkeys-lfu -> Evict any key using approximated LFU.
# 4: volatile-random -> Remove a random key among the ones with an expire set.
# 5: allkeys-random -> Remove a random key, any key.
# 6: volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
# 7: noeviction -> Don't evict anything, just return an error on write operations.
cache-maxmemory-policy : 1
# [新增] 缓存淘汰时,一次采样key的数量
cache-maxmemory-samples: 5
# [新增] lfu衰减因子,该参数不需要暴露,后续会删除
cache-lfu-decay-time: 1
########################
# Zset auto del setting
# zset数据类型自动删除配置
########################
# [新增] 当zset中元素个数大于该值时,触发自动删除操作。0表示关闭自动删除功能
zset-auto-del-threshold : 0
# [新增] 删除方向,0表示正向删除,-1表示反向删除
zset-auto-del-direction : 0
# [新增] 一次删除多少个元素。举个例子,zset-auto-del-threshold设置为100,zset-auto-del-num设置为30,
# 表示zset中元素到达100个时,一次性删除30个元素。
zset-auto-del-num : 1
# [新增] 执行自动删除任务的时间段,比如设置成02-05,表示只在每天的凌晨2点到5点执行删除任务,用户可以将
# 删除任务设置在低流量的时间段。
zset-auto-del-cron :
# [新增] 多久检测一次是否需要执行周期任务。比如zset-auto-del-interval设置成24,表示每隔24小时检测一次
# 是否需要执行自动删除任务。
zset-auto-del-interval : 0
# [新增] 删除速度因子。每删除一个key中的元素,会休眠一段时间,目的是避免磁盘IO过高,影响线上业务。
# 休眠时间 = 删除元素耗时 * zset-auto-del-cron-speed-factor。默认为0.1,可不用修改。 [0,1000]
zset-auto-del-cron-speed-factor : 0.1
# [新增] 单次批量检测key的数量。默认10000,可不用修改。
zset-auto-del-scan-round-num : 10000
###################
#Critical Settings#
# 危险参数 #
###################
# 是否写binlog
write-binlog : yes
# write2file文件体积, 默认为100MB, 一旦启动不可修改, limited in [1K, 2G]
binlog-file-size : 104857600
# 压缩方式[snappy, zlib, lz4, zstd]默认为snappy, 一旦启动不可修改
# 官方发布的二进制提供默认的snaapy的静态连接。如果需要其他压缩方式请自行下载相应静态库并进行编译。
compression : snappy
# 指定后台flush线程数量, 默认为1, 范围为[1, 4]
max-background-flushes : 1
# 指定后台压缩线程数量, 默认为1, 范围为[1, 4]
max-background-compactions : 1
# DB可以使用的打开文件的数量, 默认为5000
max-cache-files : 5000
# pika引擎中层级因子, 用于控制每个层级与上一层级总容量的倍数关系, 默认为10(倍), 允许调整为5(倍)
max-bytes-for-level-multiplier : 10
# 是否关闭rocksdb的自动compact
disable-auto-compactions : no
# rocksdb L0层产生多少个文件触发compact,默认4
level0-file-num-compaction-trigger : 4
# rocksdb L0层产生多少个文件触发write stall
level0-slowdown-writes-trigger : 20
# rocksdb L0层产生多少个文件触发write stop
level0-stop-writes-trigger : 32
# [新增] kv分离阈值大小,大于该值的value会存到blob文件中,小于该值的value存到sst文件中。目前只有string
# 类型支持kv分离存储;建议value值超过512字节时,做kv分离存储。
min-blob-size : 65536
# [新增] 限速器大小,限制flush,compact,gc同时每秒写入磁盘数据量大小,避免突发大量IO。当写入量较大时,
# 如果触发了rocksdb的写保护,可以将该值调大。默认50M
rate-bytes-per-sec : 52428800
# [新增] rocksdb是否写wal文件,no表示写wal文件,yes表示不写wal文件。建议不要关闭写wal
disable-wal : no
# [新增] rocksdb读写文件时是否使用direct IO
use-direct-reads : no
# [新增] rocksdb flush和compact时是否使用direct IO
use-direct-io-for-flush-and-compaction : no
# [新增] 定期检测系统剩余free内存周期,默认60s
check-free-mem-interval : 60
# [新增] 如果操作系统剩余free内存小于该值时,会触发全量回收操作系统cache内存,0表示不回收内存。
# 在2.6.x内核时,发现当系统free内存较小时,写命令在申请内存时经常产生几百毫秒延时抖动,所以需
# 要定期释放cache内存,保证有足够的free内存。3.10.x以上版本的内核不存在该问题,所以可以不用设置
# 该参数,后期会删除该参数。
min-system-free-mem : 0
# [新增] 设置操作系统min-free-kbytes参数,不用设置该参数。
optimize-min-free-kbytes : no
# [新增] blob文件gc时,一次采样的文件数据总量,默认1G
max-gc-batch-size : 1073741824
# [新增] 当blob文件的垃圾数据比例超过该值时,会对该blob文件进行gc。50表示50%
blob-file-discardable-ratio : 50
# [新增] 对所有blob文件轮询采样周期,604800(7天),建议不要修改该值
gc-sample-cycle : 604800
# [新增] gc任务队列大小,如果需要加快gc,可以调大该值。不建议设置太大,gc频繁可能会影响flush和compact速度。
max-gc-queue-size : 2