• 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原创作品,受国家《著作权法》保护,未经许可,任何单位及个人不得做营利性使用;若仅做个人学习、交流等非营利性使用,应当指明作者姓名、作品名称,原文地址,并且不得侵犯作者依法享有的其他权利。

  • 相关阅读:
    GAC的理解及其作用 [转]
    Binding Policy in .NET/ Assembly search order (Bin/GAC)
    Batch update
    Table-Valued Parameters in SQL Server 2008 (ADO.NET)
    EXT的bug 布局border 和 grid的cellediting
    ext 的controller中的refs的使用方法
    Ext 修改内容之后 不做任何动作 再次修改时的数据是原来第一次修改前的数据
    php 与mysql 数据库
    前端开发和后端开发
    http 你造吗?
  • 原文地址:https://www.cnblogs.com/S-tec-songjian/p/6648217.html
Copyright © 2020-2023  润新知