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を指定)のコマンドを実行できると仮定します.