Недавно мы заметили скачки производительности ЦП в нашей производственной среде, вызванные Redis, которые можно увидеть ниже:
Чтобы решить эту проблему, я перезапускаю сервер Redis примерно два раза в день :( что явно далеко от идеала. Я хотел бы определить основную причину.
Вот некоторые вещи, которые я изучил, поэтому far:
1) Изучите любые аномалии в файле журнала redis. Следующее кажется подозрительным:
2) Изучил журналы доступа nginx, чтобы узнать, нет ли у нас необычно высокого трафика. Ответ - нет.
3) New Relic обнаружил, что проблема началась 21 ноября 16` года (около месяца назад), но к тому времени не было выпущено никакого кода.
Вот некоторые сведения о нашей настройке:
Сервер Redis: Сервер Redis v = 2.8.17 sha = 00000000: 0 malloc = jemalloc-3.6.0 бит = 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 действительно слишком много. Обычно я использую что-то близкое к 256 МБ
. Если вы так часто используете redis (!!!!!!), у вас, вероятно, есть другие проблемы в вашем стеке magento. Вообще говоря, файл журнала не вызывает подозрений, потому что ваши настройки сохранения redis говорят redis сохранять каждую минуту, если было> 10000 записей, каждые пять минут, если было> 10 записей, и каждые 15 минут, если было > 1 пиши. Таким образом, по сути, информация сохраняется на диск каждую минуту, что не должно быть таким обременительным.