zoukankan      html  css  js  c++  java
  • openstack trove redis配置项

    trove在mitaka版本更新了一个功能,configuration

    具体如下:

    trove help |grep configuration
        configuration-attach          Attaches a configuration group to an
        configuration-create          Creates a configuration group.
        configuration-default         Shows the default configuration of an
        configuration-delete          Deletes a configuration group.
        configuration-detach          Detaches a configuration group from an
        configuration-instances       Lists all instances associated with a
                                      configuration group.
        configuration-list            Lists all configuration groups.
        configuration-parameter-list  Lists available parameters for a
                                      configuration group.
        configuration-parameter-show  Shows details of a configuration parameter.
        configuration-patch           Patches a configuration group.
        configuration-show            Shows details of a configuration group.
        configuration-update          Updates a configuration group.
                                      configuration, or replica source.

    这个功能使得我们可以在实例或集群(部分集群支持)运行的时候,动态的修改数据库(datastore)的配置参数,同时可以批量的修改实例或集群(部分集群支持)。

    以下是trove中收集到的有关redis的参数,从网上搜集了关于这些参数的解释,这可以让我们更好的使用configuration的功能。

    tcp-backlog 
    客户端连接队列值,这个值是socket里面listen函数的参数。如果服务器caps很高,需要把这个参数改大些。
    
    timeout 
    客户端空闲多少s后踢掉,0禁止
    
    tcp-keepalive 
    检测挂掉的连接,单位s,0禁止
    
    loglevel 
    日志的等级,debug,verbose,notice,warning
    
    databases 
    redis中有多少个数据库,默认即可
    
    save
    将redis内存数据序列化到磁盘的时间和频率
    900s有1个key改变就会序列化,其他的读者可以自己看下
    
    stop-writes-on-bgsave-error
    序列化的时候是否停止写操作
     
    rdbcompression
    序列化的数据是否压缩
    
    rdbchecksum
    序列化的数据是否校验其完整性
    
    slave-serve-stale-data
    当slave丢失与master的连接时,或者slave仍然在于master进行数据同步时(还没有与master保 持一致),#slave可以有两种方式来响应客户端请求:
    1) 如果 slave-serve-stale-data 设置成 'yes' (the default) slave会仍然响应客户端请求,此时可能会有问题。
    2) 如果 slave-serve-stale data设置成  'no'  slave会返回"SYNC with master in progress"这样的错误信息。 但 INFO 和SLAVEOF命令除外。
    
    slave-read-only yes
    slave是否为"只读"
    
    repl-diskless-sync
    无硬盘复制功能可以通过来配置
    repl-diskless-sync-delay用来配置当收到第一个请求时,等待多个slave一起来请求之间的间隔时间。
    repl-ping-slave-period/repl-timeout
    slave会每隔repl-ping-slave-period(默认10秒)ping一次master,如果超过repl-timeout(默认 60秒)都没有收到响应,就会认为Master挂了。如果Master明明没挂但被阻塞住了也会报这个错。可以适当调大repl-timeout
    
    repl-disable-tcp-nodelay
    在slave和master同步后(发送psync/sync),后续的同步是否设置成TCP_NODELAY
    假如设置成yes,则redis会合并小的TCP包从而节省带宽,但会增加同步延迟(40ms),造成master与slave数据不一致
    假如设置成no,则redis master会立即发送同步数据,没有延迟
    
    repl-backlog-size
    设置备份的工作储备大小。工作储备是一个缓冲区,当从站断开一段时间的情况时,它替从站接收存储数据,因此当从站重连时,通常不需要完全备份,只需要一个部分同步就可以,即把从站断开时错过的一部分数据接收。 
    工作储备越大,从站可以断开并稍后执行部分同步的断开时间就越长。 
    只要有一个从站连接,就会立刻分配一个工作储备。
    
    repl-backlog-ttl
    主站有一段时间没有与从站连接,对应的工作储备就会自动释放。接下来这个选项用于配置释放前等待的秒数,秒数从断开的那一刻开始计算。 
    值为0表示不释放。
    
    slave-priority 
    适用Sentinel模块(unstable,M-S集群管理和监控),需要额外的配置文件支持。slave的权重值,默认100.当master失效后,Sentinel将会从slave列表中找到权重值最低(>0)的slave,并提升为master。如果权重值为0,表示此slave为"观察者",不参与master选举
    
    min-slaves-to-write
    设置redis的min-slaves-to-write参数为1,将保证了至少有一个slave工作良好情况下才允许写入
    
    min-slaves-max-lag
    连接最大延迟
    
    requirepass 
    连接密码
    
    maxclients
    
    设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息
    
    maxmemory
    redis的maxmemory参数用于控制redis可使用的最大内存容量。如果超过maxmemory的值,就会动用淘汰策略来处理expaire字典中的键。
    
    maxmemory-policy 
    内存不足"时,数据清除策略,默认为"volatile-lru"
    
    maxmemory-samples 
    Redis默认的灰选择3个样本进行检测,你可以通过maxmemory-samples进行设置
    
    Appendonly
    是一种能够提供非常好的持久化的模式,例如使用默认的Fsync方案,Redis能在发生服务器电源故障或操作系统仍然正常运行但Redis进程莫名挂掉的情况下,只丢失1秒的数据。
    
    appendfsync
    含义:Redis将OS数据缓冲区中数据刷新到磁盘的策略
    # appendfsync always  只要有新添加的数据就fsync
    appendfsync everysec  支持延迟fsync
    # appendfsync no      不需要fsync
    
    no-appendfsync-on-rewrite
    如果该参数设置为no,是最安全的方式,不会丢失数据,但是要忍受阻塞的问题。如果设置为yes呢?这就相当于将appendfsync设置为no,这说明并没有执行磁盘操作,只是写入了缓冲区,因此这样并不会造成阻塞(因为没有竞争磁盘),但是如果这个时候redis挂掉,就会丢失数据。丢失多少数据呢?在Linux的操作系统的默认设置下,最多会丢失30s的数据。
    
    auto-aof-rewrite-percentage
    auto-aof-rewrite-percentage 100 (当前写入日志文件的大小超过上一次rewrite之后的文件大小的百分之100时就是2倍时触发Rewrite)
    
    auto-aof-rewrite-min-size
    指定触发rewrite的aof文件大小。若aof文件小于该值,即使当前文件的增量比例达到auto-aof-rewrite-percentage的配置值,也不会触发自动rewrite。即这两个配置项同时满足时,才会触发rewrite。  
    
    aof-load-truncated
    指redis在恢复时,会忽略最后一条可能存在问题的指令。默认值yes。即在aof写入时,可能存在指令写错的问题(突然断电,写了一半),这种情况下,yes会log并继续,而no会直接恢复失败.
    
    lua-time-limit
    Redis提供了lua-time-limit参数限制脚本的最长运行时间,默认为5秒钟。当脚本运行时间超过这一限制后,Redis将开始接受其他命令但不会执行(以确保脚本的原子性,因为此时脚本并没有被终止),而是会返回“BUSY”错误
    
    cluster-node-timeout
    cluster-node-timeout(可配置,秒级)时间内没有收到对方的回复,则单方面认为对端节点宕机,将该节点标为PFAIL状态。通过节点之间交换信息收集到quorum个节点都认为这个节点为PFAIL,则将该节点标记为FAIL,并且将其发送给其他所有节点,其他所有节点收到后立即认为该节点宕机。从这里可以看出,主宕机后,至少cluster-node-timeout时间内该主所负责的Slot的读写服务不可用。
    
    cluster-slave-validity-factor
    控制从节点FailOver相关的设置
    设为0,从节点会一直尝试启动FailOver.
    设为正数,失联大于一定时间(factor*节点TimeOut),不再进行FailOver
    
    Cluster-migration-barrier
    最小从节点连接数
    
    cluster-require-full-coverage
    默认为Yes,丢失一定比例Key后(可能Node无法连接或者挂掉),集群停止接受写操作
    设置为No,集群丢失Key的情况下仍提供查询服务
    
    slowlog-log-slower-than
    其中slowlog-log-slower-than表示slowlog的划定界限,只有query执行时间大于slowlog-log-slower-than的才会定义成慢查询,才会被slowlog进行记录。slowlog-log-slower-than设置的单位是微妙,默认是10000微妙,也就是10ms 
    
    slowlog-max-len
    slowlog-max-len表示慢查询最大的条数,当slowlog超过设定的最大值后,会将最早的slowlog删除,是个FIFO队列
    
    
    latency-monitor-threshold
    服务端内部的延迟监控稍微麻烦一些,因为延迟记录的默认阈值是0。尽管空间和时间耗费很小,Redis为了高性能还是默认关闭了它。所以首先我们要开启它,设置一个合理的阈值
    
    notify-keyspace-events
    notify-keyspace-events 带一个由 0 到多个字符组成的字符串参数。空字符串意思是通知被禁用。
    
    hash-max-ziplist-entries
    hash类型的数据结构在编码上可以使用ziplist和hashtable。ziplist的特点就是文件存储(以及内存存储)所需的空间较小,在内容较小时,性能和hashtable几乎一样.因此redis对hash类型默认采取ziplist。如果hash中条目的条目个数或者value长度达到阀值,将会被重构为hashtable。
    这个参数指的是ziplist中允许存储的最大条目个数,,默认为512,建议为128
    
    hash-max-ziplist-value
    ziplist中允许条目value值最大字节数,默认为64,建议为1024
    
    list-max-ziplist-entries
    对于list类型,将会采取ziplist,linkedlist两种编码类型。解释同上。
    
    list-max-ziplist-value
    对于list类型,将会采取ziplist,linkedlist两种编码类型。解释同上。
    
    set-max-intset-entries
    intset中允许保存的最大条目个数,如果达到阀值,intset将会被重构为hashtable
    
    zset-max-ziplist-entries 
    zset-max-ziplist-value 
    zset为有序集合,有2中编码类型:ziplist,skiplist。因为"排序"将会消耗额外的性能,当zset中数据较多时,将会被重构为skiplist。
    
    hll-sparse-max-bytes
    
    
    activerehashing
    每100ms里面使用1ms时间进行rehash。
    
    client-output-buffer-limit
    client-output-buffer-limit slave 256mb 64mb 60
    这里对是客服端是slave的做限制
    256mb 是一个硬性限制,当output-buffer的大小大于256mb之后就会断开连接
    64mb 60 是一个软限制,当output-buffer的大小大于64mb并且超过了60秒的时候就会断开连接
    
    hz
    Redis server执行后台任务的频率,默认为10,此值越大表示redis对"间歇性task"的执行次数越频繁(次数/秒)。

    "间歇性task"包括"过期集合"检测、关闭"空闲超时"的连接等,此值必须大于0且小于500。此值过小就意味着更多的cpu周期消耗,后台task被轮询的次数更频繁。此值过大意味着"内存敏感"性较差。建议采用默认值。 aof-rewrite-incremental-fsync aof rewrite过程中,是否采取增量文件同步策略,默认为“yes”。 rewrite过程中,每32M数据进行一次文件同步,这样可以减少aof大文件写入对磁盘的操作次数

    更多openstack/trove的文章:http://www.cnblogs.com/S-tec-songjian/

    此文章属博客园用户S-tec原创作品,受国家《著作权法》保护,未经许可,任何单位及个人不得做营利性使用;若仅做个人学习、交流等非营利性使用,应当指明作者姓名、作品名称,原文地址,并且不得侵犯作者依法享有的其他权利。

  • 相关阅读:
    结巴分词 0.14 版发布,Python 中文分词库
    Lazarus 1.0.2 发布,Pascal 集成开发环境
    Android全屏 去除标题栏和状态栏
    服务器日志现 Android 4.2 传将添多项新特性
    Percona XtraBackup 2.0.3 发布
    长平狐 Android 强制设置横屏或竖屏 设置全屏
    NetBeans 7.3 Beta 发布,全新的 HTML5 支持
    CppDepend现在已经支持Linux
    GromJS 1.7.18 发布,服务器端的 JavaScript
    Apache OpenWebBeans 1.1.6 发布
  • 原文地址:https://www.cnblogs.com/S-tec-songjian/p/6648217.html
Copyright © 2011-2022 走看看