Я запускаю Redis 2.8.17 на Ubuntu 14.04, и вчера Redis начал поглощать всю память, пока не был убит OOM. Я перезапускал его несколько раз, перезапускал сервер, очищал все данные, но всегда тот же результат: когда я запускаю его, потребление памяти увеличивается каждую секунду, пока оно не будет убито на 3 ГБ или около того.
Посмотрите это короткое видео: http://screencast.com/t/RYqTO7Gradi1
Заметили, что столбец RES поднимается и поднимается? Это только что запущенный Redis с пустым набором данных.
Единственное, что я сделал, что могло иметь какое-то отношение к этому, - это обновить Monit на сервере накануне. Это прошло без проблем и не должно было повлиять на Redis. А apt-get update
было сделано, так что, возможно, была обновлена какая-то системная библиотека, которая может вызвать это?
В любом случае, у меня совершенно нет идей, любые подсказки могут помочь!
Вот мой redis.conf
выход INFO
: https://gist.github.com/manuelmeurer/8c660be28534f8332a23
Оказалось, что я не видел леса за деревьями, и один комментарий Майкла Хэмптона направил меня на верный путь.
В конце концов, это не имело никакого отношения к самому Redis, но одно из моих приложений плохо себя вело. Он использует Sidekiq для фоновой обработки, который использует Redis для хранения заданий, сообщений об ошибках, трассировки и т. Д. Я начал получать странные ошибки для некоторых моих заданий, но игнорировал их, так как я должен был сначала решить эту проблему с помощью Redis. :)
Похоже, что фоновый рабочий, который должен отправлять уведомление Эррбит каждый раз, когда в моем приложении возникает исключение, создается исключение, которое генерирует чрезвычайно длинные обратные трассировки и все больше и больше заданий ...
Я остановил фоновую обработку, и теперь Redis потребляет нормальный объем оперативной памяти.