Что-то ест всю память (я подозреваю утечку памяти на некотором приложении). Как обнаружить что?

Существует много служебного трафика, используемого только сетевым оборудованием. Запросы ARP, обмены таблицы маршрутизации и такой. Следует иметь в виду хотя, что OSI является просто эталонной моделью и не стопкой действующего протокола. Что рассматривают, прикладной уровень в одной ситуации (http для веб-запросов) может действовать как транспорт для другого протокола в других ситуациях (например, SOAP).

16
задан 9 April 2011 в 23:15
4 ответа

Выполнение top в пакетном режиме для создания отчетов о емкостях памяти периодически может использоваться для наблюдения, кто использует память, когда дела идут на юг. Runing sar в пакетном режиме должен дать некоторую хорошую диагностику на использовании памяти и связал ввод-вывод. Выполнение munin контролировать систему должно дать Вам график с хорошей деталью о том, для чего используется память. Это может помочь много.

Можно использовать limits.conf для ограничения максимального базового размера программ. Правильно набор, это должно закрыть любые программы, которые пропускают память. Это работает с pam_limits модулем. Пределы могут также быть установлены с ulimits команда.

Вы запускаете несколько программ, которые могли использовать большие объемы памяти. Некоторые вещи, на которые Вы могли посмотреть, включают.

  • Плохо запрограммированные приложения, работающие под apache2 может пропустить память. Необходимо видеть, что емкость памяти увеличивается, когда это происходит. Можно настроить apache2 для переработки детей после определенного числа использования путем установки MaxRequestsPerChild к 100 или около этого. Если это разрешает проблему, то необходимо разрешить утечку. Я наблюдал бы это сначала.
  • MySQL может попытаться загрузить данные в память. Если у Вас есть много данных в памяти, это может вызвать некоторую перегрузку, но не должно быть так поразительно, как Вы видите.
  • Если у Вас есть большое tmpfs файловая система смонтировалась, затем можно пропустить память, если файлы не удалены при использовании. Большие долговечные файлы могут также быть проблемой.
  • Если проблема, происходит примерно в то же время суток, у Вас может быть запланированная программа, которая пропускает память.
  • Если у Вас будет программа, которая выделяет общую память, но не выпускает ее перед выходом, то у Вас будет относительно невидимая утечка памяти. Если общая память заблокирована в памяти, то она может вызвать свопинг. Объем доступной общей памяти обычно относительно ограничивается.
  • Пакет liquidsoap+icecast мог столкнуться с проблемами буферизации та память использования. Я не использовал эту комбинацию, таким образом, я не уверен, как это появилось бы.

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

При чтении файла, который находится в кэш-буфере, никакой доступ к диску не требуется, и чтение разрешено от кэш-буфера. Записи используют подобный механизм. Если Вашей системе нужна память, кэш-буфер является одним из первых мест, которое используется. Большинство буферов может быть сразу выпущено.

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

16
ответ дан 2 December 2019 в 20:36

Можно использовать эту команду, чтобы видеть, что лучшие 10 приложений расценивают Использование оперативной памяти:

ps -A --sort -rss -o comm,pmem | head -n 11

Иногда эта команда помогает Вам, если много подпроцессов были сгенерированы:

ps auxf

Таким образом, Вы видите, какие процессы принадлежат вместе.

11
ответ дан 2 December 2019 в 20:36

Ничто действительно не использует ту память с точки зрения приложений.

Необходимо вычесть 'кэшируемое' значение, которое представляет кэш страницы для получения лучшее представление относительно того, что фактическое использование памяти с точки зрения использования программы.

В основном это - хорошее управление памятью, и это идеально, что Вы хотите.

См. ссылку здесь для большей информации: http://www.linuxatemyram.com/

8
ответ дан 2 December 2019 в 20:36

На самом деле я не профессионал в этом, но жидкое мыло + ледяное покрытие связано с мультимедиа. Когда система свободна, она кэширует и / или занимает память для использования в будущем. И если трафик увеличивается в определенное время дня / в течение определенного периода времени, то он начнет свопинг. На этом этапе, если количество запросов (пользователей, просматривающих контент) увеличивается, необходимые ресурсы будут более 8 ГБ оперативной памяти.

1
ответ дан 2 December 2019 в 20:36

Теги

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