pingo
@pingo

Почему redis попадает в swap?

root# free -h
            total       used       free         shared    buffers     cached
Mem:            31G        31G       290M        38M       224M        28G
-/+ buffers/cache:       2.3G        29G
Swap:         4.0G       2.7M       4.0G


на сервачке стареньком (centos 6, апач 2.4 prefork + php_opcache + mysql 5.5.3) крутиться магазин тяжелый достаточно, вроде все хорошо, но были лаги с сессиями, перевел сессии на redis, ну и мне так понравилось, что я модуль трекера юзеров слелал на Redis(). недавно редис начал попадать в своп, и еще какие то демоны. так не одмин я, знания только необходимые, подскажите, куда капать? что этот сервак себе позволяет?
PID=1088 - Swap used: 0 - (ib_cm/3 )
PID=1093 - Swap used: 0 - (rdma_cm )
PID=1114 - Swap used: 0 - (ipoib_flush )
PID=1336 - Swap used: 132 - (auditd )
PID=1360 - Swap used: 92 - (portreserve )
PID=1441 - Swap used: 356 - (rsyslogd )
PID=1475 - Swap used: 124 - (irqbalance )
PID=1493 - Swap used: 132 - (dbus-daemon )
PID=1531 - Swap used: 108 - (acpid )
PID=1543 - Swap used: 416 - (hald )
PID=1544 - Swap used: 196 - (hald-runner )
PID=1576 - Swap used: 164 - (hald-addon-inpu )
PID=1589 - Swap used: 144 - (hald-addon-acpi )
PID=1603 - Swap used: 1264 - (redis-server )
PID=1715 - Swap used: 72 - (dovecot )
PID=1732 - Swap used: 0 - (pop3-login )
PID=1733 - Swap used: 0 - (lmtp )
  • Вопрос задан
  • 904 просмотра
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch Куратор тега Linux
3D специалист. Dолго, Dорого, Dерьмово.
Скорее всего редис у вас сожрал всю доступную память, и после этого полез в своп.
Так как редис все держит исключительно в памяти, то желательно удалять старые ключи. Ну, и если он у вас используется исключительно под кеш, то просто выполните FLUSHDB или FLUSHALL, почистив тем самым все ключи сразу. И выполняйте эти операции регулярно, например через задание в cron.
А вообще-то хорошей традицией - использовать TTL на ключи, чтобы они удалялись сами по истечении некоторого интервала времени, но это задается обычно программно на каждый ключик в отдельности...

Да, чтобы установить TTL, пропишите в php.ini
session.gc_maxlifetime = 432000
Это 5 дней в секундах, или сколько там вам нужно сессию держать... Ключики сессий будут дропаться после этого времени и не грязнить память.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы