最近、以下に示すように、redisによって引き起こされる本番環境でのCPUスパイクに気づきました。
この問題に対処するために、私は1日に約2回redisサーバーを再起動しています:(これは明らかに理想からはほど遠いです。根本的な原因を特定したいと思います。
これまでに調べたことがいくつかあります。
1)redisログファイルの異常を調べます。以下は疑わしいようです。
2)nginxアクセスログを調査して、異常に高いトラフィックが発生していないかどうかを確認しました。答えはノーです。
3)New Relicは、問題が16`(約1か月前)の11月21日に始まったことを明らかにしましたが、その頃にコードはリリースされませんでした。
セットアップの詳細は次のとおりです。
Redisサーバー:Redis server v=2.8.17 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=64a9cf396cbcc4c7
PHP:5.3.27
fpm付き
Redis構成:
daemonize yes
pidfile /var/run/redis/redis.pid
port 6379
timeout 0
tcp-keepalive 0
loglevel notice
logfile /var/log/redis/redis.log
syslog-enabled yes
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error no
rdbcompression yes
rdbchecksum yes
dbfilename redis.rdb
dir /var/lib/redis/
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
maxmemory 15GB
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
include /etc/redis/conf.d/local.conf
フレームワーク:Cm_Cache_Backend_Redisを使用したMagento 1.7.2
上記の情報が与えられた場合、CPU使用率の高さを軽減するために私にできることがあれば教えてください。
非常に重要な更新:
サーバーがハッキングされた可能性があります。 CPU使用率が高くなる原因は、redisではありませんが、yamと呼ばれる別のコマンドです(htopの右端を見てください。初めて見逃しました)。 yamコマンドは、redisのよく知られたエクスプロイトで使用され、CPU使用率が高くなることがよくあります。サーバーが安全であることを再確認する必要があります。
脆弱性と自分自身を保護する方法について詳しく知りたい場合に参照できる記事とリンクは次のとおりです。
これがmagento/redis、er、パフォーマンスの問題に関する私のチェックリストです:
/var/lib/redis
にある必要があり、比較的小さいことを確認してください。maxmemory
を指定しましたが、これはMagentoにとっては本当にやり過ぎです。私は通常、256mb
に近いものを使用します。 redisをそれほど使用している場合(!!!!!!)、magentoスタックに他の問題がある可能性があります。一般的に、ログファイルは疑わしいものではありません。redisの保存設定では、10000を超える書き込みがあった場合は1分ごと、10を超える書き込みがあった場合は5分ごと、1を超える場合は15分ごとに保存するようにredisに指示します書く。したがって、基本的には毎分情報をディスクに保持しますが、それほど面倒なことではありません。