Redis構成の最適化

5508 ワード

redis.conf最適化構成

#          
daemonize yes
#        ,      pid,   /opt/local/redis/redis.pid
pidfile redis.pid
#    IP,    127.0.0.1
#bind 127.0.0.1
#Redis    port
port 6379
#client      ,    ,   300( )
timeout 300
#      , 4    ,debug,verbose(   ),notice,warning
loglevel verbose
#           ,    stdout,    /dev/null    
logfile stdout
#      ,    16,      0
databases 16
#     disk   
#    Keys      ,900    disk  
save 900 1
#  10 Keys      ,300    disk  
save 300 10
#  1w keys      ,60    disk  
save 60 10000
# dump .rdb              
rdbcompression yes
#         ,    dump.rdb
dbfilename dump.rdb
#         ,     ./
dir /data/redis/

########### Replication #####################
#Redis     
# slaveof           ,      IP   
# masterauth 
#  password
requirepass foobared
#  client   ,     
maxclients 2048
#        ,         ,Redis               Key,       ,         ,          。
maxmemory 8589934592
#maxmemory-policy volatile-lru:             ,              
#maxmemory-policy allkeys-lru:     (                      ),              
#maxmemory-policy volatile-random:             ,            
#maxmemory-policy allkeys-random:     (                  )             
#maxmemory-policy volatile-ttl:             ,                 
#maxmemory-policy noeviction:(    )       ( redis              ~),         ,       
maxmemory-policy volatile-ttl
#                ,     ,                   。  redis            save      ,                     。    no
appendonly yes
#        ,    appendonly.aof
appendfilename appendonly.aof
#      ,    3    。no                  ,always             fsync()       ,everysec        (   )。
appendfsync always
#appendfsync everysec
#appendfsync no

################ VIRTUAL MEMORY ###########
#    VM  ,    no
vm-enabled no
# vm-enabled yes
#        ,    /tmp/redis.swap,    Redis    
vm-swap-file /tmp/redis.swap
#      vm-max-memory         ,  vm-max-memory    ,              (Redis       keys),    , vm-max-memory   0   ,      value      。    0。
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4

############# ADVANCED CONFIG ###############
glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
#    Hash 
activerehashing yes
#  :Redis     VM          :
#   key    value    ,  VM       .            .
#   key   ,                 key      value,        #key,value       value.
#    linux ext3                     swap  .
#vm-max-threads    ,      swap      ,             .     0,     swap          .             ,               .

システムカーネルパラメータの調整


メモリの状態が緊張している場合は、カーネルパラメータを設定する必要があります.
echo 1 > /proc/sys/vm/overcommit_memory

ここでこの構成の意味を説明します:/proc/sys/vm/overcommit_memoryこのファイルは、0、1、2の値を持つカーネルのメモリ割り当てポリシーを指定します.0は、カーネルが使用可能なメモリ供給用プロセスが十分に使用されているかどうかを確認することを示します.十分なメモリがあると仮定し、メモリ申請の同意を得る.そうでない場合、メモリ申請に失敗し、エラーを適用プロセスに返します.1は、現在のメモリの状態にかかわらず、カーネルがすべての物理メモリを割り当てることに同意したことを示します.2,カーネルがすべての物理メモリと交換空間の合計を超えるメモリRedisを割り当てることに同意したことを示すdumpデータの場合,forkはサブプロセスを作り出し,理論的にはchildプロセスが占有するメモリはparentと同じであり,例えばparentが占有するメモリは8 Gであり,この場合も同じ8 Gのメモリをchildに割り当てる必要があり,メモリが負担できないと仮定すると,redisserverのdown機やIO負荷が高すぎて効率が低下することが多い.したがって、ここで最適化されたメモリ割り当てポリシーは1に設定する必要があります(現在のメモリステータスにかかわらず、カーネルがすべての物理メモリを割り当てることに同意していることを示します).

データムテスト


バックグラウンドでredisサービスを開始した後、redis-benchmarkコマンドでテストできます.

保存/バックアップ


データバックアップは、定期的にファイルをバックアップすることによって実現できます.redisは非同期でディスクに書き込まれるため、メモリ内のデータを直ちにハードディスクに書き込むには、例えば、redis-cli saveまたはredis-cli-p 6380 save(portを指定)のコマンドを実行できると仮定します.