2010-10-03 3 views
4

Основываясь на этом снимке экрана: http://www.dropmocks.com/mBvx1 (мертвая ссылка)Redis Swapping?

делает Redis нужно в два раза больше памяти, я на самом деле думаю, что это делает? Я полагаю, что это порождает другой процесс для сохранения на диск, означает ли это, что на самом деле копирует память, и я всегда должен предположить, если у меня есть 16 гигабайтов бара 8, это максимум для одного процесса redis?

ответ

-3

Я не думаю, что Redis должен занимать ~ 8 ГБ. Возможно, вы захотите перейти на 2.X, потому что я думаю, что у вас может быть утечка памяти.

Но, вернувшись к вашему вопросу, я думаю, что Redis создает новый процесс для сохранения на диск, но Redis хранится в памяти. Он экономит диск в случае сбоя питания, приводящего к потере всех данных в ОЗУ

10

Redis может легко принять до 8 ГБ в зависимости от ваших данных. Это говорит о том, что «двойная память», о которой вы говорите, - это красная селедка: она делает вилку и «копирует» память, но из-за копирования на технологию записи память разделяется между процессами и записывается только тогда, когда один из двух процессы вносят изменения в конкретный байт памяти.

Таким образом, при сохранении на диске только ключи, которые изменяются во время сохранения, будут вызывать дополнительное распределение памяти между двумя процессами. Все остальное разделяется. Надеюсь это поможет.

+0

Я предполагаю, что это относится только к * NIX платформы? Я думаю, что двойное использование памяти может быть правдой для запуска Redis на окнах? –

-1

Если redis имеет 8 ГБ памяти, он не будет использовать больше, чем это. Однако во время сохранения fork() сделает новый redis «процесс» и скопирует все данные - например. 8 ГБ больше. Поскольку он не может соответствовать этому в памяти, он будет заменять его на файл подкачки (например, на диске). Как только сохранение будет выполнено, память будет бесплатной.

Я заметил это на моем сервере, где работает множество процессов сфинкса, и 2 сервера redis, работающих с 4 ГБ, и сохранение произошло в одно и то же время.

http://redis4you.com/articles.php?id=006&name=Redis+swap+issue+while+save

+1

не создает байтовую копию образа памяти процесса, когда он выполняет фоновое сохранение. См. Http://redis.io/topics/faq «Схема сохранения фона Redis основывается на семантике копирования на запись в современных операционных системах ...» – Kevin