[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/errors/linux/out-of-memory-error":3,"mdc--oadcot-key":1145,"mdc--1475hk-key":1155,"mdc-kora8j-key":1172,"mdc--2evnn7-key":1197,"mdc--vc32nr-key":1205,"mdc--h6k1r5-key":1213,"mdc-umtguu-key":1221,"mdc--53skiz-key":1229,"mdc-n3zgbq-key":1251,"related-/errors/linux/docker-oom-killed,/guides/linux/monitor-memory-usage,/errors/linux/swap-space-issues":1259},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":1076,"code":1077,"createdAt":1078,"description":1079,"difficulty":1080,"draft":1081,"estimatedTime":1082,"extension":1083,"faq":1084,"howToSteps":1097,"howToTotalTime":1113,"image":1076,"keywords":1114,"locale":1124,"meta":1125,"navigation":196,"path":1126,"platform":1127,"related":1128,"section":1132,"seo":1133,"severity":1134,"stem":1135,"summary":1136,"tags":1137,"twitterCreator":1076,"twitterSite":1076,"type":1143,"updatedAt":1078,"__hash__":1144},"content_ru/errors/linux/out-of-memory-error.md","Out of Memory (OOM) ошибка в Linux: причины и способы решения",[7,8,9,10],"Linux (любой дистрибутив)","Systemd-based системы","Docker/Kubernetes среды","Серверы и рабочие станции","FixPedia Team",{"type":13,"value":14,"toc":1064},"minimark",[15,20,37,56,66,69,73,76,128,132,137,140,397,401,404,592,596,599,821,825,828,958,962,1032,1035,1039,1060],[16,17,19],"h2",{"id":18},"что-означает-ошибка-out-of-memory-oom","Что означает ошибка Out of Memory (OOM)",[21,22,23,24,28,29,32,33,36],"p",{},"Ошибка ",[25,26,27],"strong",{},"Out of Memory (OOM)"," в Linux — это не сообщение в стиле Windows, а ",[25,30,31],{},"действие ядра операционной системы",". Когда система физически исчерпывает всю доступную оперативную память (RAM) и место в swap-файле/разделе, ядро активирует механизм ",[25,34,35],{},"OOM killer"," (убийца при нехватке памяти).",[21,38,39,40,43,44,48,49,48,52,55],{},"Его цель — сохранить работоспособность системы в целом, ",[25,41,42],{},"принудительно завершив один или несколько процессов",", которые потребляют наибольший объём памяти. Типичный симптом: процесс (например, ",[45,46,47],"code",{},"java",", ",[45,50,51],{},"python",[45,53,54],{},"mysqld",", контейнер Docker) внезапно завершается с сообщением в логах:",[57,58,63],"pre",{"className":59,"code":61,"language":62},[60],"language-text","[12345.678] Out of memory: Kill process 1234 (some_process) score 500 or sacrifice child\n[12345.679] Killed process 1234 (some_process) total-vm:1234567kB, anon-rss:987654kB, file-rss:0kB\n","text",[45,64,61],{"__ignoreMap":65},"",[21,67,68],{},"Система может стать неотзывчивой, а после завершения «виновника» — вернуться в нормальное состояние.",[16,70,72],{"id":71},"причины-возникновения","Причины возникновения",[21,74,75],{},"Причины нехватки памяти обычно делятся на несколько категорий:",[77,78,79,86,104,110,116,122],"ol",{},[80,81,82,85],"li",{},[25,83,84],{},"Утечки памяти (Memory Leaks) в приложениях."," Программа (например, на Java, Python, C++) постепенно выделяет память под объекты, но не освобождает её после использования. Со временем потребление растёт до критических значений.",[80,87,88,91,92,95,96,99,100,103],{},[25,89,90],{},"Неправильная конфигурация приложений."," Чрезмерно большой размер кучи (heap) для JVM (",[45,93,94],{},"-Xmx","), кэширование слишком больших объёмов данных без ограничений, неоптимальные настройки веб-сервера (например, ",[45,97,98],{},"worker_processes"," + ",[45,101,102],{},"worker_connections"," в Nginx).",[80,105,106,109],{},[25,107,108],{},"Физически недостаточный объём RAM."," Запуск нескольких требовательных приложений (виртуальные машины, базы данных, тяжёлые IDE) на сервере с малым количеством памяти.",[80,111,112,115],{},[25,113,114],{},"Отсутствие или недостаточный размер swap-пространства."," Swap служит «подушкой безопасности». Если его нет или он слишком мал, первое же существенное нехватка RAM приведёт к OOM.",[80,117,118,121],{},[25,119,120],{},"Атака или вредоносное ПО."," Например, DDoS-атака, вызывающая создание множества соединений, или скрипт, бесконечно создающий процессы/объекты в памяти.",[80,123,124,127],{},[25,125,126],{},"«Зомби»-процессы или неосвобождаемые ресурсы ядра."," Хотя реже, но некоторые ядерные структуры (например, неосвобождённые inode или dentry) могут накапливаться.",[16,129,131],{"id":130},"способы-решения","Способы решения",[133,134,136],"h3",{"id":135},"способ-1-диагностика-и-мониторинг-первый-шаг-всегда","Способ 1: Диагностика и мониторинг (первый шаг всегда)",[21,138,139],{},"Прежде чем что-то менять, точно определите источник проблемы.",[77,141,142,235,324],{},[80,143,144,147,219,222,223,226,227,230,231,234],{},[25,145,146],{},"Проверьте системный журнал на наличие записей OOM.",[57,148,152],{"className":149,"code":150,"language":151,"meta":65,"style":65},"language-bash shiki shiki-themes github-light github-dark","# Поиск в логах systemd (journalctl)\njournalctl -k | grep -i -E \"killed process|out of memory\"\n\n# Или через dmesg\ndmesg | grep -i oom\n","bash",[45,153,154,163,191,198,204],{"__ignoreMap":65},[155,156,159],"span",{"class":157,"line":158},"line",1,[155,160,162],{"class":161},"sJ8bj","# Поиск в логах systemd (journalctl)\n",[155,164,166,170,174,178,181,184,187],{"class":157,"line":165},2,[155,167,169],{"class":168},"sScJk","journalctl",[155,171,173],{"class":172},"sj4cs"," -k",[155,175,177],{"class":176},"szBVR"," |",[155,179,180],{"class":168}," grep",[155,182,183],{"class":172}," -i",[155,185,186],{"class":172}," -E",[155,188,190],{"class":189},"sZZnC"," \"killed process|out of memory\"\n",[155,192,194],{"class":157,"line":193},3,[155,195,197],{"emptyLinePlaceholder":196},true,"\n",[155,199,201],{"class":157,"line":200},4,[155,202,203],{"class":161},"# Или через dmesg\n",[155,205,207,210,212,214,216],{"class":157,"line":206},5,[155,208,209],{"class":168},"dmesg",[155,211,177],{"class":176},[155,213,180],{"class":168},[155,215,183],{"class":172},[155,217,218],{"class":189}," oom\n",[220,221],"br",{},"В выводе будет ",[25,224,225],{},"PID"," и ",[25,228,229],{},"имя процесса"," (",[45,232,233],{},"some_process","), который был убит. Это ваш главный подозреваемый.",[80,236,237,240],{},[25,238,239],{},"Оцените текущее использование памяти.",[57,241,243],{"className":149,"code":242,"language":151,"meta":65,"style":65},"# Установите утилиту, если нет (для Debian/Ubuntu)\nsudo apt-get install htop\n\n# Запустите htop (нажимайте F6 для сортировки по MEM%)\nhtop\n\n# Или используйте встроенные команды\nfree -h  # Покажет общую картину RAM+Swap\nps aux --sort=-%mem | head -10  # Топ-10 процессов по памяти\n",[45,244,245,250,264,268,273,278,283,289,301],{"__ignoreMap":65},[155,246,247],{"class":157,"line":158},[155,248,249],{"class":161},"# Установите утилиту, если нет (для Debian/Ubuntu)\n",[155,251,252,255,258,261],{"class":157,"line":165},[155,253,254],{"class":168},"sudo",[155,256,257],{"class":189}," apt-get",[155,259,260],{"class":189}," install",[155,262,263],{"class":189}," htop\n",[155,265,266],{"class":157,"line":193},[155,267,197],{"emptyLinePlaceholder":196},[155,269,270],{"class":157,"line":200},[155,271,272],{"class":161},"# Запустите htop (нажимайте F6 для сортировки по MEM%)\n",[155,274,275],{"class":157,"line":206},[155,276,277],{"class":168},"htop\n",[155,279,281],{"class":157,"line":280},6,[155,282,197],{"emptyLinePlaceholder":196},[155,284,286],{"class":157,"line":285},7,[155,287,288],{"class":161},"# Или используйте встроенные команды\n",[155,290,292,295,298],{"class":157,"line":291},8,[155,293,294],{"class":168},"free",[155,296,297],{"class":172}," -h",[155,299,300],{"class":161},"  # Покажет общую картину RAM+Swap\n",[155,302,304,307,310,313,315,318,321],{"class":157,"line":303},9,[155,305,306],{"class":168},"ps",[155,308,309],{"class":189}," aux",[155,311,312],{"class":172}," --sort=-%mem",[155,314,177],{"class":176},[155,316,317],{"class":168}," head",[155,319,320],{"class":172}," -10",[155,322,323],{"class":161},"  # Топ-10 процессов по памяти\n",[80,325,326,329,390,392,393,396],{},[25,327,328],{},"Для контейнеров Docker/Kubernetes:",[57,330,332],{"className":149,"code":331,"language":151,"meta":65,"style":65},"# Показать контейнеры с их потреблением памяти\ndocker stats --no-stream\n\n# Проверить логи контейнера на наличие OOM\ndocker logs \u003Ccontainer_id> 2>&1 | grep -i oom\n",[45,333,334,339,350,354,359],{"__ignoreMap":65},[155,335,336],{"class":157,"line":158},[155,337,338],{"class":161},"# Показать контейнеры с их потреблением памяти\n",[155,340,341,344,347],{"class":157,"line":165},[155,342,343],{"class":168},"docker",[155,345,346],{"class":189}," stats",[155,348,349],{"class":172}," --no-stream\n",[155,351,352],{"class":157,"line":193},[155,353,197],{"emptyLinePlaceholder":196},[155,355,356],{"class":157,"line":200},[155,357,358],{"class":161},"# Проверить логи контейнера на наличие OOM\n",[155,360,361,363,366,369,372,376,379,382,384,386,388],{"class":157,"line":206},[155,362,343],{"class":168},[155,364,365],{"class":189}," logs",[155,367,368],{"class":176}," \u003C",[155,370,371],{"class":189},"container_i",[155,373,375],{"class":374},"sVt8B","d",[155,377,378],{"class":176},">",[155,380,381],{"class":176}," 2>&1",[155,383,177],{"class":176},[155,385,180],{"class":168},[155,387,183],{"class":172},[155,389,218],{"class":189},[220,391],{},"В Kubernetes событие OOM будет в ",[45,394,395],{},"kubectl describe pod \u003Cpod_name>",".",[133,398,400],{"id":399},"способ-2-немедленные-действия-для-стабилизации-системы","Способ 2: Немедленные действия для стабилизации системы",[21,402,403],{},"Если система уже в кризисе, но ещё реагирует:",[77,405,406,455,510],{},[80,407,408,411,412,415,416,442,444,447,448,451,452,396],{},[25,409,410],{},"Вручную завершите «пожирателя» памяти"," (используйте PID из логов или ",[45,413,414],{},"htop",").",[57,417,419],{"className":149,"code":418,"language":151,"meta":65,"style":65},"sudo kill -9 \u003CPID>\n",[45,420,421],{"__ignoreMap":65},[155,422,423,425,428,431,433,436,439],{"class":157,"line":158},[155,424,254],{"class":168},[155,426,427],{"class":189}," kill",[155,429,430],{"class":172}," -9",[155,432,368],{"class":176},[155,434,435],{"class":189},"PI",[155,437,438],{"class":374},"D",[155,440,441],{"class":176},">\n",[220,443],{},[25,445,446],{},"Внимание:"," ",[45,449,450],{},"-9"," (SIGKILL) — грубая сила. Сначала попробуйте обычный ",[45,453,454],{},"kill \u003CPID>",[80,456,457,460,461,464,465,504,506],{},[25,458,459],{},"Очистите кэши файловой системы"," (может помочь, если проблема в кэшах). ",[25,462,463],{},"Это безопасно",", ядро заново заполнит их по мере необходимости.",[57,466,468],{"className":149,"code":467,"language":151,"meta":65,"style":65},"# Очистка только кэша страниц (pagecache), dentries и inodes\nsudo sync  # Синхронизируем данные на диск\necho 3 | sudo tee /proc/sys/vm/drop_caches\n",[45,469,470,475,485],{"__ignoreMap":65},[155,471,472],{"class":157,"line":158},[155,473,474],{"class":161},"# Очистка только кэша страниц (pagecache), dentries и inodes\n",[155,476,477,479,482],{"class":157,"line":165},[155,478,254],{"class":168},[155,480,481],{"class":189}," sync",[155,483,484],{"class":161},"  # Синхронизируем данные на диск\n",[155,486,487,490,493,495,498,501],{"class":157,"line":193},[155,488,489],{"class":172},"echo",[155,491,492],{"class":172}," 3",[155,494,177],{"class":176},[155,496,497],{"class":168}," sudo",[155,499,500],{"class":189}," tee",[155,502,503],{"class":189}," /proc/sys/vm/drop_caches\n",[220,505],{},[507,508,509],"em",{},"Не выполняйте эту команду слишком часто и не на продакшн-сервере без понимания последствий.",[80,511,512,515,516,586,588,589,396],{},[25,513,514],{},"Временно увеличьте swap-пространство"," (если его мало или нет), чтобы дать системе «передышку».",[57,517,519],{"className":149,"code":518,"language":151,"meta":65,"style":65},"# Создаём файл подкачки размером 2ГБ\nsudo fallocate -l 2G /swapfile\nsudo chmod 600 /swapfile\nsudo mkswap /swapfile\nsudo swapon /swapfile\n\n# Чтобы включить после перезагрузки, добавьте в /etc/fstab:\n# /swapfile none swap sw 0 0\n",[45,520,521,526,542,554,563,572,576,581],{"__ignoreMap":65},[155,522,523],{"class":157,"line":158},[155,524,525],{"class":161},"# Создаём файл подкачки размером 2ГБ\n",[155,527,528,530,533,536,539],{"class":157,"line":165},[155,529,254],{"class":168},[155,531,532],{"class":189}," fallocate",[155,534,535],{"class":172}," -l",[155,537,538],{"class":189}," 2G",[155,540,541],{"class":189}," /swapfile\n",[155,543,544,546,549,552],{"class":157,"line":193},[155,545,254],{"class":168},[155,547,548],{"class":189}," chmod",[155,550,551],{"class":172}," 600",[155,553,541],{"class":189},[155,555,556,558,561],{"class":157,"line":200},[155,557,254],{"class":168},[155,559,560],{"class":189}," mkswap",[155,562,541],{"class":189},[155,564,565,567,570],{"class":157,"line":206},[155,566,254],{"class":168},[155,568,569],{"class":189}," swapon",[155,571,541],{"class":189},[155,573,574],{"class":157,"line":280},[155,575,197],{"emptyLinePlaceholder":196},[155,577,578],{"class":157,"line":285},[155,579,580],{"class":161},"# Чтобы включить после перезагрузки, добавьте в /etc/fstab:\n",[155,582,583],{"class":157,"line":291},[155,584,585],{"class":161},"# /swapfile none swap sw 0 0\n",[220,587],{},"Проверьте: ",[45,590,591],{},"free -h",[133,593,595],{"id":594},"способ-3-настройка-поведения-oom-killer-oompolicy","Способ 3: Настройка поведения OOM killer (OOMPolicy)",[21,597,598],{},"Вы можете повлиять на то, какой процесс OOM killer выберет в первую очередь.",[77,600,601,709],{},[80,602,603,610,611,614,615,618,619,699,701,704,705,708],{},[25,604,605,606,609],{},"Используйте ",[45,607,608],{},"oom_score_adj"," для критичных процессов."," У каждого процесса есть ",[45,612,613],{},"oom_score"," (от 0 до 1000), рассчитанный на основе потребления памяти. Чем выше, тем вероятнее его убийство. Вы можете ",[25,616,617],{},"снизить"," этот балл для важных сервисов.",[57,620,622],{"className":149,"code":621,"language":151,"meta":65,"style":65},"# Посмотреть текущий oom_score для процесса\ncat /proc/\u003CPID>/oom_score\n\n# Установить низкий приоритет на убийство (например, -500) для PID 1234\nsudo echo -500 > /proc/1234/oom_score_adj\n\n# Для постоянной настройки лучше использовать systemd-юнит\n# В файле сервиса /etc/systemd/system/\u003Cservice>.service добавьте:\n# [Service]\n# OOMScoreAdjust=-500\n",[45,623,624,629,649,653,658,674,678,683,688,693],{"__ignoreMap":65},[155,625,626],{"class":157,"line":158},[155,627,628],{"class":161},"# Посмотреть текущий oom_score для процесса\n",[155,630,631,634,637,640,642,644,646],{"class":157,"line":165},[155,632,633],{"class":168},"cat",[155,635,636],{"class":189}," /proc/",[155,638,639],{"class":176},"\u003C",[155,641,435],{"class":189},[155,643,438],{"class":374},[155,645,378],{"class":176},[155,647,648],{"class":189},"/oom_score\n",[155,650,651],{"class":157,"line":193},[155,652,197],{"emptyLinePlaceholder":196},[155,654,655],{"class":157,"line":200},[155,656,657],{"class":161},"# Установить низкий приоритет на убийство (например, -500) для PID 1234\n",[155,659,660,662,665,668,671],{"class":157,"line":206},[155,661,254],{"class":168},[155,663,664],{"class":189}," echo",[155,666,667],{"class":172}," -500",[155,669,670],{"class":176}," >",[155,672,673],{"class":189}," /proc/1234/oom_score_adj\n",[155,675,676],{"class":157,"line":280},[155,677,197],{"emptyLinePlaceholder":196},[155,679,680],{"class":157,"line":285},[155,681,682],{"class":161},"# Для постоянной настройки лучше использовать systemd-юнит\n",[155,684,685],{"class":157,"line":291},[155,686,687],{"class":161},"# В файле сервиса /etc/systemd/system/\u003Cservice>.service добавьте:\n",[155,689,690],{"class":157,"line":303},[155,691,692],{"class":161},"# [Service]\n",[155,694,696],{"class":157,"line":695},10,[155,697,698],{"class":161},"# OOMScoreAdjust=-500\n",[220,700],{},[25,702,703],{},"Важно:"," Не ставьте ",[45,706,707],{},"oom_score_adj = -1000"," (запрет на убийство) для всех процессов. Это может привести к полному зависанию системы.",[80,710,711,717,718,721,722,230,725,728,729,230,732,735,736,809,811,813,814,816,817,820],{},[25,712,713,714,415],{},"Изменение политики переcommitting памяти (",[45,715,716],{},"vm.overcommit_memory","\nПо умолчанию (",[45,719,720],{},"0",") ядро использует эвристику. Режим ",[45,723,724],{},"1",[45,726,727],{},"Always overcommit",") позволяет выделять память без ограничений, но риск OOM возрастает. Режим ",[45,730,731],{},"2",[45,733,734],{},"Don't overcommit",") строго проверяет, достаточно ли памяти+swap.",[57,737,739],{"className":149,"code":738,"language":151,"meta":65,"style":65},"# Проверить текущее значение\ncat /proc/sys/vm/overcommit_memory\n\n# Временно установить режим \"не переcommittить\" (2)\nsudo sysctl vm.overcommit_memory=2\nsudo sysctl vm.overcommit_ratio=100  # % от RAM+Swap, который можно выделить\n\n# Для постоянной настройки добавьте в /etc/sysctl.conf:\n# vm.overcommit_memory = 2\n# vm.overcommit_ratio = 100\n",[45,740,741,746,753,757,762,775,790,794,799,804],{"__ignoreMap":65},[155,742,743],{"class":157,"line":158},[155,744,745],{"class":161},"# Проверить текущее значение\n",[155,747,748,750],{"class":157,"line":165},[155,749,633],{"class":168},[155,751,752],{"class":189}," /proc/sys/vm/overcommit_memory\n",[155,754,755],{"class":157,"line":193},[155,756,197],{"emptyLinePlaceholder":196},[155,758,759],{"class":157,"line":200},[155,760,761],{"class":161},"# Временно установить режим \"не переcommittить\" (2)\n",[155,763,764,766,769,772],{"class":157,"line":206},[155,765,254],{"class":168},[155,767,768],{"class":189}," sysctl",[155,770,771],{"class":189}," vm.overcommit_memory=",[155,773,774],{"class":172},"2\n",[155,776,777,779,781,784,787],{"class":157,"line":280},[155,778,254],{"class":168},[155,780,768],{"class":189},[155,782,783],{"class":189}," vm.overcommit_ratio=",[155,785,786],{"class":172},"100",[155,788,789],{"class":161},"  # % от RAM+Swap, который можно выделить\n",[155,791,792],{"class":157,"line":285},[155,793,197],{"emptyLinePlaceholder":196},[155,795,796],{"class":157,"line":291},[155,797,798],{"class":161},"# Для постоянной настройки добавьте в /etc/sysctl.conf:\n",[155,800,801],{"class":157,"line":303},[155,802,803],{"class":161},"# vm.overcommit_memory = 2\n",[155,805,806],{"class":157,"line":695},[155,807,808],{"class":161},"# vm.overcommit_ratio = 100\n",[220,810],{},[25,812,446],{}," Режим ",[45,815,731],{}," может привести к тому, что приложения начнут падать с ",[45,818,819],{},"Cannot allocate memory"," ещё до срабатывания OOM killer, что иногда удобнее для отладки.",[133,822,824],{"id":823},"способ-4-устранение-коренной-причины","Способ 4: Устранение коренной причины",[21,826,827],{},"Это самый важный и долгосрочный шаг.",[77,829,830,875,881,935,941],{},[80,831,832,835,836,48,838,841,842,48,845,48,848,851,852],{},[25,833,834],{},"Для Java-приложений:"," Проверьте и уменьшите размер кучи (",[45,837,94],{},[45,839,840],{},"-Xms",") в параметрах JVM. Используйте инструменты вроде ",[45,843,844],{},"jstat",[45,846,847],{},"jmap",[45,849,850],{},"VisualVM"," для анализа heap dump.",[57,853,855],{"className":149,"code":854,"language":151,"meta":65,"style":65},"# Пример запуска с ограничением heap до 2ГБ\njava -Xmx2g -jar your_app.jar\n",[45,856,857,862],{"__ignoreMap":65},[155,858,859],{"class":157,"line":158},[155,860,861],{"class":161},"# Пример запуска с ограничением heap до 2ГБ\n",[155,863,864,866,869,872],{"class":157,"line":165},[155,865,47],{"class":168},[155,867,868],{"class":172}," -Xmx2g",[155,870,871],{"class":172}," -jar",[155,873,874],{"class":189}," your_app.jar\n",[80,876,877,880],{},[25,878,879],{},"Для веб-серверов (Nginx/Apache):"," Оптимизируйте количество рабочих процессов/потоков под имеющуюся память. Убедитесь, что нет бесконечного кэширования.",[80,882,883,886],{},[25,884,885],{},"Поиск утечек памяти:",[887,888,889,898,912,923],"ul",{},[80,890,891,894,895,396],{},[25,892,893],{},"Для C/C++:"," Используйте ",[45,896,897],{},"valgrind --leak-check=yes",[80,899,900,447,903,48,906,48,909,396],{},[25,901,902],{},"Для Python:",[45,904,905],{},"tracemalloc",[45,907,908],{},"objgraph",[45,910,911],{},"memory_profiler",[80,913,914,447,917,48,920,396],{},[25,915,916],{},"Для Node.js:",[45,918,919],{},"heapdump",[45,921,922],{},"clinic.js",[80,924,925,447,928,931,932,396],{},[25,926,927],{},"Общие утилиты:",[45,929,930],{},"smem -t -p"," (показывает PSS — Proportional Set Size), ",[45,933,934],{},"cat /proc/\u003CPID>/smaps",[80,936,937,940],{},[25,938,939],{},"Апгрейд железа."," Если нагрузка закономерна и приложение оптимизировано, возможно, просто не хватает физической RAM для рабочих задач.",[80,942,943,946,947,48,950,953,954,957],{},[25,944,945],{},"Для контейнеров (Docker/K8s):"," Корректно задавайте лимиты памяти (",[45,948,949],{},"--memory",[45,951,952],{},"--memory-swap"," в Docker; ",[45,955,956],{},"resources.limits.memory"," в K8s). Без лимитов контейнер может «съесть» всю память хоста.",[16,959,961],{"id":960},"профилактика","Профилактика",[77,963,964,990,999,1013,1026],{},[80,965,966,969,970],{},[25,967,968],{},"Внедрите мониторинг."," Настройте алерты (в Zabbix, Prometheus/Grafana, Nagios) на ключевые метрики:",[887,971,972,978,984],{},[80,973,974,977],{},[45,975,976],{},"node_memory_MemAvailable_bytes"," (доступно памяти) \u003C 10-15%",[80,979,980,983],{},[45,981,982],{},"node_memory_SwapTotal_bytes"," и использование swap > 50%",[80,985,986,989],{},[45,987,988],{},"container_spec_memory_limit_bytes"," (для контейнеров)",[80,991,992,995,996,998],{},[25,993,994],{},"Регулярно анализируйте логи."," Добавьте в мониторинг парсинг логов ",[45,997,169],{}," на наличие «Killed process».",[80,1000,1001,1004,1005,1008,1009,1012],{},[25,1002,1003],{},"Правильно настраивайте лимиты."," Для всех сервисов (особенно в Docker/K8s) задавайте как ",[45,1006,1007],{},"requests"," (гарантированный минимум), так и ",[45,1010,1011],{},"limits"," (жёсткий потолок).",[80,1014,1015,1018,1019,48,1022,1025],{},[25,1016,1017],{},"Тестируйте под нагрузкой."," Проводите нагрузочное тестирование (например, ",[45,1020,1021],{},"stress-ng",[45,1023,1024],{},"memtester",") в staging-среде, чтобы увидеть поведение приложения при росте потребления памяти.",[80,1027,1028,1031],{},[25,1029,1030],{},"Следите за версиями ПО."," Утечки памяти часто исправляются в обновлениях. Регулярно обновляйте ОС и критичные приложения.",[1033,1034],"in-article-ad",{},[16,1036,1038],{"id":1037},"заключение","Заключение",[21,1040,23,1041,1044,1045,1047,1048,1051,1052,1055,1056,1059],{},[25,1042,1043],{},"Out of Memory"," в Linux — это сигнал о том, что система исчерпала свои ресурсы. Механизм ",[25,1046,35],{}," — это последняя линия обороны, а не решение проблемы. Ваша задача — ",[25,1049,1050],{},"диагностировать"," «пожирателя» памяти через логи, ",[25,1053,1054],{},"стабилизировать"," систему (завершив процесс или добавив swap), а затем ",[25,1057,1058],{},"устранить коренную причину",": утечку, неправильную конфигурацию или физический недостаток RAM. Профилактика через мониторинг и грамотное выделение лимитов — лучший способ избежать внезапных падений сервисов в будущем.",[1061,1062,1063],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":65,"searchDepth":165,"depth":165,"links":1065},[1066,1067,1068,1074,1075],{"id":18,"depth":165,"text":19},{"id":71,"depth":165,"text":72},{"id":130,"depth":165,"text":131,"children":1069},[1070,1071,1072,1073],{"id":135,"depth":193,"text":136},{"id":399,"depth":193,"text":400},{"id":594,"depth":193,"text":595},{"id":823,"depth":193,"text":824},{"id":960,"depth":165,"text":961},{"id":1037,"depth":165,"text":1038},null,"OOM","2026-02-15 16:50:40","Система Linux завершает процессы из-за нехватки памяти? Узнайте, как работает OOM killer, диагностировать проблему и настроить систему для стабильной работы. Пошаговое руководство.","medium",false,"15-30 мин","md",[1085,1088,1091,1094],{"question":1086,"answer":1087},"Что такое OOM killer и почему он завершает мои процессы?","OOM killer (Out-Of-Memory killer) — это механизм ядра Linux, который автоматически завершает один или несколько процессов, когда система физически исчерпала всю доступную оперативную память (RAM) и swap-пространство, чтобы предотвратить полный крах системы.",{"question":1089,"answer":1090},"Можно ли полностью отключить OOM killer?","Можно, но крайне не рекомендуется. Отключение (через `echo 0 > /proc/sys/vm/panic_on_oom`) приведёт к тому, что система зависнет при нехватке памяти, вместо того чтобы убить процесс. Лучше настроить параметры OOM или устранить причину нехватки памяти.",{"question":1092,"answer":1093},"Как понять, какой процесс был убит OOM killer?","Поищите записи в системном журнале (journalctl). Команда `journalctl -k | grep -i \"killed process\"` или `dmesg | grep -i oom` покажет, какой процесс (с его PID и именем) был завершён и сколько памяти он потреблял.",{"question":1095,"answer":1096},"Повышение swap-пространства всегда решает проблему OOM?","Не всегда. Swap — это медленная запись на диск. Система будет работать крайне медленно (thrashing) ещё до срабатывания OOM, если активно использует swap. Это временная мера, а не решение проблемы утечек памяти или неправильного выделения ресурсов.",[1098,1101,1104,1107,1110],{"name":1099,"text":1100},"Диагностика: проверьте журналы на наличие OOM событий","Определите, сработал ли OOM killer и какой процесс был завершён. Это ключевой первый шаг.",{"name":1102,"text":1103},"Мониторинг: оцените текущее использование памяти","Используйте утилиты в реальном времени, чтобы понять, какие процессы потребляют больше всего RAM.",{"name":1105,"text":1106},"Краткосрочное решение: освободите память","Если система ещё работает, но нестабильна, можно вручную завершить «пожирателей» памяти или очистить кэши.",{"name":1108,"text":1109},"Среднесрочное решение: настройте параметры OOM","Настройте `oom_score_adj` для критичных процессов или измените политику переcommitting памяти (`vm.overcommit_memory`).",{"name":1111,"text":1112},"Долгосрочное решение: устранение причины","Найдите и исправьте утечки памяти в приложениях, оптимизируйте конфигурации (например, JVM heap) или увеличьте объём RAM.","PT20M",[1115,1116,1117,1118,1119,1120,1121,1122,716,1123],"out of memory error linux","oom killer","нехватка памяти linux","как исправить oom linux","система завершает процессы из-за памяти","oom error ubuntu","docker out of memory","killed process linux","memory leak linux","ru_RU",{},"/errors/linux/out-of-memory-error","linux",[1129,1130,1131],"/errors/linux/docker-oom-killed","/guides/linux/monitor-memory-usage","/errors/linux/swap-space-issues","Ошибки Linux",{"title":5,"description":1079},"critical","errors/linux/out-of-memory-error","Статья подробно объясняет ошибку 'Out of Memory' (OOM) в Linux, механизм работы OOM killer, основные причины нехватки оперативной памяти и предоставляет конкретные пошаговые инструкции по диагностике, немедленному исправлению и профилактике проблемы.",[1138,1116,1139,1140,1141,343,1142],"ошибки linux","memory management","sysadmin","performance","monitoring","error","X2HzvnvYn7WOy3OVhIcLPPeFCXFQzL8wSC_33U6B0lQ",{"data":1146,"body":1147},{},{"type":1148,"children":1149},"root",[1150],{"type":1151,"tag":21,"props":1152,"children":1153},"element",{},[1154],{"type":62,"value":1087},{"data":1156,"body":1157},{},{"type":1148,"children":1158},[1159],{"type":1151,"tag":21,"props":1160,"children":1161},{},[1162,1164,1170],{"type":62,"value":1163},"Можно, но крайне не рекомендуется. Отключение (через ",{"type":1151,"tag":45,"props":1165,"children":1167},{"className":1166},[],[1168],{"type":62,"value":1169},"echo 0 > /proc/sys/vm/panic_on_oom",{"type":62,"value":1171},") приведёт к тому, что система зависнет при нехватке памяти, вместо того чтобы убить процесс. Лучше настроить параметры OOM или устранить причину нехватки памяти.",{"data":1173,"body":1174},{},{"type":1148,"children":1175},[1176],{"type":1151,"tag":21,"props":1177,"children":1178},{},[1179,1181,1187,1189,1195],{"type":62,"value":1180},"Поищите записи в системном журнале (journalctl). Команда ",{"type":1151,"tag":45,"props":1182,"children":1184},{"className":1183},[],[1185],{"type":62,"value":1186},"journalctl -k | grep -i \"killed process\"",{"type":62,"value":1188}," или ",{"type":1151,"tag":45,"props":1190,"children":1192},{"className":1191},[],[1193],{"type":62,"value":1194},"dmesg | grep -i oom",{"type":62,"value":1196}," покажет, какой процесс (с его PID и именем) был завершён и сколько памяти он потреблял.",{"data":1198,"body":1199},{},{"type":1148,"children":1200},[1201],{"type":1151,"tag":21,"props":1202,"children":1203},{},[1204],{"type":62,"value":1096},{"data":1206,"body":1207},{},{"type":1148,"children":1208},[1209],{"type":1151,"tag":21,"props":1210,"children":1211},{},[1212],{"type":62,"value":1100},{"data":1214,"body":1215},{},{"type":1148,"children":1216},[1217],{"type":1151,"tag":21,"props":1218,"children":1219},{},[1220],{"type":62,"value":1103},{"data":1222,"body":1223},{},{"type":1148,"children":1224},[1225],{"type":1151,"tag":21,"props":1226,"children":1227},{},[1228],{"type":62,"value":1106},{"data":1230,"body":1231},{},{"type":1148,"children":1232},[1233],{"type":1151,"tag":21,"props":1234,"children":1235},{},[1236,1238,1243,1245,1250],{"type":62,"value":1237},"Настройте ",{"type":1151,"tag":45,"props":1239,"children":1241},{"className":1240},[],[1242],{"type":62,"value":608},{"type":62,"value":1244}," для критичных процессов или измените политику переcommitting памяти (",{"type":1151,"tag":45,"props":1246,"children":1248},{"className":1247},[],[1249],{"type":62,"value":716},{"type":62,"value":415},{"data":1252,"body":1253},{},{"type":1148,"children":1254},[1255],{"type":1151,"tag":21,"props":1256,"children":1257},{},[1258],{"type":62,"value":1112},[1260,2219],{"id":1261,"title":1262,"appliesTo":1263,"author":11,"body":1268,"canonical":1076,"code":1278,"createdAt":2161,"description":2162,"difficulty":1080,"draft":1081,"estimatedTime":2163,"extension":1083,"faq":2164,"howToSteps":2177,"howToTotalTime":2190,"image":1076,"keywords":2191,"locale":1124,"meta":2202,"navigation":196,"path":1129,"platform":1127,"related":2203,"section":2207,"seo":2208,"severity":2209,"stem":2210,"summary":2211,"tags":2212,"twitterCreator":1076,"twitterSite":1076,"type":1143,"updatedAt":2161,"__hash__":2218},"content_ru/errors/linux/docker-oom-killed.md","Docker OOMKilled: причины и способы решения ошибки нехватки памяти",[1264,1265,1266,1267],"Docker Engine 20.10+","Docker Compose 1.29+","Ubuntu 20.04/22.04","CentOS 8/RHEL 8",{"type":13,"value":1269,"toc":2141},[1270,1274,1283,1294,1399,1402,1413,1415,1465,1469,1472,1480,1555,1561,1663,1677,1681,1684,1687,1694,1711,1716,1736,1740,1754,1757,1769,1773,1780,1816,1821,1840,1849,1853,1856,1870,1948,1956,1960,1963,2008,2010,2058,2060,2064,2075,2083,2107,2115,2138],[16,1271,1273],{"id":1272},"что-означает-ошибка-oomkilled","Что означает ошибка OOMKilled",[21,1275,23,1276,1279,1280,1282],{},[25,1277,1278],{},"OOMKilled"," (Out Of Memory Killed) возникает, когда ядро Linux принудительно завершает процесс в контейнере Docker из-за нехватки оперативной памяти (RAM). Это срабатывание механизма ",[25,1281,35],{}," (Out-Of-Memory killer).",[21,1284,1285,1286,1289,1290,1293],{},"Контейнер завершается с кодом выхода ",[25,1287,1288],{},"137"," (128 + 9, где 9 — сигнал ",[45,1291,1292],{},"SIGKILL","). В логах Docker вы увидите:",[57,1295,1297],{"className":149,"code":1296,"language":151,"meta":65,"style":65},"$ docker ps -a\nCONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS                     PORTS     NAMES\na1b2c3d4e5f6   my-app:latest  \"python app.py\"          2 hours ago    Exited (137) 5 minutes ago            my-app\n\n$ docker logs my-app\n... (логи приложения) ...\nKilled\n",[45,1298,1299,1313,1339,1365,1369,1380,1394],{"__ignoreMap":65},[155,1300,1301,1304,1307,1310],{"class":157,"line":158},[155,1302,1303],{"class":168},"$",[155,1305,1306],{"class":189}," docker",[155,1308,1309],{"class":189}," ps",[155,1311,1312],{"class":172}," -a\n",[155,1314,1315,1318,1321,1324,1327,1330,1333,1336],{"class":157,"line":165},[155,1316,1317],{"class":168},"CONTAINER",[155,1319,1320],{"class":189}," ID",[155,1322,1323],{"class":189},"   IMAGE",[155,1325,1326],{"class":189},"          COMMAND",[155,1328,1329],{"class":189},"                  CREATED",[155,1331,1332],{"class":189},"        STATUS",[155,1334,1335],{"class":189},"                     PORTS",[155,1337,1338],{"class":189},"     NAMES\n",[155,1340,1341,1344,1347,1350,1353,1356,1359,1362],{"class":157,"line":193},[155,1342,1343],{"class":168},"a1b2c3d4e5f6",[155,1345,1346],{"class":189},"   my-app:latest",[155,1348,1349],{"class":189},"  \"python app.py\"",[155,1351,1352],{"class":172},"          2",[155,1354,1355],{"class":189}," hours",[155,1357,1358],{"class":189}," ago",[155,1360,1361],{"class":189},"    Exited",[155,1363,1364],{"class":374}," (137) 5 minutes ago            my-app\n",[155,1366,1367],{"class":157,"line":200},[155,1368,197],{"emptyLinePlaceholder":196},[155,1370,1371,1373,1375,1377],{"class":157,"line":206},[155,1372,1303],{"class":168},[155,1374,1306],{"class":189},[155,1376,365],{"class":189},[155,1378,1379],{"class":189}," my-app\n",[155,1381,1382,1385,1388,1391],{"class":157,"line":280},[155,1383,1384],{"class":172},"...",[155,1386,1387],{"class":374}," (логи ",[155,1389,1390],{"class":189},"приложения",[155,1392,1393],{"class":374},") ...\n",[155,1395,1396],{"class":157,"line":285},[155,1397,1398],{"class":168},"Killed\n",[21,1400,1401],{},"Ошибка характерна для:",[887,1403,1404,1407,1410],{},[80,1405,1406],{},"Контейнеров с высоким потреблением памяти (базы данных, обработка данных, Java-приложения).",[80,1408,1409],{},"Систем с ограниченной RAM (например, облачные инстансы малого размера).",[80,1411,1412],{},"Сценариев, где несколько контейнеров конкурируют за память.",[16,1414,72],{"id":71},[77,1416,1417,1423,1432,1438,1444,1453],{},[80,1418,1419,1422],{},[25,1420,1421],{},"Недостаточный объём RAM на хосте",". Суммарное потребление памяти всеми контейнерами и системами превышает доступную физическую память.",[80,1424,1425,1428,1429,1431],{},[25,1426,1427],{},"Отсутствие лимитов памяти у контейнера",". Если не задать ",[45,1430,949],{},", контейнер может использовать всю свободную RAM хоста, что приведёт к OOM.",[80,1433,1434,1437],{},[25,1435,1436],{},"Утечки памяти в приложении",". Программа внутри контейнера постепенно потребляет всё больше памяти (например, из-за неосвобождения ресурсов).",[80,1439,1440,1443],{},[25,1441,1442],{},"Неправильно настроенный swap",". На хосте может быть недостаточно или отсутствовать swap-пространство, что ускоряет исчерпание RAM.",[80,1445,1446,1449,1450,1452],{},[25,1447,1448],{},"Агрессивные настройки OOM killer",". Ядро может убивать контейнеры с высоким ",[45,1451,613],{}," (по умолчанию у контейнеров он выше, чем у системных процессов).",[80,1454,1455,1458,1459,1461,1462,1464],{},[25,1456,1457],{},"Запуск контейнера без ограничений на memory-swap",". Если задан только ",[45,1460,949],{},", но не ",[45,1463,952],{},", контейнер может использовать swap, что иногда маскирует проблему, но приводит к деградации производительности.",[16,1466,1468],{"id":1467},"способ-1-настройка-лимитов-памяти-при-запуске-контейнера","Способ 1: Настройка лимитов памяти при запуске контейнера",[21,1470,1471],{},"Самый прямой способ — явно задать лимиты памяти для контейнера. Это предотвратит исчерпание памяти хоста и гарантирует, что контейнер не будет убит, пока не достигнет своего лимита.",[133,1473,1475,1476,1479],{"id":1474},"для-docker-run","Для ",[45,1477,1478],{},"docker run",":",[57,1481,1483],{"className":149,"code":1482,"language":151,"meta":65,"style":65},"docker run -d \\\n  --name my-app \\\n  --memory=512m \\          # жёсткий лимит RAM\n  --memory-swap=1g \\       # общий лимит (RAM + swap). Если не задать, то по умолчанию равно --memory.\n  --memory-reservation=256m \\ # мягкий лимит, который Docker пытается соблюдать\n  my-image:latest\n",[45,1484,1485,1498,1508,1519,1535,1550],{"__ignoreMap":65},[155,1486,1487,1489,1492,1495],{"class":157,"line":158},[155,1488,343],{"class":168},[155,1490,1491],{"class":189}," run",[155,1493,1494],{"class":172}," -d",[155,1496,1497],{"class":172}," \\\n",[155,1499,1500,1503,1506],{"class":157,"line":165},[155,1501,1502],{"class":172},"  --name",[155,1504,1505],{"class":189}," my-app",[155,1507,1497],{"class":172},[155,1509,1510,1513,1516],{"class":157,"line":193},[155,1511,1512],{"class":172},"  --memory=512m",[155,1514,1515],{"class":172}," \\ ",[155,1517,1518],{"class":161},"         # жёсткий лимит RAM\n",[155,1520,1521,1524,1527,1530,1532],{"class":157,"line":200},[155,1522,1523],{"class":374},"  --memory-swap",[155,1525,1526],{"class":176},"=",[155,1528,1529],{"class":189},"1g",[155,1531,1515],{"class":172},[155,1533,1534],{"class":161},"      # общий лимит (RAM + swap). Если не задать, то по умолчанию равно --memory.\n",[155,1536,1537,1540,1542,1545,1547],{"class":157,"line":206},[155,1538,1539],{"class":374},"  --memory-reservation",[155,1541,1526],{"class":176},[155,1543,1544],{"class":189},"256m",[155,1546,1515],{"class":172},[155,1548,1549],{"class":374},"# мягкий лимит, который Docker пытается соблюдать\n",[155,1551,1552],{"class":157,"line":280},[155,1553,1554],{"class":168},"  my-image:latest\n",[133,1556,1475,1558,1479],{"id":1557},"для-docker-composeyml",[45,1559,1560],{},"docker-compose.yml",[57,1562,1566],{"className":1563,"code":1564,"language":1565,"meta":65,"style":65},"language-yaml shiki shiki-themes github-light github-dark","version: '3.8'\nservices:\n  app:\n    image: my-image:latest\n    deploy:\n      resources:\n        limits:\n          memory: 512M\n          memory-swap: 1G\n        reservations:\n          memory: 256M\n","yaml",[45,1567,1568,1580,1588,1595,1605,1612,1619,1626,1636,1646,1653],{"__ignoreMap":65},[155,1569,1570,1574,1577],{"class":157,"line":158},[155,1571,1573],{"class":1572},"s9eBZ","version",[155,1575,1576],{"class":374},": ",[155,1578,1579],{"class":189},"'3.8'\n",[155,1581,1582,1585],{"class":157,"line":165},[155,1583,1584],{"class":1572},"services",[155,1586,1587],{"class":374},":\n",[155,1589,1590,1593],{"class":157,"line":193},[155,1591,1592],{"class":1572},"  app",[155,1594,1587],{"class":374},[155,1596,1597,1600,1602],{"class":157,"line":200},[155,1598,1599],{"class":1572},"    image",[155,1601,1576],{"class":374},[155,1603,1604],{"class":189},"my-image:latest\n",[155,1606,1607,1610],{"class":157,"line":206},[155,1608,1609],{"class":1572},"    deploy",[155,1611,1587],{"class":374},[155,1613,1614,1617],{"class":157,"line":280},[155,1615,1616],{"class":1572},"      resources",[155,1618,1587],{"class":374},[155,1620,1621,1624],{"class":157,"line":285},[155,1622,1623],{"class":1572},"        limits",[155,1625,1587],{"class":374},[155,1627,1628,1631,1633],{"class":157,"line":291},[155,1629,1630],{"class":1572},"          memory",[155,1632,1576],{"class":374},[155,1634,1635],{"class":189},"512M\n",[155,1637,1638,1641,1643],{"class":157,"line":303},[155,1639,1640],{"class":1572},"          memory-swap",[155,1642,1576],{"class":374},[155,1644,1645],{"class":189},"1G\n",[155,1647,1648,1651],{"class":157,"line":695},[155,1649,1650],{"class":1572},"        reservations",[155,1652,1587],{"class":374},[155,1654,1656,1658,1660],{"class":157,"line":1655},11,[155,1657,1630],{"class":1572},[155,1659,1576],{"class":374},[155,1661,1662],{"class":189},"256M\n",[1664,1665,1666],"blockquote",{},[21,1667,1668,1669,1672,1673,1676],{},"💡 ",[25,1670,1671],{},"Совет",": Начинайте с лимита, немного превышающего нормальное потребление приложения (можно узнать через ",[45,1674,1675],{},"docker stats","). Не устанавливайте лимит равным всей RAM хоста — оставьте память для системы и других процессов.",[16,1678,1680],{"id":1679},"способ-2-оптимизация-приложения-в-контейнере","Способ 2: Оптимизация приложения в контейнере",[21,1682,1683],{},"Если лимиты уже настроены, но контейнер всё равно получает OOM, нужно уменьшать потребление памяти самим приложением.",[133,1685,834],{"id":1686},"для-java-приложений",[21,1688,1689,1690,1693],{},"Настройте параметры JVM в ",[45,1691,1692],{},"Dockerfile"," или команде запуска:",[57,1695,1699],{"className":1696,"code":1697,"language":1698,"meta":65,"style":65},"language-dockerfile shiki shiki-themes github-light github-dark","ENV JAVA_OPTS=\"-Xmx256m -Xms128m\"\nCMD java $JAVA_OPTS -jar app.jar\n","dockerfile",[45,1700,1701,1706],{"__ignoreMap":65},[155,1702,1703],{"class":157,"line":158},[155,1704,1705],{},"ENV JAVA_OPTS=\"-Xmx256m -Xms128m\"\n",[155,1707,1708],{"class":157,"line":165},[155,1709,1710],{},"CMD java $JAVA_OPTS -jar app.jar\n",[21,1712,1713,1714,1479],{},"Или в ",[45,1715,1560],{},[57,1717,1719],{"className":1563,"code":1718,"language":1565,"meta":65,"style":65},"environment:\n  - JAVA_OPTS=-Xmx256m\n",[45,1720,1721,1728],{"__ignoreMap":65},[155,1722,1723,1726],{"class":157,"line":158},[155,1724,1725],{"class":1572},"environment",[155,1727,1587],{"class":374},[155,1729,1730,1733],{"class":157,"line":165},[155,1731,1732],{"class":374},"  - ",[155,1734,1735],{"class":189},"JAVA_OPTS=-Xmx256m\n",[133,1737,1739],{"id":1738},"для-pythonnodejs","Для Python/Node.js:",[887,1741,1742,1745,1751],{},[80,1743,1744],{},"Используйте стриминговую обработку больших файлов вместо загрузки в память.",[80,1746,1747,1748,415],{},"Уменьшите размер кэшей (например, в Django ",[45,1749,1750],{},"CACHES['default']['OPTIONS']['MAX_ENTRIES']",[80,1752,1753],{},"Обновите библиотеки — иногда утечки памяти исправляются в новых версиях.",[133,1755,879],{"id":1756},"для-веб-серверов-nginxapache",[887,1758,1759,1766],{},[80,1760,1761,1762,226,1764,396],{},"Уменьшите ",[45,1763,98],{},[45,1765,102],{},[80,1767,1768],{},"Настройте буферизацию.",[16,1770,1772],{"id":1771},"способ-3-настройка-oom-score-adjustment","Способ 3: Настройка OOM score adjustment",[21,1774,1775,1776,1779],{},"Вы можете влиять на приоритет контейнера при выборе жертвы OOM killer. Параметр ",[45,1777,1778],{},"--oom-score-adj"," (от -1000 до 1000) задаёт \"вес\" контейнера. Чем ниже значение, тем меньше шансов, что контейнер будет убит.",[57,1781,1783],{"className":149,"code":1782,"language":151,"meta":65,"style":65},"docker run -d \\\n  --name critical-app \\\n  --oom-score-adj=-500 \\\n  my-critical-image\n",[45,1784,1785,1795,1804,1811],{"__ignoreMap":65},[155,1786,1787,1789,1791,1793],{"class":157,"line":158},[155,1788,343],{"class":168},[155,1790,1491],{"class":189},[155,1792,1494],{"class":172},[155,1794,1497],{"class":172},[155,1796,1797,1799,1802],{"class":157,"line":165},[155,1798,1502],{"class":172},[155,1800,1801],{"class":189}," critical-app",[155,1803,1497],{"class":172},[155,1805,1806,1809],{"class":157,"line":193},[155,1807,1808],{"class":172},"  --oom-score-adj=-500",[155,1810,1497],{"class":172},[155,1812,1813],{"class":157,"line":200},[155,1814,1815],{"class":189},"  my-critical-image\n",[21,1817,1818],{},[25,1819,1820],{},"Как выбрать значение:",[887,1822,1823,1829,1834],{},[80,1824,1825,1828],{},[45,1826,1827],{},"-1000"," — максимальная защита (контейнер будет убит в последнюю очередь, но не гарантировано).",[80,1830,1831,1833],{},[45,1832,720],{}," — значение по умолчанию.",[80,1835,1836,1839],{},[45,1837,1838],{},"1000"," — максимальный приоритет на убийство (не рекомендуется).",[1664,1841,1842],{},[21,1843,1844,1845,1848],{},"⚠️ ",[25,1846,1847],{},"Важно",": Это не отменяет OOM killer, а лишь меняет порядок. Если память закончится, какой-то процесс всё равно будет убит.",[16,1850,1852],{"id":1851},"способ-4-увеличение-памяти-хоста-или-настройка-swap","Способ 4: Увеличение памяти хоста или настройка swap",[21,1854,1855],{},"Если проблема в нехватке ресурсов на уровне хоста:",[77,1857,1858,1864],{},[80,1859,1860,1863],{},[25,1861,1862],{},"Увеличьте RAM"," на виртуальной машине/сервере (например, в AWS измените тип инстанса).",[80,1865,1866,1869],{},[25,1867,1868],{},"Добавьте swap-пространство",", если его нет или оно мало:",[57,1871,1873],{"className":149,"code":1872,"language":151,"meta":65,"style":65},"# Проверьте текущий swap\nswapon --show\n\n# Создайте swap-файл 2 ГБ\nsudo fallocate -l 2G /swapfile\nsudo chmod 600 /swapfile\nsudo mkswap /swapfile\nsudo swapon /swapfile\n\n# Чтобы swap включался автоматически, добавьте в /etc/fstab:\n# /swapfile none swap sw 0 0\n",[45,1874,1875,1880,1888,1892,1897,1909,1919,1927,1935,1939,1944],{"__ignoreMap":65},[155,1876,1877],{"class":157,"line":158},[155,1878,1879],{"class":161},"# Проверьте текущий swap\n",[155,1881,1882,1885],{"class":157,"line":165},[155,1883,1884],{"class":168},"swapon",[155,1886,1887],{"class":172}," --show\n",[155,1889,1890],{"class":157,"line":193},[155,1891,197],{"emptyLinePlaceholder":196},[155,1893,1894],{"class":157,"line":200},[155,1895,1896],{"class":161},"# Создайте swap-файл 2 ГБ\n",[155,1898,1899,1901,1903,1905,1907],{"class":157,"line":206},[155,1900,254],{"class":168},[155,1902,532],{"class":189},[155,1904,535],{"class":172},[155,1906,538],{"class":189},[155,1908,541],{"class":189},[155,1910,1911,1913,1915,1917],{"class":157,"line":280},[155,1912,254],{"class":168},[155,1914,548],{"class":189},[155,1916,551],{"class":172},[155,1918,541],{"class":189},[155,1920,1921,1923,1925],{"class":157,"line":285},[155,1922,254],{"class":168},[155,1924,560],{"class":189},[155,1926,541],{"class":189},[155,1928,1929,1931,1933],{"class":157,"line":291},[155,1930,254],{"class":168},[155,1932,569],{"class":189},[155,1934,541],{"class":189},[155,1936,1937],{"class":157,"line":303},[155,1938,197],{"emptyLinePlaceholder":196},[155,1940,1941],{"class":157,"line":695},[155,1942,1943],{"class":161},"# Чтобы swap включался автоматически, добавьте в /etc/fstab:\n",[155,1945,1946],{"class":157,"line":1655},[155,1947,585],{"class":161},[1664,1949,1950],{},[21,1951,1844,1952,1955],{},[25,1953,1954],{},"Внимание",": Swap на SSD может ускорить износ диска. Используйте только если нет возможности добавить RAM.",[16,1957,1959],{"id":1958},"способ-5-мониторинг-и-автоматическое-реагирование","Способ 5: Мониторинг и автоматическое реагирование",[21,1961,1962],{},"Настройте мониторинг памяти и автоматические действия:",[887,1964,1965,1996,2002],{},[80,1966,1967,1972,1973],{},[25,1968,605,1969],{},[45,1970,1971],{},"docker events"," для отслеживания событий OOM:\n",[57,1974,1976],{"className":149,"code":1975,"language":151,"meta":65,"style":65},"docker events --filter 'event=die' --filter 'status=OOMKilled'\n",[45,1977,1978],{"__ignoreMap":65},[155,1979,1980,1982,1985,1988,1991,1993],{"class":157,"line":158},[155,1981,343],{"class":168},[155,1983,1984],{"class":189}," events",[155,1986,1987],{"class":172}," --filter",[155,1989,1990],{"class":189}," 'event=die'",[155,1992,1987],{"class":172},[155,1994,1995],{"class":189}," 'status=OOMKilled'\n",[80,1997,1998,2001],{},[25,1999,2000],{},"Интегрируйте с системами мониторинга"," (Prometheus + cAdvisor, Datadog). Настройте алерты при достижении 80-90% памяти.",[80,2003,2004,2007],{},[25,2005,2006],{},"Используйте оркестраторы"," (Kubernetes, Docker Swarm), которые могут автоматически перезапускать контейнеры и масштабироваться при нехватке ресурсов.",[16,2009,961],{"id":960},[77,2011,2012,2022,2031,2040,2046,2052],{},[80,2013,2014,2017,2018,226,2020,396],{},[25,2015,2016],{},"Всегда задавайте лимиты памяти"," для продакшн-контейнеров. Используйте ",[45,2019,949],{},[45,2021,952],{},[80,2023,2024,2027,2028,2030],{},[25,2025,2026],{},"Регулярно анализируйте потребление памяти"," через ",[45,2029,1675],{}," или мониторинг.",[80,2032,2033,2036,2037,2039],{},[25,2034,2035],{},"Тестируйте приложение под нагрузкой"," с ограниченной памятью (например, через ",[45,2038,1021],{}," внутри контейнера).",[80,2041,2042,2045],{},[25,2043,2044],{},"Настройте health checks"," в Docker Compose/Kubernetes, чтобы быстро обнаруживать падение из-за OOM.",[80,2047,2048,2051],{},[25,2049,2050],{},"Избегайте запуска нескольких memory-intensive контейнеров на одном хосте"," без должного контроля.",[80,2053,2054,2057],{},[25,2055,2056],{},"Обновляйте ядро и Docker"," — новые версии улучшают управление памятью и OOM killer.",[1033,2059],{},[16,2061,2063],{"id":2062},"faq","FAQ",[21,2065,2066,2069,2071,2072,2074],{},[25,2067,2068],{},"Можно ли полностью отключить OOM killer для контейнера?",[220,2070],{},"\nНет, OOM killer — это механизм ядра Linux. Вы можете только уменьшить ",[45,2073,613],{}," контейнера или увеличить лимиты памяти, чтобы избежать срабатывания.",[21,2076,2077,2080,2082],{},[25,2078,2079],{},"Почему контейнер с лимитом памяти всё равно получает OOMKilled?",[220,2081],{},"\nЕсли лимит задан, контейнер должен быть остановлен Docker до достижения лимита (с кодом 137). Но если лимит не задан, контейнер может использовать всю RAM хоста, и тогда OOM killer ядра его убьёт. Проверьте, что лимит установлен корректно.",[21,2084,2085,2088,2090,2091,2094,2095,48,2098,48,2100,2103,2104,396],{},[25,2086,2087],{},"Как диагностировать, какое приложение в контейнере потребляет много памяти?",[220,2089],{},"\nВойдите в контейнер (",[45,2092,2093],{},"docker exec -it \u003Ccontainer> bash",") и используйте утилиты: ",[45,2096,2097],{},"top",[45,2099,414],{},[45,2101,2102],{},"ps aux --sort=-%mem",". Для Java-приложений используйте ",[45,2105,2106],{},"jcmd \u003Cpid> VM.native_memory summary",[21,2108,2109,2112,2114],{},[25,2110,2111],{},"Что делать, если приложение не может работать в заданных лимитах памяти?",[220,2113],{},"\nОптимизируйте код, увеличьте лимит (если есть запас на хосте) или пересмотрите архитектуру: разделите монолит на микросервисы, вынесите тяжёлые операции в отдельные контейнеры с большими лимитами.",[21,2116,2117,2126,2128,2129,2131,2132,2135,2136,396],{},[25,2118,2119,2120,2122,2123,2125],{},"Правильно ли задавать ",[45,2121,952],{}," в 2x от ",[45,2124,949],{},"?",[220,2127],{},"\nНе всегда. Если приложение не использует swap (например, базы данных), то задание ",[45,2130,952],{}," может привести к неожиданному использованию swap и падению производительности. Для таких приложений лучше отключить swap (",[45,2133,2134],{},"--memory-swap=-1",") или оставить равным ",[45,2137,949],{},[1061,2139,2140],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":65,"searchDepth":165,"depth":165,"links":2142},[2143,2144,2145,2151,2156,2157,2158,2159,2160],{"id":1272,"depth":165,"text":1273},{"id":71,"depth":165,"text":72},{"id":1467,"depth":165,"text":1468,"children":2146},[2147,2149],{"id":1474,"depth":193,"text":2148},"Для docker run:",{"id":1557,"depth":193,"text":2150},"Для docker-compose.yml:",{"id":1679,"depth":165,"text":1680,"children":2152},[2153,2154,2155],{"id":1686,"depth":193,"text":834},{"id":1738,"depth":193,"text":1739},{"id":1756,"depth":193,"text":879},{"id":1771,"depth":165,"text":1772},{"id":1851,"depth":165,"text":1852},{"id":1958,"depth":165,"text":1959},{"id":960,"depth":165,"text":961},{"id":2062,"depth":165,"text":2063},"2026-02-16 20:38:19","Контейнер Docker завершается с ошибкой OOMKilled? Узнайте, как диагностировать нехватку памяти, настроить лимиты и оптимизировать приложение. Пошаговые решения для Linux.","10-15 мин",[2165,2168,2171,2174],{"question":2166,"answer":2167},"Что означает ошибка OOMKilled в Docker?","Ошибка OOMKilled означает, что ядро Linux принудительно завершило контейнер из-за нехватки оперативной памяти (OOM killer). Контейнер получает сигнал SIGKILL и останавливается.",{"question":2169,"answer":2170},"Как проверить, что контейнер убит из-за OOM?","Выполните `docker ps -a` и посмотрите статус контейнера. Если он `Exited (137)`, это скорее всего OOM. Также проверьте логи: `docker logs \u003Ccontainer_name>` — там может быть упоминание 'Killed' или 'OOM'.",{"question":2172,"answer":2173},"Можно ли отключить OOM killer для контейнера?","Полностью отключить нельзя, но можно настроить `--oom-score-adj` (от -1000 до 1000) чтобы снизить вероятность убийства контейнера, или увеличить лимиты памяти.",{"question":2175,"answer":2176},"Чем OOMKilled отличается от ошибки 137?","Код выхода 137 (128+9) означает, что контейнер получил сигнал SIGKILL (9). В контексте Docker это обычно результат работы OOM killer, но может быть и ручная остановка через `docker kill`.",[2178,2181,2184,2187],{"name":2179,"text":2180},"Определите потребление памяти контейнера","Запустите `docker stats` чтобы увидеть текущее использование памяти. Обратите внимание на `MEM USAGE` и `MEM %`. Если контейнер использует память близко к лимиту (если он установлен) или близко к общей памяти хоста — причина в OOM.",{"name":2182,"text":2183},"Настройте лимит памяти для контейнера","При запуске контейнера укажите лимит через `--memory` и `--memory-swap`. Например: `docker run -d --name app --memory=512m --memory-swap=1g my-image`. Это предотвратит исчерпание памяти хоста.",{"name":2185,"text":2186},"Оптимизируйте приложение в контейнере","Уменьшите потребление памяти приложением: настройте JVM (если Java), уменьшите кэши, используйте стриминговую обработку данных. Пересмотрите архитектуру: возможно, нужно разделить сервис на несколько контейнеров.",{"name":2188,"text":2189},"Настройте OOM score adjustment","Запустите контейнер с параметром `--oom-score-adj=-500` (значение от -1000 до 1000). Чем меньше число, тем ниже шансы, что контейнер будет убит при нехватке памяти. Пример: `docker run -d --oom-score-adj=-500 my-image`.","PT15M",[2192,2193,2194,2195,2196,2197,2198,2199,2200,2201],"docker oomkilled","контейнер docker убит oom","docker out of memory error","ошибка 137 docker","как исправить oomkilled","лимиты памяти docker","oom killer docker linux","контейнер завершается из-за памяти","docker memory limit установить","oomkilled в docker compose",{},[2204,2205,2206],"/errors/linux/docker-container-exited","/guides/linux/docker-memory-limits","/errors/linux/docker-no-space-left-on-device","Ошибки Docker",{"title":1262,"description":2162},"high","errors/linux/docker-oom-killed","Ошибка OOMKilled в Docker возникает, когда контейнеру не хватает оперативной памяти. Статья объясняет причины и предоставляет проверенные способы решения: от настройки лимитов памяти до оптимизации приложения.",[343,2213,2214,1127,2215,2216,2217],"oom","ошибки","memory","контейнеры","k8s","b1PfoAMw_WQsX9oxz0m64QotKDzxhWGsR_kwyCZS85s",{"id":2220,"title":2221,"appliesTo":2222,"author":11,"body":2228,"canonical":1076,"code":1076,"createdAt":3400,"description":3401,"difficulty":1080,"draft":1081,"estimatedTime":2163,"extension":1083,"faq":3402,"howToSteps":3415,"howToTotalTime":2190,"image":1076,"keywords":3434,"locale":1124,"meta":3443,"navigation":196,"path":1130,"platform":1127,"related":3444,"section":3448,"seo":3449,"severity":1076,"stem":3450,"summary":3451,"tags":3452,"twitterCreator":1076,"twitterSite":1076,"type":3456,"updatedAt":3400,"__hash__":3457},"content_ru/guides/linux/monitor-memory-usage.md","Мониторинг использования памяти в Linux: подробное руководство",[2223,2224,2225,2226,2227],"Ubuntu 20.04+","CentOS 7+","Debian 10+","Fedora 35+","Арбитранные дистрибутивы с systemd",{"type":13,"value":2229,"toc":3362},[2230,2234,2241,2245,2251,2254,2266,2269,2275,2280,2328,2345,2354,2361,2369,2374,2406,2413,2425,2428,2435,2447,2450,2457,2463,2483,2487,2490,2510,2514,2521,2524,2570,2599,2606,2608,2626,2629,2638,2641,2656,2662,2666,2670,2725,2729,2760,2764,2768,2774,2900,2910,2916,2922,2927,2948,2951,2982,2984,2988,3106,3110,3114,3143,3147,3289,3293,3306,3310,3331,3349,3359],[16,2231,2233],{"id":2232},"введение","Введение",[21,2235,2236,2237,2240],{},"Эффективный мониторинг оперативной памяти (RAM) — ключевой навык для администратора Linux и разработчика, работающего с серверами. Некорректное использование памяти приводит к замедлению системы, ошибкам ",[45,2238,2239],{},"OOM Killer"," и аварийным перезагрузкам. В этом гайде вы узнаете, как с помощью встроенных и сторонних инструментов получить точную информацию о состоянии памяти, интерпретировать её и принимать обоснованные решения.",[16,2242,2244],{"id":2243},"основные-команды-для-быстрого-просмотра","Основные команды для быстрого просмотра",[133,2246,2248,2250],{"id":2247},"free-общая-статистика",[45,2249,294],{},": общая статистика",[21,2252,2253],{},"Самый простой способ получить сводку:",[57,2255,2257],{"className":149,"code":2256,"language":151,"meta":65,"style":65},"free -h\n",[45,2258,2259],{"__ignoreMap":65},[155,2260,2261,2263],{"class":157,"line":158},[155,2262,294],{"class":168},[155,2264,2265],{"class":172}," -h\n",[21,2267,2268],{},"Пример вывода:",[57,2270,2273],{"className":2271,"code":2272,"language":62},[60],"              total        used        free      shared  buff/cache   available\nMem:           7.7G        1.2G        5.1G        156M        1.4G        6.1G\nSwap:          2.0G          0B        2.0G\n",[45,2274,2272],{"__ignoreMap":65},[21,2276,2277],{},[25,2278,2279],{},"Ключевые столбцы:",[887,2281,2282,2290,2301,2308,2316],{},[80,2283,2284,2289],{},[25,2285,2286],{},[45,2287,2288],{},"total"," — общий объём.",[80,2291,2292,2297,2298],{},[25,2293,2294],{},[45,2295,2296],{},"used"," — utilised memory (приложения + кэши). ",[25,2299,2300],{},"Не путать с реальным потреблением!",[80,2302,2303,2307],{},[25,2304,2305],{},[45,2306,294],{}," — полностью неиспользуемая память (в Linux это значение часто мало).",[80,2309,2310,2315],{},[25,2311,2312],{},[45,2313,2314],{},"buff/cache"," — память, занятая кэшем диска и буферами.",[80,2317,2318,2323,2324,2327],{},[25,2319,2320],{},[45,2321,2322],{},"available"," — ",[25,2325,2326],{},"самый важный показатель",". Оценка памяти, доступной для новых процессов без своппинга.",[1664,2329,2330],{},[21,2331,1668,2332,2335,2336,2338,2339,2341,2342,2344],{},[25,2333,2334],{},"Совет:"," Всегда смотрите на ",[45,2337,2322],{},", а не на ",[45,2340,294],{},". Высокий ",[45,2343,2314],{}," — это нормально и полезно.",[133,2346,2348,2350,2351,2353],{"id":2347},"top-htop-мониторинг-в-реальном-времени",[45,2349,2097],{}," / ",[45,2352,414],{},": мониторинг в реальном времени",[21,2355,2356,2358,2359,396],{},[45,2357,2097],{}," есть в любой системе. Для более удобного интерфейса установите ",[45,2360,414],{},[57,2362,2363],{"className":149,"code":277,"language":151,"meta":65,"style":65},[45,2364,2365],{"__ignoreMap":65},[155,2366,2367],{"class":157,"line":158},[155,2368,277],{"class":168},[21,2370,2371,2372,1479],{},"В ",[45,2373,414],{},[887,2375,2376,2393,2400],{},[80,2377,2378,2379,2384,2385,2388,2389,2392],{},"Нажмите ",[25,2380,2381],{},[45,2382,2383],{},"F6"," → выберите сортировку по ",[45,2386,2387],{},"%MEM"," (процент от общей RAM) или ",[45,2390,2391],{},"RES"," (физическая память в KiB).",[80,2394,2395,2396,2399],{},"Столбец ",[45,2397,2398],{},"VIRT"," — виртуальная память (включая разделяемые библиотеки, своп).",[80,2401,2395,2402,2405],{},[45,2403,2404],{},"SHR"," — разделяемая память (например, общие библиотеки).",[133,2407,2409,2412],{"id":2408},"vmstat-сводка-по-виртуальной-памяти",[45,2410,2411],{},"vmstat",": сводка по виртуальной памяти",[57,2414,2416],{"className":149,"code":2415,"language":151,"meta":65,"style":65},"vmstat -s\n",[45,2417,2418],{"__ignoreMap":65},[155,2419,2420,2422],{"class":157,"line":158},[155,2421,2411],{"class":168},[155,2423,2424],{"class":172}," -s\n",[21,2426,2427],{},"Покажет детальную статистику, включая количество своп-ин и аут.",[133,2429,2431,2434],{"id":2430},"procmeminfo-сырые-данные-от-ядра",[45,2432,2433],{},"/proc/meminfo",": «сырые» данные от ядра",[57,2436,2438],{"className":149,"code":2437,"language":151,"meta":65,"style":65},"cat /proc/meminfo\n",[45,2439,2440],{"__ignoreMap":65},[155,2441,2442,2444],{"class":157,"line":158},[155,2443,633],{"class":168},[155,2445,2446],{"class":189}," /proc/meminfo\n",[21,2448,2449],{},"Это источник для всех вышеперечисленных утилит. Полезно для скриптов.",[133,2451,2453,2456],{"id":2452},"sar-исторические-данные-требует-настройки",[45,2454,2455],{},"sar",": исторические данные (требует настройки)",[21,2458,2459,2460,1479],{},"Если установлен пакет ",[45,2461,2462],{},"sysstat",[57,2464,2466],{"className":149,"code":2465,"language":151,"meta":65,"style":65},"sar -r 1 3  # каждую секунду, 3 раза\n",[45,2467,2468],{"__ignoreMap":65},[155,2469,2470,2472,2475,2478,2480],{"class":157,"line":158},[155,2471,2455],{"class":168},[155,2473,2474],{"class":172}," -r",[155,2476,2477],{"class":172}," 1",[155,2479,492],{"class":172},[155,2481,2482],{"class":161},"  # каждую секунду, 3 раза\n",[16,2484,2486],{"id":2485},"графические-утилиты","Графические утилиты",[21,2488,2489],{},"Для рабочих станций с GUI:",[887,2491,2492,2501],{},[80,2493,2494,230,2497,2500],{},[25,2495,2496],{},"GNOME System Monitor",[45,2498,2499],{},"gnome-system-monitor","): вкладка «Ресурсы» показывает графики памяти и свопа.",[80,2502,2503,230,2506,2509],{},[25,2504,2505],{},"KDE System Guard",[45,2507,2508],{},"ksysguard","): аналогичен, с возможностью добавления датчиков.",[16,2511,2513],{"id":2512},"расширенные-инструменты","Расширенные инструменты",[133,2515,2517,2520],{"id":2516},"nmon-мощный-мониторинг-в-одном-окне",[45,2518,2519],{},"nmon"," — мощный мониторинг в одном окне",[21,2522,2523],{},"Установка:",[57,2525,2527],{"className":149,"code":2526,"language":151,"meta":65,"style":65},"# Ubuntu/Debian\nsudo apt install nmon\n\n# RHEL/CentOS/Fedora\nsudo yum install nmon  # или dnf\n",[45,2528,2529,2534,2546,2550,2555],{"__ignoreMap":65},[155,2530,2531],{"class":157,"line":158},[155,2532,2533],{"class":161},"# Ubuntu/Debian\n",[155,2535,2536,2538,2541,2543],{"class":157,"line":165},[155,2537,254],{"class":168},[155,2539,2540],{"class":189}," apt",[155,2542,260],{"class":189},[155,2544,2545],{"class":189}," nmon\n",[155,2547,2548],{"class":157,"line":193},[155,2549,197],{"emptyLinePlaceholder":196},[155,2551,2552],{"class":157,"line":200},[155,2553,2554],{"class":161},"# RHEL/CentOS/Fedora\n",[155,2556,2557,2559,2562,2564,2567],{"class":157,"line":206},[155,2558,254],{"class":168},[155,2560,2561],{"class":189}," yum",[155,2563,260],{"class":189},[155,2565,2566],{"class":189}," nmon",[155,2568,2569],{"class":161},"  # или dnf\n",[21,2571,2572,2573,2575,2576,2581,2582,2587,2588,2592,2593,2598],{},"Запуск: ",[45,2574,2519],{},". Нажмите ",[25,2577,2578],{},[45,2579,2580],{},"m"," для memory-графиков, ",[25,2583,2584],{},[45,2585,2586],{},"c"," для CPU, ",[25,2589,2590],{},[45,2591,375],{}," для диска. ",[25,2594,2595],{},[45,2596,2597],{},"q"," — выход.",[133,2600,2602,2605],{"id":2601},"glances-кросс-платформенный-монитор-с-веб-интерфейсом",[45,2603,2604],{},"glances"," — кросс-платформенный монитор с веб-интерфейсом",[21,2607,2523],{},[57,2609,2611],{"className":149,"code":2610,"language":151,"meta":65,"style":65},"pip3 install glances  # требует Python\n",[45,2612,2613],{"__ignoreMap":65},[155,2614,2615,2618,2620,2623],{"class":157,"line":158},[155,2616,2617],{"class":168},"pip3",[155,2619,260],{"class":189},[155,2621,2622],{"class":189}," glances",[155,2624,2625],{"class":161},"  # требует Python\n",[21,2627,2628],{},"Запуск:",[57,2630,2632],{"className":149,"code":2631,"language":151,"meta":65,"style":65},"glances\n",[45,2633,2634],{"__ignoreMap":65},[155,2635,2636],{"class":157,"line":158},[155,2637,2631],{"class":168},[21,2639,2640],{},"Для удалённого мониторинга:",[57,2642,2644],{"className":149,"code":2643,"language":151,"meta":65,"style":65},"glances -w  # запускает веб-сервер на порту 61208\n",[45,2645,2646],{"__ignoreMap":65},[155,2647,2648,2650,2653],{"class":157,"line":158},[155,2649,2604],{"class":168},[155,2651,2652],{"class":172}," -w",[155,2654,2655],{"class":161},"  # запускает веб-сервер на порту 61208\n",[21,2657,2658,2659,396],{},"Затем откройте в браузере ",[45,2660,2661],{},"http://\u003Cваш_сервер>:61208",[16,2663,2665],{"id":2664},"как-интерпретировать-показатели","Как интерпретировать показатели",[133,2667,2669],{"id":2668},"распространённые-ошибки-новичков","Распространённые ошибки новичков",[77,2671,2672,2683,2704,2712],{},[80,2673,2674,2680,2681,396],{},[25,2675,2676,2677,2679],{},"Свободная память (",[45,2678,294],{},") близка к нулю"," — это нормально. Linux использует RAM для кэша. Смотрите на ",[45,2682,2322],{},[80,2684,2685,2692,2693,2696,2697,2700,2701,2703],{},[25,2686,2687,2688,2691],{},"Своп (",[45,2689,2690],{},"swap",") активно используется"," — если ",[45,2694,2695],{},"si","/",[45,2698,2699],{},"so"," в ",[45,2702,2411],{}," постоянно не ноль, система активно своппит. Это признак нехватки RAM.",[80,2705,2706,2711],{},[25,2707,2708,2709],{},"Высокий ",[45,2710,2314],{}," — не проблема. Система освободит эту память, если процессу понадобится.",[80,2713,2714,2721,2722,2724],{},[25,2715,2716,2718,2719],{},[45,2717,2391],{}," процесса больше, чем ",[45,2720,2398],{}," — обычно невозможно. Проверьте, не дублируется ли процесс в ",[45,2723,2097],{}," (например, потоки).",[133,2726,2728],{"id":2727},"тревожные-сигналы","Тревожные сигналы",[887,2730,2731,2738,2748],{},[80,2732,2733,2735,2736,396],{},[45,2734,2322],{}," \u003C 10% от ",[45,2737,2288],{},[80,2739,2740,2741,2696,2743,2745,2746,396],{},"Постоянный ",[45,2742,2695],{},[45,2744,2699],{}," > 0 в ",[45,2747,2411],{},[80,2749,2750,2751,2700,2754,2756,2757,415],{},"Частые сообщения ",[45,2752,2753],{},"Out of memory",[45,2755,209],{}," или логах (",[45,2758,2759],{},"journalctl -k | grep -i oom",[16,2761,2763],{"id":2762},"автоматизация-мониторинга","Автоматизация мониторинга",[133,2765,2767],{"id":2766},"простой-скрипт-для-отправки-предупреждений","Простой скрипт для отправки предупреждений",[21,2769,2770,2771,1479],{},"Создайте ",[45,2772,2773],{},"/usr/local/bin/memory_alert.sh",[57,2775,2777],{"className":149,"code":2776,"language":151,"meta":65,"style":65},"#!/bin/bash\nTHRESHOLD=90  # процент\nCURRENT=$(free | awk '/Mem:/ {printf(\"%.0f\"), $3/$2 * 100}')\nif [ \"$CURRENT\" -ge \"$THRESHOLD\" ]; then\n    echo \"Внимание: использование памяти ${CURRENT}% (порог ${THRESHOLD}%)\" | \\\n    mail -s \"Алерт: память на $(hostname)\" admin@example.com\nfi\n",[45,2778,2779,2784,2797,2820,2853,2875,2895],{"__ignoreMap":65},[155,2780,2781],{"class":157,"line":158},[155,2782,2783],{"class":161},"#!/bin/bash\n",[155,2785,2786,2789,2791,2794],{"class":157,"line":165},[155,2787,2788],{"class":374},"THRESHOLD",[155,2790,1526],{"class":176},[155,2792,2793],{"class":189},"90",[155,2795,2796],{"class":161},"  # процент\n",[155,2798,2799,2802,2804,2807,2809,2811,2814,2817],{"class":157,"line":193},[155,2800,2801],{"class":374},"CURRENT",[155,2803,1526],{"class":176},[155,2805,2806],{"class":374},"$(",[155,2808,294],{"class":168},[155,2810,177],{"class":176},[155,2812,2813],{"class":168}," awk",[155,2815,2816],{"class":189}," '/Mem:/ {printf(\"%.0f\"), $3/$2 * 100}'",[155,2818,2819],{"class":374},")\n",[155,2821,2822,2825,2828,2831,2834,2836,2839,2842,2845,2847,2850],{"class":157,"line":200},[155,2823,2824],{"class":176},"if",[155,2826,2827],{"class":374}," [ ",[155,2829,2830],{"class":189},"\"",[155,2832,2833],{"class":374},"$CURRENT",[155,2835,2830],{"class":189},[155,2837,2838],{"class":176}," -ge",[155,2840,2841],{"class":189}," \"",[155,2843,2844],{"class":374},"$THRESHOLD",[155,2846,2830],{"class":189},[155,2848,2849],{"class":374}," ]; ",[155,2851,2852],{"class":176},"then\n",[155,2854,2855,2858,2861,2863,2866,2868,2871,2873],{"class":157,"line":206},[155,2856,2857],{"class":172},"    echo",[155,2859,2860],{"class":189}," \"Внимание: использование памяти ${",[155,2862,2801],{"class":374},[155,2864,2865],{"class":189},"}% (порог ${",[155,2867,2788],{"class":374},[155,2869,2870],{"class":189},"}%)\"",[155,2872,177],{"class":176},[155,2874,1497],{"class":172},[155,2876,2877,2880,2883,2886,2889,2892],{"class":157,"line":280},[155,2878,2879],{"class":168},"    mail",[155,2881,2882],{"class":172}," -s",[155,2884,2885],{"class":189}," \"Алерт: память на $(",[155,2887,2888],{"class":168},"hostname",[155,2890,2891],{"class":189},")\"",[155,2893,2894],{"class":189}," admin@example.com\n",[155,2896,2897],{"class":157,"line":285},[155,2898,2899],{"class":176},"fi\n",[21,2901,2902,2903,230,2906,2909],{},"Добавьте в ",[45,2904,2905],{},"crontab",[45,2907,2908],{},"crontab -e","):",[57,2911,2914],{"className":2912,"code":2913,"language":62},[60],"*/5 * * * * /usr/local/bin/memory_alert.sh\n",[45,2915,2913],{"__ignoreMap":65},[133,2917,2919,2920],{"id":2918},"логирование-через-sar","Логирование через ",[45,2921,2455],{},[21,2923,1237,2924,2926],{},[45,2925,2462],{}," (в большинстве дистрибутивов уже установлен):",[57,2928,2930],{"className":149,"code":2929,"language":151,"meta":65,"style":65},"sudo systemctl enable --now sysstat\n",[45,2931,2932],{"__ignoreMap":65},[155,2933,2934,2936,2939,2942,2945],{"class":157,"line":158},[155,2935,254],{"class":168},[155,2937,2938],{"class":189}," systemctl",[155,2940,2941],{"class":189}," enable",[155,2943,2944],{"class":172}," --now",[155,2946,2947],{"class":189}," sysstat\n",[21,2949,2950],{},"Данные будут собираться каждые 10 минут. Просмотр:",[57,2952,2954],{"className":149,"code":2953,"language":151,"meta":65,"style":65},"sar -r -f /var/log/sa/sa$(date +%d)  # за сегодня\n",[45,2955,2956],{"__ignoreMap":65},[155,2957,2958,2960,2962,2965,2968,2970,2973,2976,2979],{"class":157,"line":158},[155,2959,2455],{"class":168},[155,2961,2474],{"class":172},[155,2963,2964],{"class":172}," -f",[155,2966,2967],{"class":189}," /var/log/sa/sa",[155,2969,2806],{"class":374},[155,2971,2972],{"class":168},"date",[155,2974,2975],{"class":189}," +%d",[155,2977,2978],{"class":374},")  ",[155,2980,2981],{"class":161},"# за сегодня\n",[1033,2983],{},[16,2985,2987],{"id":2986},"сравнение-инструментов","Сравнение инструментов",[2989,2990,2991,3010],"table",{},[2992,2993,2994],"thead",{},[2995,2996,2997,3001,3004,3007],"tr",{},[2998,2999,3000],"th",{},"Инструмент",[2998,3002,3003],{},"Плюсы",[2998,3005,3006],{},"Минусы",[2998,3008,3009],{},"Когда использовать",[3011,3012,3013,3029,3046,3061,3076,3091],"tbody",{},[2995,3014,3015,3020,3023,3026],{},[3016,3017,3018],"td",{},[45,3019,294],{},[3016,3021,3022],{},"Простота, есть везде",[3016,3024,3025],{},"Нет детализации по процессам",[3016,3027,3028],{},"Быстрая проверка в скриптах",[2995,3030,3031,3037,3040,3043],{},[3016,3032,3033,2696,3035],{},[45,3034,2097],{},[45,3036,414],{},[3016,3038,3039],{},"Интерактив, сортировка",[3016,3041,3042],{},"Только снимок на момент запуска",[3016,3044,3045],{},"Поиск «прожорливых» процессов",[2995,3047,3048,3052,3055,3058],{},[3016,3049,3050],{},[45,3051,2411],{},[3016,3053,3054],{},"Сводка по свопу, CPU",[3016,3056,3057],{},"Мало деталей по памяти",[3016,3059,3060],{},"Общая оценка нагрузки",[2995,3062,3063,3067,3070,3073],{},[3016,3064,3065],{},[45,3066,2455],{},[3016,3068,3069],{},"История, автоматический сбор",[3016,3071,3072],{},"Требует настройки",[3016,3074,3075],{},"Анализ трендов, пост-мортем",[2995,3077,3078,3082,3085,3088],{},[3016,3079,3080],{},[45,3081,2519],{},[3016,3083,3084],{},"Графики, все метрики в одном",[3016,3086,3087],{},"Только консольный, сложный UI",[3016,3089,3090],{},"Глубокий анализ в реальном времени",[2995,3092,3093,3097,3100,3103],{},[3016,3094,3095],{},[45,3096,2604],{},[3016,3098,3099],{},"Веб-интерфейс, кросс-платформа",[3016,3101,3102],{},"Требует Python, больше ресурсов",[3016,3104,3105],{},"Удалённый мониторинг нескольких серверов",[16,3107,3109],{"id":3108},"дополнительные-возможности","Дополнительные возможности",[133,3111,3113],{"id":3112},"мониторинг-памяти-конкретного-процесса","Мониторинг памяти конкретного процесса",[57,3115,3117],{"className":149,"code":3116,"language":151,"meta":65,"style":65},"# Узнать, сколько памяти использует процесс с PID 1234\npmap -x 1234 | tail -1\n",[45,3118,3119,3124],{"__ignoreMap":65},[155,3120,3121],{"class":157,"line":158},[155,3122,3123],{"class":161},"# Узнать, сколько памяти использует процесс с PID 1234\n",[155,3125,3126,3129,3132,3135,3137,3140],{"class":157,"line":165},[155,3127,3128],{"class":168},"pmap",[155,3130,3131],{"class":172}," -x",[155,3133,3134],{"class":172}," 1234",[155,3136,177],{"class":176},[155,3138,3139],{"class":168}," tail",[155,3141,3142],{"class":172}," -1\n",[133,3144,3146],{"id":3145},"поиск-процессов-использующих-своп","Поиск процессов, использующих своп",[57,3148,3150],{"className":149,"code":3149,"language":151,"meta":65,"style":65},"for pid in $(ls /proc | grep '^[0-9]'); do\n    swap=$(grep VmSwap /proc/$pid/smaps 2>/dev/null | awk '{sum+=$2} END {print sum}')\n    if [ \"$swap\" -gt 0 ]; then\n        echo \"PID $pid использует ${swap}KiB свопа: $(ps -p $pid -o comm=)\"\n    fi\ndone\n",[45,3151,3152,3185,3223,3247,3279,3284],{"__ignoreMap":65},[155,3153,3154,3157,3160,3163,3166,3169,3172,3174,3176,3179,3182],{"class":157,"line":158},[155,3155,3156],{"class":176},"for",[155,3158,3159],{"class":374}," pid ",[155,3161,3162],{"class":176},"in",[155,3164,3165],{"class":374}," $(",[155,3167,3168],{"class":168},"ls",[155,3170,3171],{"class":189}," /proc",[155,3173,177],{"class":176},[155,3175,180],{"class":168},[155,3177,3178],{"class":189}," '^[0-9]'",[155,3180,3181],{"class":374},"); ",[155,3183,3184],{"class":176},"do\n",[155,3186,3187,3190,3192,3194,3197,3200,3202,3205,3208,3211,3214,3216,3218,3221],{"class":157,"line":165},[155,3188,3189],{"class":374},"    swap",[155,3191,1526],{"class":176},[155,3193,2806],{"class":374},[155,3195,3196],{"class":168},"grep",[155,3198,3199],{"class":189}," VmSwap",[155,3201,636],{"class":189},[155,3203,3204],{"class":374},"$pid",[155,3206,3207],{"class":189},"/smaps",[155,3209,3210],{"class":176}," 2>",[155,3212,3213],{"class":189},"/dev/null",[155,3215,177],{"class":176},[155,3217,2813],{"class":168},[155,3219,3220],{"class":189}," '{sum+=$2} END {print sum}'",[155,3222,2819],{"class":374},[155,3224,3225,3228,3230,3232,3235,3237,3240,3243,3245],{"class":157,"line":193},[155,3226,3227],{"class":176},"    if",[155,3229,2827],{"class":374},[155,3231,2830],{"class":189},[155,3233,3234],{"class":374},"$swap",[155,3236,2830],{"class":189},[155,3238,3239],{"class":176}," -gt",[155,3241,3242],{"class":172}," 0",[155,3244,2849],{"class":374},[155,3246,2852],{"class":176},[155,3248,3249,3252,3255,3257,3260,3262,3265,3267,3270,3273,3276],{"class":157,"line":200},[155,3250,3251],{"class":172},"        echo",[155,3253,3254],{"class":189}," \"PID ",[155,3256,3204],{"class":374},[155,3258,3259],{"class":189}," использует ${",[155,3261,2690],{"class":374},[155,3263,3264],{"class":189},"}KiB свопа: $(",[155,3266,306],{"class":168},[155,3268,3269],{"class":172}," -p",[155,3271,3272],{"class":374}," $pid",[155,3274,3275],{"class":172}," -o",[155,3277,3278],{"class":189}," comm=)\"\n",[155,3280,3281],{"class":157,"line":206},[155,3282,3283],{"class":176},"    fi\n",[155,3285,3286],{"class":157,"line":280},[155,3287,3288],{"class":176},"done\n",[133,3290,3292],{"id":3291},"проверка-фрагментации-памяти-только-для-numa-систем","Проверка фрагментации памяти (только для NUMA-систем)",[57,3294,3296],{"className":149,"code":3295,"language":151,"meta":65,"style":65},"numactl --hardware\n",[45,3297,3298],{"__ignoreMap":65},[155,3299,3300,3303],{"class":157,"line":158},[155,3301,3302],{"class":168},"numactl",[155,3304,3305],{"class":172}," --hardware\n",[16,3307,3309],{"id":3308},"заключение-последняя-содержательная-секция","Заключение (последняя содержательная секция)",[21,3311,3312,3313,48,3315,3317,3318,48,3320,48,3322,3324,3325,3327,3328,3330],{},"Эффективный мониторинг памяти в Linux строится на двух китах: регулярный сбор базовой статистики (",[45,3314,294],{},[45,3316,2097],{},") и углублённый анализ при проблемах (",[45,3319,2519],{},[45,3321,2604],{},[45,3323,3128],{},"). Не паникуйте при высоком показателе ",[45,3326,2314],{}," — это оптимизация ядра. Сфокусируйтесь на ",[45,3329,2322],{}," и активности свопа.",[21,3332,3333,3336,3337,226,3339,3341,3342,3344,3345,3348],{},[25,3334,3335],{},"Начните с простого:"," добавьте в свой ежедневный чек-лист команду ",[45,3338,591],{},[45,3340,414],{}," для быстрой оценки. При возникновении проблем используйте ",[45,3343,2519],{}," для записи сессии (",[45,3346,3347],{},"nmon -f -s 10 -c 100",") и последующего анализа.",[21,3350,3351,3352,1188,3354,3356,3357,396],{},"Помните: лучший мониторинг — тот, который настроен заранее и предупреждает об проблемах до их критического развития. Автоматизируйте сбор данных через ",[45,3353,2455],{},[45,3355,2604],{}," и настройте алерты на низкий ",[45,3358,2322],{},[1061,3360,3361],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":65,"searchDepth":165,"depth":165,"links":3363},[3364,3365,3377,3378,3384,3388,3393,3394,3399],{"id":2232,"depth":165,"text":2233},{"id":2243,"depth":165,"text":2244,"children":3366},[3367,3369,3371,3373,3375],{"id":2247,"depth":193,"text":3368},"free: общая статистика",{"id":2347,"depth":193,"text":3370},"top / htop: мониторинг в реальном времени",{"id":2408,"depth":193,"text":3372},"vmstat: сводка по виртуальной памяти",{"id":2430,"depth":193,"text":3374},"/proc/meminfo: «сырые» данные от ядра",{"id":2452,"depth":193,"text":3376},"sar: исторические данные (требует настройки)",{"id":2485,"depth":165,"text":2486},{"id":2512,"depth":165,"text":2513,"children":3379},[3380,3382],{"id":2516,"depth":193,"text":3381},"nmon — мощный мониторинг в одном окне",{"id":2601,"depth":193,"text":3383},"glances — кросс-платформенный монитор с веб-интерфейсом",{"id":2664,"depth":165,"text":2665,"children":3385},[3386,3387],{"id":2668,"depth":193,"text":2669},{"id":2727,"depth":193,"text":2728},{"id":2762,"depth":165,"text":2763,"children":3389},[3390,3391],{"id":2766,"depth":193,"text":2767},{"id":2918,"depth":193,"text":3392},"Логирование через sar",{"id":2986,"depth":165,"text":2987},{"id":3108,"depth":165,"text":3109,"children":3395},[3396,3397,3398],{"id":3112,"depth":193,"text":3113},{"id":3145,"depth":193,"text":3146},{"id":3291,"depth":193,"text":3292},{"id":3308,"depth":165,"text":3309},"2026-02-14 10:59:29","Узнайте, как отслеживать потребление памяти в Linux с помощью командной строки и графических инструментов. Пошаговая инструкция с примерами для Ubuntu, CentOS и других дистрибутивов.",[3403,3406,3409,3412],{"answer":3404,"question":3405},"Используйте `free -h`. Флаг `-h` выводит числа в удобочитаемом формате (ГиБ/МиБ).","Какой командой быстро увидеть общую статистику по памяти?",{"answer":3407,"question":3408},"`Available` — это примерный объём памяти, доступный для новых приложений без своппинга. Учитывает кэши и буферы, которые система может освободить. Это более точный показатель, чем `free`.","В выводе `free` что такое `available` и чем она отличается от `free`?",{"answer":3410,"question":3411},"Установите `htop` (`sudo apt install htop` или `sudo yum install htop`) и нажмите `F2` → «Display options» → включите «Detailed mem» и «Swap». Для графиков используйте `nmon` или веб-интерфейс `glances`.","Как мониторить память в реальном времени с графиком?",{"answer":3413,"question":3414},"Linux активно использует свободную RAM для кэширования диска (столбец `buff/cache`). Это нормально и ускоряет работу. Система автоматически освободит кэш, если приложению понадобится память.","Почему `used` в `free` огромный, а система не тормозит?",[3416,3419,3422,3425,3428,3431],{"name":3417,"text":3418},"Установите необходимые утилиты (опционально)","Для расширенного мониторинга установите `htop`, `nmon` или `glances` через менеджер пакетов вашего дистрибутива.",{"name":3420,"text":3421},"Проверьте общую статистику памяти","Выполните команду `free -h`. Обратите внимание на строки `Mem:` и `Swap:`.",{"name":3423,"text":3424},"Изучите динамику процессов","Запустите `top` или `htop`. Нажмите `F6` в `htop` и отсортируйте по столбцу `%MEM` или `RES`.",{"name":3426,"text":3427},"Проанализируйте детальную информацию по процессу","Найдите PID нужного процесса через `top` и выполните `pmap -x \u003CPID>`, чтобы увидеть детальное распределение памяти.",{"name":3429,"text":3430},"Включите сбор исторических данных","Установите пакет `sysstat` и запустите `sar -r 1 5` для сбора статистики каждую секунду, 5 раз.",{"name":3432,"text":3433},"Настройте графический мониторинг (если есть GUI)","Запустите `gnome-system-monitor` (GNOME) или `ksysguard` (KDE) для визуального контроля.",[3435,3436,3437,3438,3439,3440,3441,3442],"мониторинг памяти linux","проверить использование оперативной памяти linux","команда free linux","top htop память","как посмотреть свободную память в линукс","визуализация использования памяти linux","sar память linux","/proc/meminfo расшифровка",{},[3445,3446,3447],"/guides/linux/monitor-disk-usage","/guides/linux/process-management-basics","/errors/linux/oom-killer","Гайды Linux",{"title":2221,"description":3401},"guides/linux/monitor-memory-usage","В этом гайде вы освоите практические методы мониторинга оперативной памяти в Linux: от базовых команд `free` и `top` до продвинутых утилит `nmon` и `glances`. Вы научитесь интерпретировать показатели и настроить автоматический сбор статистики.",[3453,3454,1127,3455,1140,1141,151],"мониторинг","память","command-line","guide","SgXkJ7qm9QAcLpH_NvbCZzrc4YGuIL9Pt57zK8-UDqg"]