Назад | Перейти на главную страницу

Кеши виртуальной памяти Ubuntu забирают память

У меня есть 64-битный сервер Ubuntu 9.10, который, кажется, использует всю доступную память. Согласно моим графикам Мунина, почти вся используемая память находится в кэше подкачки, кеш-памяти и блочном кеше. (Я понимаю, что это означает кеши виртуальной памяти, правильно ли я предполагаю это?)

Когда использование памяти приближается к 100%, некоторые (хотя и не все) системные службы, такие как SSH, перестают отвечать на запросы. После перезагрузки системы производительность и использование памяти на время нормализуется.

Несколько интересных моментов:

У меня вопрос: как понять, что вызывает нехватку памяти? Я пробовал обычные утилиты (например, ps, top и т. Д.), Но не нашел ничего необычного.

Любые идеи? Заранее спасибо!

Вы уверены, что это связано с памятью? Кеши не должны высасывать всю память; они временные и динамические и перераспределяются по мере необходимости активной памяти. Кеши нужны только для того, чтобы ускорить работу и использовать память, которая в противном случае была бы потрачена впустую.

Я бы, наверное, посмотрел, есть ли у вас что-то еще, что мешает работе системы. При использовании Top вы наблюдаете высокую загрузку системы? Что это в те времена по сравнению с «нормальными» временами? Вы сортируете верхнюю часть по использованию ЦП и активной памяти?

Вы пробовали запустить iotop, чтобы увидеть ввод-вывод диска и посмотреть, не забивает ли диск что-нибудь?

Как выглядят все crontab?

Вы делали снимок ps в течение дня несколько раз и сравнивали его примерно в 10:00, чтобы увидеть, какие процессы появились?

В долгосрочной перспективе, как насчет сетевых подключений с помощью netstat? что-нибудь необычное входило или выходило из системы в то время?

Похоже, что это может быть перестройка или индексация системной базы данных, например «найти», но это не должно замедлять работу системы до полной остановки.

Использование памяти и медлительность - симптомы одной и той же проблемы. В это время происходит что-то, что приводит к сбою дискового кеша системы. Система использует каждую каплю памяти, чтобы избежать избыточного дискового ввода-вывода, но все равно не работает.

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

Проверьте какой-нибудь процесс, который выполняет много операций ввода-вывода на диск. Например, updatedb или какой-то скрипт резервного копирования. Если окажется, что это самодельный инструмент, можно изменить его, чтобы обойти дисковый кеш, чтобы он не вытеснял другие вещи из кеша. Это может помочь ionice это не повредит чувствительному ко времени чтению.