Недавно мы заметили скачки загрузки ЦП в нашей производственной среде, вызванные redis, которые можно увидеть ниже:
Чтобы решить эту проблему, я перезапускаю сервер redis примерно два раза в день :( что явно далеко от идеала. Я хотел бы определить основную причину.
Вот некоторые вещи, которые я изучил до сих пор:
1) Посмотрите на любые аномалии в файле журнала Redis. Следующее кажется подозрительным:
2) Изучил журналы доступа nginx, чтобы узнать, нет ли у нас необычно высокого трафика. Ответ - нет.
3) New Relic обнаружил, что проблема началась 21 ноября 16` года (около месяца назад), но в то время не было выпущено никакого кода.
Вот некоторые подробности о нашей настройке:
Сервер 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
Фреймворк: Magento 1.7.2 с Cm_Cache_Backend_Redis
Пожалуйста, дайте мне знать, если я предоставлю вышеуказанную информацию, я могу что-нибудь сделать, чтобы уменьшить высокую загрузку процессора.
ОЧЕНЬ ВАЖНОЕ ОБНОВЛЕНИЕ:
Ваш сервер мог быть взломан. Не redis вызывает высокую загрузку ЦП, а отдельная команда под названием yam (взгляните на крайний правый угол вашего htop, я пропустил ее в первый раз). Команда yam используется в хорошо известном эксплойте Redis и часто приводит к высокой загрузке процессора. Вам нужно перепроверить, чтобы убедиться, что ваш сервер безопасен.
Вот несколько статей и ссылок, к которым вы можете обратиться, если хотите узнать больше об уязвимости и о том, как обезопасить себя:
Вот мой контрольный список для проблем с производительностью magento / redis, э ...
/var/lib/redis
и убедитесь, что он относительно небольшой. maxmemory
15 ГБ, что для magento действительно перебор. Я обычно использую что-то ближе к 256mb
. Если вы так часто используете redis (!!!!!!), у вас, вероятно, есть другие проблемы в вашем стеке magento.Вообще говоря, файл журнала не вызывает подозрений, потому что ваши настройки сохранения redis говорят redis сохранять каждую минуту, если было> 10000 записей, каждые пять минут, если было> 10 записей, и каждые 15 минут, если было> 1. написать. Таким образом, по сути, информация сохраняется на диск каждую минуту, что не должно быть таким обременительным.