[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/monitoring-tools":3,"mdc-83rku8-key":1505,"mdc-s9yzsp-key":1529,"mdc--a1imli-key":1578,"mdc-oquvg2-key":1627,"mdc-g09gup-key":1648,"mdc--2xxje1-key":1656,"mdc-4ffvdm-key":1684,"mdc--g3mkco-key":1700,"mdc--mzuwfk-key":1723,"related-/guides/linux/disk-usage-commands,/guides/linux/network-troubleshooting,/errors/linux/oom-killer":1738},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":1438,"code":1438,"createdAt":1439,"description":1440,"difficulty":1441,"draft":1442,"estimatedTime":1443,"extension":1444,"faq":1445,"howToSteps":1458,"howToTotalTime":1474,"image":1438,"keywords":1475,"locale":1484,"meta":1485,"navigation":390,"path":1486,"platform":1487,"related":1488,"section":1492,"seo":1493,"severity":1438,"stem":1494,"summary":1495,"tags":1496,"twitterCreator":1438,"twitterSite":1438,"type":1503,"updatedAt":1439,"__hash__":1504},"content_ru/guides/linux/monitoring-tools.md","Мониторинг Linux: лучшие инструменты для отслеживания системы",[7,8,9,10],"Ubuntu 22.04+","CentOS 8+","Debian 11+","Any modern Linux distribution","FixPedia Team",{"type":13,"value":14,"toc":1409},"minimark",[15,20,24,27,30,52,56,59,87,94,98,101,182,188,192,197,205,210,246,251,267,272,281,323,348,352,357,362,427,432,445,452,456,460,465,469,510,515,524,527,564,569,593,596,619,625,629,638,643,673,678,695,698,712,716,720,725,729,759,763,780,791,814,826,830,836,840,870,874,886,888,896,899,902,906,912,917,938,941,951,962,968,1004,1010,1014,1017,1021,1078,1082,1087,1091,1121,1126,1140,1143,1163,1167,1170,1205,1211,1233,1237,1241,1247,1263,1269,1273,1358,1362,1372,1386,1390,1405],[16,17,19],"h2",{"id":18},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,22,23],"p",{},"Мониторинг Linux — это基евая практика для любого системного администратора или разработчика, работающего с серверами. Он позволяет вовремя заметить рост нагрузки, исчерпание дискового пространства или утечки памяти до того, как это приведёт к простою сервиса.",[21,25,26],{},"В этом гайде вы познакомитесь с основными категориями инструментов мониторинга, узнаете, как их установить и начать использовать для диагностики производительности системы. Мы рассмотрим как консольные утилиты, так и веб-интерфейсы, которые работают на большинстве дистрибутивов.",[21,28,29],{},"После выполнения этого руководства вы сможете:",[31,32,33,46,49],"ul",{},[34,35,36,37,41,42,45],"li",{},"Быстро оценить состояние системы с помощью ",[38,39,40],"code",{},"top","/",[38,43,44],{},"htop",".",[34,47,48],{},"Анализировать детальную статистику по CPU, памяти, дискам и сети.",[34,50,51],{},"Собирать исторические данные для пост-мортем анализа.",[16,53,55],{"id":54},"требования-подготовка","Требования / Подготовка",[21,57,58],{},"Перед началом убедитесь, что:",[60,61,62,70,84],"ol",{},[34,63,64,65,69],{},"У вас есть доступ к Linux-серверу или виртуальной машине с правами ",[66,67,68],"strong",{},"sudo"," (некоторые команды требуют root).",[34,71,72,73,76,77,41,80,83],{},"Установлен пакетный менеджер (",[38,74,75],{},"apt"," для Debian/Ubuntu, ",[38,78,79],{},"yum",[38,81,82],{},"dnf"," для RHEL/CentOS).",[34,85,86],{},"Для веб-интерфейсов (например, netdata) должен быть открыт соответствующий порт (по умолчанию 19999) в фаерволе.",[21,88,89,90,93],{},"Все команды в этом гайде предполагают использование ",[66,91,92],{},"bash"," или совместимого shell.",[16,95,97],{"id":96},"категории-инструментов-мониторинга","Категории инструментов мониторинга",[21,99,100],{},"Инструменты делятся на несколько логических групп:",[60,102,103,118,133,151,166],{},[34,104,105,108,109,111,112,111,114,117],{},[66,106,107],{},"Системные"," — показывают загрузку CPU, использование памяти, процессы (",[38,110,40],{},", ",[38,113,44],{},[38,115,116],{},"glances",").",[34,119,120,123,124,111,127,111,130,117],{},[66,121,122],{},"Дисковые"," — отслеживают использование места, I/O (",[38,125,126],{},"df",[38,128,129],{},"iostat",[38,131,132],{},"nmon",[34,134,135,138,139,111,142,111,145,111,148,117],{},[66,136,137],{},"Сетевые"," — анализируют трафик, соединения (",[38,140,141],{},"netstat",[38,143,144],{},"ss",[38,146,147],{},"iftop",[38,149,150],{},"nethogs",[34,152,153,156,157,111,160,111,163,117],{},[66,154,155],{},"Логи"," — мониторят системные и прикладные логи (",[38,158,159],{},"journalctl",[38,161,162],{},"tail",[38,164,165],{},"lnav",[34,167,168,171,172,111,175,178,179,117],{},[66,169,170],{},"Комплексные (веб-интерфейс)"," — агрегируют все метрики в одном месте с графиками (",[38,173,174],{},"netdata",[38,176,177],{},"Prometheus"," + ",[38,180,181],{},"Grafana",[21,183,184,185,187],{},"Мы сосредоточимся на самых популярных и универсальных утилитах из первых четырёх категорий, а также на ",[66,186,174],{}," как примере готового решения.",[16,189,191],{"id":190},"шаг-1-установка-и-использование-системных-мониторов","Шаг 1: Установка и использование системных мониторов",[193,194,196],"h3",{"id":195},"установка-htop-рекомендуется","Установка htop (рекомендуется)",[21,198,199,201,202,204],{},[38,200,44],{}," — улучшенная версия ",[38,203,40],{}," с цветным интерфейсом, поддержкой мыши и более удобной навигацией.",[21,206,207],{},[66,208,209],{},"Для Ubuntu/Debian:",[211,212,216],"pre",{"className":213,"code":214,"language":92,"meta":215,"style":215},"language-bash shiki shiki-themes github-light github-dark","sudo apt update\nsudo apt install htop\n","",[38,217,218,233],{"__ignoreMap":215},[219,220,223,226,230],"span",{"class":221,"line":222},"line",1,[219,224,68],{"class":225},"sScJk",[219,227,229],{"class":228},"sZZnC"," apt",[219,231,232],{"class":228}," update\n",[219,234,236,238,240,243],{"class":221,"line":235},2,[219,237,68],{"class":225},[219,239,229],{"class":228},[219,241,242],{"class":228}," install",[219,244,245],{"class":228}," htop\n",[21,247,248],{},[66,249,250],{},"Для CentOS/RHEL 8+:",[211,252,254],{"className":213,"code":253,"language":92,"meta":215,"style":215},"sudo dnf install htop\n",[38,255,256],{"__ignoreMap":215},[219,257,258,260,263,265],{"class":221,"line":222},[219,259,68],{"class":225},[219,261,262],{"class":228}," dnf",[219,264,242],{"class":228},[219,266,245],{"class":228},[21,268,269],{},[66,270,271],{},"Запуск и управление:",[211,273,275],{"className":213,"code":274,"language":92,"meta":215,"style":215},"htop\n",[38,276,277],{"__ignoreMap":215},[219,278,279],{"class":221,"line":222},[219,280,274],{"class":225},[31,282,283,289,298,311],{},[34,284,285,288],{},[38,286,287],{},"F10"," — выход.",[34,290,291,294,295,117],{},[38,292,293],{},"F6"," — сортировка по выбранному столбцу (например, ",[38,296,297],{},"%CPU",[34,299,300,303,304,306,307,310],{},[38,301,302],{},"F9"," — убить процесс (выберите процесс, нажмите ",[38,305,302],{},", затем ",[38,308,309],{},"9"," для SIGKILL).",[34,312,313,111,316,111,319,322],{},[38,314,315],{},"P",[38,317,318],{},"M",[38,320,321],{},"T"," — сортировка по CPU, памяти, времени соответственно.",[324,325,326],"blockquote",{},[21,327,328,329,332,333,335,336,339,340,343,344,347],{},"💡 ",[66,330,331],{},"Совет:"," В ",[38,334,44],{}," можно добавить дополнительные столбцы (нажмите ",[38,337,338],{},"F2"," → ",[38,341,342],{},"Columns","). Например, ",[38,345,346],{},"IO_RATE"," для ввода-вывода.",[193,349,351],{"id":350},"использование-glances-альтернатива","Использование glances (альтернатива)",[21,353,354,356],{},[38,355,116],{}," — кроссплатформенный монитор, который показывает не только локальные, но и удалённые метрики (по SSH или веб-интерфейсу).",[21,358,359],{},[66,360,361],{},"Установка:",[211,363,365],{"className":213,"code":364,"language":92,"meta":215,"style":215},"# Через pip (предпочтительно для последней версии)\nsudo pip3 install glances\n\n# Или из репозитория\nsudo apt install glances  # Ubuntu\nsudo dnf install glances  # CentOS\n",[38,366,367,373,385,392,398,413],{"__ignoreMap":215},[219,368,369],{"class":221,"line":222},[219,370,372],{"class":371},"sJ8bj","# Через pip (предпочтительно для последней версии)\n",[219,374,375,377,380,382],{"class":221,"line":235},[219,376,68],{"class":225},[219,378,379],{"class":228}," pip3",[219,381,242],{"class":228},[219,383,384],{"class":228}," glances\n",[219,386,388],{"class":221,"line":387},3,[219,389,391],{"emptyLinePlaceholder":390},true,"\n",[219,393,395],{"class":221,"line":394},4,[219,396,397],{"class":371},"# Или из репозитория\n",[219,399,401,403,405,407,410],{"class":221,"line":400},5,[219,402,68],{"class":225},[219,404,229],{"class":228},[219,406,242],{"class":228},[219,408,409],{"class":228}," glances",[219,411,412],{"class":371},"  # Ubuntu\n",[219,414,416,418,420,422,424],{"class":221,"line":415},6,[219,417,68],{"class":225},[219,419,262],{"class":228},[219,421,242],{"class":228},[219,423,409],{"class":228},[219,425,426],{"class":371},"  # CentOS\n",[21,428,429],{},[66,430,431],{},"Запуск в веб-режиме:",[211,433,435],{"className":213,"code":434,"language":92,"meta":215,"style":215},"glances --web\n",[38,436,437],{"__ignoreMap":215},[219,438,439,441],{"class":221,"line":222},[219,440,116],{"class":225},[219,442,444],{"class":443},"sj4cs"," --web\n",[21,446,447,448,451],{},"После этого откройте в браузере ",[38,449,450],{},"http://ваш_сервер:61208",". Интерфейс обновляется в реальном времени.",[16,453,455],{"id":454},"шаг-2-мониторинг-дисков-и-ввода-вывода","Шаг 2: Мониторинг дисков и ввода-вывода",[193,457,459],{"id":458},"nmon-универсальный-инструмент-для-сбора-данных","nmon — универсальный инструмент для сбора данных",[21,461,462,464],{},[38,463,132],{}," (Nigel's Monitor) — утилита, которая одновременно отображает информацию по CPU, памяти, дискам, сети и даже топ-процессам. Её ключевая особенность — возможность записи данных в файл для последующего анализа.",[21,466,467],{},[66,468,361],{},[211,470,472],{"className":213,"code":471,"language":92,"meta":215,"style":215},"# Ubuntu/Debian\nsudo apt install nmon\n\n# CentOS/RHEL\nsudo yum install nmon\n",[38,473,474,479,490,494,499],{"__ignoreMap":215},[219,475,476],{"class":221,"line":222},[219,477,478],{"class":371},"# Ubuntu/Debian\n",[219,480,481,483,485,487],{"class":221,"line":235},[219,482,68],{"class":225},[219,484,229],{"class":228},[219,486,242],{"class":228},[219,488,489],{"class":228}," nmon\n",[219,491,492],{"class":221,"line":387},[219,493,391],{"emptyLinePlaceholder":390},[219,495,496],{"class":221,"line":394},[219,497,498],{"class":371},"# CentOS/RHEL\n",[219,500,501,503,506,508],{"class":221,"line":400},[219,502,68],{"class":225},[219,504,505],{"class":228}," yum",[219,507,242],{"class":228},[219,509,489],{"class":228},[21,511,512],{},[66,513,514],{},"Запуск:",[211,516,518],{"className":213,"code":517,"language":92,"meta":215,"style":215},"nmon\n",[38,519,520],{"__ignoreMap":215},[219,521,522],{"class":221,"line":222},[219,523,517],{"class":225},[21,525,526],{},"После запуска нажмите:",[31,528,529,535,541,547,553,559],{},[34,530,531,534],{},[38,532,533],{},"c"," — CPU.",[34,536,537,540],{},[38,538,539],{},"m"," — память.",[34,542,543,546],{},[38,544,545],{},"d"," — диски.",[34,548,549,552],{},[38,550,551],{},"n"," — сеть.",[34,554,555,558],{},[38,556,557],{},"t"," — топ-процессы.",[34,560,561,288],{},[38,562,563],{},"q",[21,565,566],{},[66,567,568],{},"Запись сессии в файл:",[211,570,572],{"className":213,"code":571,"language":92,"meta":215,"style":215},"nmon -f -s 2 -c 30\n",[38,573,574],{"__ignoreMap":215},[219,575,576,578,581,584,587,590],{"class":221,"line":222},[219,577,132],{"class":225},[219,579,580],{"class":443}," -f",[219,582,583],{"class":443}," -s",[219,585,586],{"class":443}," 2",[219,588,589],{"class":443}," -c",[219,591,592],{"class":443}," 30\n",[21,594,595],{},"Флаги:",[31,597,598,607,613],{},[34,599,600,603,604,117],{},[38,601,602],{},"-f"," — запись в файл (по умолчанию ",[38,605,606],{},"nmon_дата_время",[34,608,609,612],{},[38,610,611],{},"-s 2"," — интервал сбора данных 2 секунды.",[34,614,615,618],{},[38,616,617],{},"-c 30"," — количество записей (30), после чего программа завершится.",[21,620,621,622,624],{},"Файл можно просмотреть позже с помощью ",[38,623,132],{}," (просто укажите путь) или преобразовать в CSV для Excel.",[193,626,628],{"id":627},"iostat-для-детальной-статистики-дисков","iostat для детальной статистики дисков",[21,630,631,633,634,637],{},[38,632,129],{}," входит в пакет ",[38,635,636],{},"sysstat",". Показывает загрузку дисков (await, util%) и детали по устройствам.",[21,639,640],{},[66,641,642],{},"Установка sysstat:",[211,644,646],{"className":213,"code":645,"language":92,"meta":215,"style":215},"sudo apt install sysstat  # Ubuntu\nsudo dnf install sysstat  # CentOS\n",[38,647,648,661],{"__ignoreMap":215},[219,649,650,652,654,656,659],{"class":221,"line":222},[219,651,68],{"class":225},[219,653,229],{"class":228},[219,655,242],{"class":228},[219,657,658],{"class":228}," sysstat",[219,660,412],{"class":371},[219,662,663,665,667,669,671],{"class":221,"line":235},[219,664,68],{"class":225},[219,666,262],{"class":228},[219,668,242],{"class":228},[219,670,658],{"class":228},[219,672,426],{"class":371},[21,674,675],{},[66,676,677],{},"Команда:",[211,679,681],{"className":213,"code":680,"language":92,"meta":215,"style":215},"iostat -dx 2 5\n",[38,682,683],{"__ignoreMap":215},[219,684,685,687,690,692],{"class":221,"line":222},[219,686,129],{"class":225},[219,688,689],{"class":443}," -dx",[219,691,586],{"class":443},[219,693,694],{"class":443}," 5\n",[21,696,697],{},"Вывод:",[31,699,700,706],{},[34,701,702,705],{},[38,703,704],{},"%util"," — процент времени, когда диск занят операциями. Значение >80% указывает на узкое место.",[34,707,708,711],{},[38,709,710],{},"await"," — среднее время ожидания операции (мс). Высокие значения — проблема.",[16,713,715],{"id":714},"шаг-3-сетевой-мониторинг","Шаг 3: Сетевой мониторинг",[193,717,719],{"id":718},"iftop-实时-трафик-по-интерфейсам","iftop —实时 трафик по интерфейсам",[21,721,722,724],{},[38,723,147],{}," показывает, какие соединения consume bandwidth в реальном времени.",[21,726,727],{},[66,728,361],{},[211,730,732],{"className":213,"code":731,"language":92,"meta":215,"style":215},"sudo apt install iftop  # Ubuntu\nsudo dnf install iftop  # CentOS\n",[38,733,734,747],{"__ignoreMap":215},[219,735,736,738,740,742,745],{"class":221,"line":222},[219,737,68],{"class":225},[219,739,229],{"class":228},[219,741,242],{"class":228},[219,743,744],{"class":228}," iftop",[219,746,412],{"class":371},[219,748,749,751,753,755,757],{"class":221,"line":235},[219,750,68],{"class":225},[219,752,262],{"class":228},[219,754,242],{"class":228},[219,756,744],{"class":228},[219,758,426],{"class":371},[21,760,761],{},[66,762,514],{},[211,764,766],{"className":213,"code":765,"language":92,"meta":215,"style":215},"sudo iftop -i eth0\n",[38,767,768],{"__ignoreMap":215},[219,769,770,772,774,777],{"class":221,"line":222},[219,771,68],{"class":225},[219,773,744],{"class":228},[219,775,776],{"class":443}," -i",[219,778,779],{"class":228}," eth0\n",[21,781,782,783,786,787,790],{},"Замените ",[38,784,785],{},"eth0"," на ваш интерфейс (",[38,788,789],{},"ip a"," для просмотра). Клавиши:",[31,792,793,798,803,809],{},[34,794,795,797],{},[38,796,21],{}," — пауза.",[34,799,800,802],{},[38,801,551],{}," — разрешить/запретить преобразование имён (ускоряет вывод).",[34,804,805,808],{},[38,806,807],{},"s"," — сортировка по источнику.",[34,810,811,813],{},[38,812,545],{}," — сортировка по назначению.",[324,815,816],{},[21,817,818,819,822,823,825],{},"⚠️ ",[66,820,821],{},"Важно:"," ",[38,824,147],{}," требует прав root для захвата пакетов.",[193,827,829],{"id":828},"nethogs-трафик-по-процессам","nethogs — трафик по процессам",[21,831,832,833,835],{},"Уникальность ",[38,834,150],{}," в том, что он показывает, какой процесс генерирует сетевой трафик.",[21,837,838],{},[66,839,361],{},[211,841,843],{"className":213,"code":842,"language":92,"meta":215,"style":215},"sudo apt install nethogs  # Ubuntu\nsudo dnf install nethogs  # CentOS\n",[38,844,845,858],{"__ignoreMap":215},[219,846,847,849,851,853,856],{"class":221,"line":222},[219,848,68],{"class":225},[219,850,229],{"class":228},[219,852,242],{"class":228},[219,854,855],{"class":228}," nethogs",[219,857,412],{"class":371},[219,859,860,862,864,866,868],{"class":221,"line":235},[219,861,68],{"class":225},[219,863,262],{"class":228},[219,865,242],{"class":228},[219,867,855],{"class":228},[219,869,426],{"class":371},[21,871,872],{},[66,873,514],{},[211,875,877],{"className":213,"code":876,"language":92,"meta":215,"style":215},"sudo nethogs\n",[38,878,879],{"__ignoreMap":215},[219,880,881,883],{"class":221,"line":222},[219,882,68],{"class":225},[219,884,885],{"class":228}," nethogs\n",[21,887,697],{},[211,889,894],{"className":890,"code":892,"language":893},[891],"language-text","PID   USER      PROGRAM                     DEV        SENT      RECEIVED\n1234  root      /usr/lib/firefox/firefox    eth0       1.23 KB   4.56 KB\n","text",[38,895,892],{"__ignoreMap":215},[21,897,898],{},"Идеально для поиска \"прожорливых\" процессов.",[900,901],"in-article-ad",{},[16,903,905],{"id":904},"шаг-4-комплексный-мониторинг-с-netdata","Шаг 4: Комплексный мониторинг с netdata",[21,907,908,911],{},[66,909,910],{},"Netdata"," — это готовое решение с веб-интерфейсом, которое собирает тысячи метрик и строит красивые графики. Установка за минуту.",[21,913,914],{},[66,915,916],{},"Установка (автоматический скрипт):",[211,918,920],{"className":213,"code":919,"language":92,"meta":215,"style":215},"bash \u003C(curl -Ss https://my-netdata.io/kickstart.sh)\n",[38,921,922],{"__ignoreMap":215},[219,923,924,926,929,932,935],{"class":221,"line":222},[219,925,92],{"class":225},[219,927,928],{"class":228}," \u003C(",[219,930,931],{"class":225},"curl",[219,933,934],{"class":443}," -Ss",[219,936,937],{"class":228}," https://my-netdata.io/kickstart.sh)\n",[21,939,940],{},"Скрипт определит дистрибутив и установит все зависимости.",[21,942,943,946,947,950],{},[66,944,945],{},"Доступ:","\nПосле установки откройте в браузере ",[38,948,949],{},"http://ваш_сервер:19999",". Вы увидите дашборд с:",[31,952,953,956,959],{},[34,954,955],{},"Загрузкой CPU, памяти, дисков, сети.",[34,957,958],{},"Топ-процессами по CPU/RAM.",[34,960,961],{},"Метриками Docker, MySQL, Nginx (если они установлены).",[21,963,964,967],{},[66,965,966],{},"Безопасность:","\nПо умолчанию netdata слушает все интерфейсы. Ограничьте доступ через фаервол:",[211,969,971],{"className":213,"code":970,"language":92,"meta":215,"style":215},"sudo ufw allow from 192.168.1.0/24 to any port 19999  # только локальная сеть\n",[38,972,973],{"__ignoreMap":215},[219,974,975,977,980,983,986,989,992,995,998,1001],{"class":221,"line":222},[219,976,68],{"class":225},[219,978,979],{"class":228}," ufw",[219,981,982],{"class":228}," allow",[219,984,985],{"class":228}," from",[219,987,988],{"class":228}," 192.168.1.0/24",[219,990,991],{"class":228}," to",[219,993,994],{"class":228}," any",[219,996,997],{"class":228}," port",[219,999,1000],{"class":443}," 19999",[219,1002,1003],{"class":371},"  # только локальная сеть\n",[21,1005,1006,1007,45],{},"Или настройте аутентификацию в ",[38,1008,1009],{},"/etc/netdata/netdata.conf",[16,1011,1013],{"id":1012},"шаг-5-просмотр-логов-в-реальном-времени","Шаг 5: Просмотр логов в реальном времени",[21,1015,1016],{},"Хотя это не классический \"мониторинг\", отслеживание логов критически важно.",[193,1018,1020],{"id":1019},"journalctl-systemd-системы","journalctl (systemd-системы)",[211,1022,1024],{"className":213,"code":1023,"language":92,"meta":215,"style":215},"# Показать логи за последние 10 минут\njournalctl --since \"10 minutes ago\"\n\n# Следить за новыми записями (аналог tail -f)\njournalctl -f\n\n# Логи конкретного юнита (сервиса)\njournalctl -u nginx.service\n",[38,1025,1026,1031,1041,1045,1050,1057,1061,1067],{"__ignoreMap":215},[219,1027,1028],{"class":221,"line":222},[219,1029,1030],{"class":371},"# Показать логи за последние 10 минут\n",[219,1032,1033,1035,1038],{"class":221,"line":235},[219,1034,159],{"class":225},[219,1036,1037],{"class":443}," --since",[219,1039,1040],{"class":228}," \"10 minutes ago\"\n",[219,1042,1043],{"class":221,"line":387},[219,1044,391],{"emptyLinePlaceholder":390},[219,1046,1047],{"class":221,"line":394},[219,1048,1049],{"class":371},"# Следить за новыми записями (аналог tail -f)\n",[219,1051,1052,1054],{"class":221,"line":400},[219,1053,159],{"class":225},[219,1055,1056],{"class":443}," -f\n",[219,1058,1059],{"class":221,"line":415},[219,1060,391],{"emptyLinePlaceholder":390},[219,1062,1064],{"class":221,"line":1063},7,[219,1065,1066],{"class":371},"# Логи конкретного юнита (сервиса)\n",[219,1068,1070,1072,1075],{"class":221,"line":1069},8,[219,1071,159],{"class":225},[219,1073,1074],{"class":443}," -u",[219,1076,1077],{"class":228}," nginx.service\n",[193,1079,1081],{"id":1080},"lnav-умный-просмотрщик-логов","lnav — умный просмотрщик логов",[21,1083,1084,1086],{},[38,1085,165],{}," подсвечивает ошибки, позволяет фильтровать и выполнять поиск по форматам.",[21,1088,1089],{},[66,1090,361],{},[211,1092,1094],{"className":213,"code":1093,"language":92,"meta":215,"style":215},"sudo apt install lnav  # Ubuntu\nsudo dnf install lnav  # CentOS\n",[38,1095,1096,1109],{"__ignoreMap":215},[219,1097,1098,1100,1102,1104,1107],{"class":221,"line":222},[219,1099,68],{"class":225},[219,1101,229],{"class":228},[219,1103,242],{"class":228},[219,1105,1106],{"class":228}," lnav",[219,1108,412],{"class":371},[219,1110,1111,1113,1115,1117,1119],{"class":221,"line":235},[219,1112,68],{"class":225},[219,1114,262],{"class":228},[219,1116,242],{"class":228},[219,1118,1106],{"class":228},[219,1120,426],{"class":371},[21,1122,1123],{},[66,1124,1125],{},"Использование:",[211,1127,1129],{"className":213,"code":1128,"language":92,"meta":215,"style":215},"sudo lnav /var/log/syslog\n",[38,1130,1131],{"__ignoreMap":215},[219,1132,1133,1135,1137],{"class":221,"line":222},[219,1134,68],{"class":225},[219,1136,1106],{"class":228},[219,1138,1139],{"class":228}," /var/log/syslog\n",[21,1141,1142],{},"Клавиши:",[31,1144,1145,1151,1157],{},[34,1146,1147,1150],{},[38,1148,1149],{},":filter-in \u003Cтекст>"," — показать только строки с текстом.",[34,1152,1153,1156],{},[38,1154,1155],{},":filter-out \u003Cтекст>"," — скрыть строки.",[34,1158,1159,1162],{},[38,1160,1161],{},"F7"," — предыдущий файл в каталоге (удобно при ротации логов).",[16,1164,1166],{"id":1165},"проверка-результата","Проверка результата",[21,1168,1169],{},"После выполнения шагов вы должны уметь:",[60,1171,1172,1178,1187,1193,1196],{},[34,1173,1174,1175,1177],{},"Запустить ",[38,1176,44],{}," и определить процессы, consume больше всего CPU/RAM.",[34,1179,1180,1181,1183,1184,1186],{},"С помощью ",[38,1182,129],{}," проверить, не перегружены ли диски (",[38,1185,704],{}," > 80%).",[34,1188,1189,1190,1192],{},"С ",[38,1191,150],{}," найти процесс, генерирующий неожиданный сетевой трафик.",[34,1194,1195],{},"Открыть веб-интерфейс netdata и прочитать графики за последний час.",[34,1197,1198,1199,1202,1203,45],{},"Следить за логами через ",[38,1200,1201],{},"journalctl -f"," и фильтровать их через ",[38,1204,165],{},[21,1206,1207,1210],{},[66,1208,1209],{},"Критерии успеха:"," Вы можете оперативно ответить на вопросы:",[31,1212,1213,1220,1225],{},[34,1214,1215,1216,178,1218,45],{},"\"Почему сервер тормозит?\" → ",[38,1217,44],{},[38,1219,129],{},[34,1221,1222,1223,45],{},"\"Кто ест сеть?\" → ",[38,1224,150],{},[34,1226,1227,1228,1230,1231,45],{},"\"Что произошло в момент сбоя?\" → ",[38,1229,132],{}," (если запись была) или ",[38,1232,159],{},[16,1234,1236],{"id":1235},"возможные-проблемы","Возможные проблемы",[193,1238,1240],{"id":1239},"command-not-found-после-установки","\"Command not found\" после установки",[21,1242,1243,1244,1246],{},"Иногда после установки через ",[38,1245,75],{}," команда доступна только после перелогина или sourcing оболочки. Попробуйте:",[211,1248,1250],{"className":213,"code":1249,"language":92,"meta":215,"style":215},"hash -r  # очистка кэша команд\n",[38,1251,1252],{"__ignoreMap":215},[219,1253,1254,1257,1260],{"class":221,"line":222},[219,1255,1256],{"class":443},"hash",[219,1258,1259],{"class":443}," -r",[219,1261,1262],{"class":371},"  # очистка кэша команд\n",[21,1264,1265,1266,117],{},"Или используйте полный путь (",[38,1267,1268],{},"/usr/bin/htop",[193,1270,1272],{"id":1271},"netdata-не-запускается-или-веб-интерфейс-не-отвечает","netdata не запускается или веб-интерфейс не отвечает",[60,1274,1275,1296,1330],{},[34,1276,1277,1278],{},"Проверьте статус службы:\n",[211,1279,1281],{"className":213,"code":1280,"language":92,"meta":215,"style":215},"sudo systemctl status netdata\n",[38,1282,1283],{"__ignoreMap":215},[219,1284,1285,1287,1290,1293],{"class":221,"line":222},[219,1286,68],{"class":225},[219,1288,1289],{"class":228}," systemctl",[219,1291,1292],{"class":228}," status",[219,1294,1295],{"class":228}," netdata\n",[34,1297,1298,1299],{},"Если служба неактивна, запустите:\n",[211,1300,1302],{"className":213,"code":1301,"language":92,"meta":215,"style":215},"sudo systemctl start netdata\nsudo systemctl enable netdata  # автозапуск\n",[38,1303,1304,1315],{"__ignoreMap":215},[219,1305,1306,1308,1310,1313],{"class":221,"line":222},[219,1307,68],{"class":225},[219,1309,1289],{"class":228},[219,1311,1312],{"class":228}," start",[219,1314,1295],{"class":228},[219,1316,1317,1319,1321,1324,1327],{"class":221,"line":235},[219,1318,68],{"class":225},[219,1320,1289],{"class":228},[219,1322,1323],{"class":228}," enable",[219,1325,1326],{"class":228}," netdata",[219,1328,1329],{"class":371},"  # автозапуск\n",[34,1331,1332,1333],{},"Убедитесь, что порт 19999 открыт:\n",[211,1334,1336],{"className":213,"code":1335,"language":92,"meta":215,"style":215},"sudo ss -tulpn | grep 19999\n",[38,1337,1338],{"__ignoreMap":215},[219,1339,1340,1342,1345,1348,1352,1355],{"class":221,"line":222},[219,1341,68],{"class":225},[219,1343,1344],{"class":228}," ss",[219,1346,1347],{"class":443}," -tulpn",[219,1349,1351],{"class":1350},"szBVR"," |",[219,1353,1354],{"class":225}," grep",[219,1356,1357],{"class":443}," 19999\n",[193,1359,1361],{"id":1360},"iostat-показывает-0-util-но-диск-медленный","iostat показывает 0% util, но диск медленный",[21,1363,1364,1365,1368,1369,1371],{},"Это может быть связано с кэшем. Используйте опцию ",[38,1366,1367],{},"-x"," для расширенной статистики и смотрите на ",[38,1370,710],{},". Также проверьте:",[31,1373,1374,1380],{},[34,1375,1376,1377,45],{},"Состояние RAID (если есть) через ",[38,1378,1379],{},"cat /proc/mdstat",[34,1381,1382,1383,45],{},"SMART-статус диска: ",[38,1384,1385],{},"sudo smartctl -a /dev/sda",[193,1387,1389],{"id":1388},"nethogs-требует-root-но-я-не-имею-прав","nethogs требует root, но я не имею прав",[21,1391,1392,1393,1395,1396,1398,1399,178,1401,1404],{},"Если вы не root, попросите администратора добавить вашего пользователя в группу ",[38,1394,68],{}," или установить ",[38,1397,150],{}," с setuid (не рекомендуется из соображений безопасности). Альтернатива — использовать ",[38,1400,144],{},[38,1402,1403],{},"lsof"," для отслеживания соединений, но это менее наглядно.",[1406,1407,1408],"style",{},"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 .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 .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}",{"title":215,"searchDepth":235,"depth":235,"links":1410},[1411,1412,1413,1414,1418,1422,1426,1427,1431,1432],{"id":18,"depth":235,"text":19},{"id":54,"depth":235,"text":55},{"id":96,"depth":235,"text":97},{"id":190,"depth":235,"text":191,"children":1415},[1416,1417],{"id":195,"depth":387,"text":196},{"id":350,"depth":387,"text":351},{"id":454,"depth":235,"text":455,"children":1419},[1420,1421],{"id":458,"depth":387,"text":459},{"id":627,"depth":387,"text":628},{"id":714,"depth":235,"text":715,"children":1423},[1424,1425],{"id":718,"depth":387,"text":719},{"id":828,"depth":387,"text":829},{"id":904,"depth":235,"text":905},{"id":1012,"depth":235,"text":1013,"children":1428},[1429,1430],{"id":1019,"depth":387,"text":1020},{"id":1080,"depth":387,"text":1081},{"id":1165,"depth":235,"text":1166},{"id":1235,"depth":235,"text":1236,"children":1433},[1434,1435,1436,1437],{"id":1239,"depth":387,"text":1240},{"id":1271,"depth":387,"text":1272},{"id":1360,"depth":387,"text":1361},{"id":1388,"depth":387,"text":1389},null,"2026-02-16 19:05:25","Полное руководство по мониторингу Linux. Узнайте, какие утилиты (top, htop, nmon, netdata) использовать для контроля загрузки CPU, памяти, дисков и сети. Пошаговая инструкция с примерами.","medium",false,"15-30 мин","md",[1446,1449,1452,1455],{"question":1447,"answer":1448},"Какой инструмент мониторинга лучше для начала: top или htop?","Для новичков лучше **htop** — он имеет цветовое оформление, удобное управление мышью и более наглядный интерфейс. **Top** — стандартная утилита, всегда доступна, но менее информативна.",{"question":1450,"answer":1451},"Можно ли мониторить удалённый сервер без графического интерфейса?","Да, используйте **SSH** для подключения и консольные утилиты (`top`, `vmstat`, `nmon`). Для веб-интерфейса подходит **netdata** или **Glances** с доступом по сети.",{"question":1453,"answer":1454},"Как настроить алерты при высоких нагрузках?","Используйте **netdata** (встроенные алерты через `alarm`), **Prometheus** + **Alertmanager** или скрипты на **bash** с `cron`, которые проверяют метрики и отправляют уведомления.",{"question":1456,"answer":1457},"Чем nmon полезен для сбора отчётов?","**Nmon** позволяет записывать данные в файл (`-f`), а затем анализировать их офлайн. Это удобно для поиска причин прошлых проблем, когда система уже не в режиме реального времени.",[1459,1462,1465,1468,1471],{"name":1460,"text":1461},"Определите категорию мониторинга","Заранее решите, что нужно отслеживать: системные ресурсы (CPU, RAM), дисковое пространство, сетевую активность или логи. От этого зависит выбор инструмента.",{"name":1463,"text":1464},"Установите выбранные утилиты","Используйте пакетный менеджер вашего дистрибутива (`apt`, `yum`, `dnf`) для установки. Большинство инструментов есть в официальных репозиториях.",{"name":1466,"text":1467},"Настройте запуск и доступ","Для некоторых утилит (например, netdata) нужно открыть порт в фаерволе. Для системных (`top`) настройка не требуется.",{"name":1469,"text":1470},"Изучите базовые команды и интерфейс","Потратьте 5-10 минут на освоение основных клавиш управления (в htop: `F10` — выход, `F6` — сортировка).",{"name":1472,"text":1473},"Настройте постоянный мониторинг (опционально)","Если нужно долгосрочное наблюдение, настройте демон (например, netdata) или добавьте скрипт в `cron`.","PT20M",[1476,1477,1478,1479,1480,1481,1482,1483],"мониторинг linux","инструменты мониторинга linux","top htop nmon сравнение","утилиты для диагностики linux","как посмотреть загрузку процессора linux","мониторинг диска linux команды","сетевой мониторинг linux","установка netdata ubuntu","ru_RU",{},"/guides/linux/monitoring-tools","linux",[1489,1490,1491],"/guides/linux/disk-usage-commands","/guides/linux/network-troubleshooting","/errors/linux/oom-killer","Гайды Linux",{"title":5,"description":1440},"guides/linux/monitoring-tools","В этом гайде вы изучите основные категории инструментов мониторинга в Linux, научитесь устанавливать и использовать самые популярные утилиты для диагностики производительности системы в реальном времени.",[1497,1498,1499,1500,1501,1502],"мониторинг","система","linux-tools","performance","sysadmin","diagnostics","guide","rCRd8irGfjnQ_is6XStbpy0RkCF3LU2n0gl29JD-2Us",{"data":1506,"body":1507},{},{"type":1508,"children":1509},"root",[1510],{"type":1511,"tag":21,"props":1512,"children":1513},"element",{},[1514,1516,1520,1522,1527],{"type":893,"value":1515},"Для новичков лучше ",{"type":1511,"tag":66,"props":1517,"children":1518},{},[1519],{"type":893,"value":44},{"type":893,"value":1521}," — он имеет цветовое оформление, удобное управление мышью и более наглядный интерфейс. ",{"type":1511,"tag":66,"props":1523,"children":1524},{},[1525],{"type":893,"value":1526},"Top",{"type":893,"value":1528}," — стандартная утилита, всегда доступна, но менее информативна.",{"data":1530,"body":1531},{},{"type":1508,"children":1532},[1533],{"type":1511,"tag":21,"props":1534,"children":1535},{},[1536,1538,1543,1545,1550,1551,1557,1558,1563,1565,1569,1571,1576],{"type":893,"value":1537},"Да, используйте ",{"type":1511,"tag":66,"props":1539,"children":1540},{},[1541],{"type":893,"value":1542},"SSH",{"type":893,"value":1544}," для подключения и консольные утилиты (",{"type":1511,"tag":38,"props":1546,"children":1548},{"className":1547},[],[1549],{"type":893,"value":40},{"type":893,"value":111},{"type":1511,"tag":38,"props":1552,"children":1554},{"className":1553},[],[1555],{"type":893,"value":1556},"vmstat",{"type":893,"value":111},{"type":1511,"tag":38,"props":1559,"children":1561},{"className":1560},[],[1562],{"type":893,"value":132},{"type":893,"value":1564},"). Для веб-интерфейса подходит ",{"type":1511,"tag":66,"props":1566,"children":1567},{},[1568],{"type":893,"value":174},{"type":893,"value":1570}," или ",{"type":1511,"tag":66,"props":1572,"children":1573},{},[1574],{"type":893,"value":1575},"Glances",{"type":893,"value":1577}," с доступом по сети.",{"data":1579,"body":1580},{},{"type":1508,"children":1581},[1582],{"type":1511,"tag":21,"props":1583,"children":1584},{},[1585,1587,1591,1593,1599,1601,1605,1606,1611,1613,1617,1619,1625],{"type":893,"value":1586},"Используйте ",{"type":1511,"tag":66,"props":1588,"children":1589},{},[1590],{"type":893,"value":174},{"type":893,"value":1592}," (встроенные алерты через ",{"type":1511,"tag":38,"props":1594,"children":1596},{"className":1595},[],[1597],{"type":893,"value":1598},"alarm",{"type":893,"value":1600},"), ",{"type":1511,"tag":66,"props":1602,"children":1603},{},[1604],{"type":893,"value":177},{"type":893,"value":178},{"type":1511,"tag":66,"props":1607,"children":1608},{},[1609],{"type":893,"value":1610},"Alertmanager",{"type":893,"value":1612}," или скрипты на ",{"type":1511,"tag":66,"props":1614,"children":1615},{},[1616],{"type":893,"value":92},{"type":893,"value":1618}," с ",{"type":1511,"tag":38,"props":1620,"children":1622},{"className":1621},[],[1623],{"type":893,"value":1624},"cron",{"type":893,"value":1626},", которые проверяют метрики и отправляют уведомления.",{"data":1628,"body":1629},{},{"type":1508,"children":1630},[1631],{"type":1511,"tag":21,"props":1632,"children":1633},{},[1634,1639,1641,1646],{"type":1511,"tag":66,"props":1635,"children":1636},{},[1637],{"type":893,"value":1638},"Nmon",{"type":893,"value":1640}," позволяет записывать данные в файл (",{"type":1511,"tag":38,"props":1642,"children":1644},{"className":1643},[],[1645],{"type":893,"value":602},{"type":893,"value":1647},"), а затем анализировать их офлайн. Это удобно для поиска причин прошлых проблем, когда система уже не в режиме реального времени.",{"data":1649,"body":1650},{},{"type":1508,"children":1651},[1652],{"type":1511,"tag":21,"props":1653,"children":1654},{},[1655],{"type":893,"value":1461},{"data":1657,"body":1658},{},{"type":1508,"children":1659},[1660],{"type":1511,"tag":21,"props":1661,"children":1662},{},[1663,1665,1670,1671,1676,1677,1682],{"type":893,"value":1664},"Используйте пакетный менеджер вашего дистрибутива (",{"type":1511,"tag":38,"props":1666,"children":1668},{"className":1667},[],[1669],{"type":893,"value":75},{"type":893,"value":111},{"type":1511,"tag":38,"props":1672,"children":1674},{"className":1673},[],[1675],{"type":893,"value":79},{"type":893,"value":111},{"type":1511,"tag":38,"props":1678,"children":1680},{"className":1679},[],[1681],{"type":893,"value":82},{"type":893,"value":1683},") для установки. Большинство инструментов есть в официальных репозиториях.",{"data":1685,"body":1686},{},{"type":1508,"children":1687},[1688],{"type":1511,"tag":21,"props":1689,"children":1690},{},[1691,1693,1698],{"type":893,"value":1692},"Для некоторых утилит (например, netdata) нужно открыть порт в фаерволе. Для системных (",{"type":1511,"tag":38,"props":1694,"children":1696},{"className":1695},[],[1697],{"type":893,"value":40},{"type":893,"value":1699},") настройка не требуется.",{"data":1701,"body":1702},{},{"type":1508,"children":1703},[1704],{"type":1511,"tag":21,"props":1705,"children":1706},{},[1707,1709,1714,1716,1721],{"type":893,"value":1708},"Потратьте 5-10 минут на освоение основных клавиш управления (в htop: ",{"type":1511,"tag":38,"props":1710,"children":1712},{"className":1711},[],[1713],{"type":893,"value":287},{"type":893,"value":1715}," — выход, ",{"type":1511,"tag":38,"props":1717,"children":1719},{"className":1718},[],[1720],{"type":893,"value":293},{"type":893,"value":1722}," — сортировка).",{"data":1724,"body":1725},{},{"type":1508,"children":1726},[1727],{"type":1511,"tag":21,"props":1728,"children":1729},{},[1730,1732,1737],{"type":893,"value":1731},"Если нужно долгосрочное наблюдение, настройте демон (например, netdata) или добавьте скрипт в ",{"type":1511,"tag":38,"props":1733,"children":1735},{"className":1734},[],[1736],{"type":893,"value":1624},{"type":893,"value":45},[1739],{"id":1740,"title":1741,"appliesTo":1742,"author":11,"body":1746,"canonical":1438,"code":1438,"createdAt":2848,"description":2849,"difficulty":1441,"draft":1442,"estimatedTime":1443,"extension":1444,"faq":2850,"howToSteps":2863,"howToTotalTime":2882,"image":1438,"keywords":2883,"locale":1484,"meta":2893,"navigation":390,"path":1491,"platform":1487,"related":2894,"section":2898,"seo":2899,"severity":2900,"stem":2901,"summary":2902,"tags":2903,"twitterCreator":1438,"twitterSite":1438,"type":1503,"updatedAt":2848,"__hash__":2910},"content_ru/errors/linux/oom-killer.md","OOM Killer в Linux: как обнаружить и предотвратить",[1743,1744,9,1745],"Ubuntu 20.04+","CentOS 7+","ядро Linux 4.15+",{"type":13,"value":1747,"toc":2832},[1748,1752,1758,1761,1775,1782,1786,1793,1804,1810,1814,1817,2073,2075,2079,2087,2102,2108,2146,2152,2174,2180,2190,2194,2200,2206,2275,2280,2356,2360,2363,2373,2390,2401,2407,2416,2419,2425,2434,2438,2441,2471,2474,2533,2537,2619,2623,2626,2631,2677,2682,2742,2752,2756,2798,2802,2805,2820,2823,2829],[16,1749,1751],{"id":1750},"что-такое-oom-killer-и-почему-он-появляется","Что такое OOM Killer и почему он появляется",[21,1753,1754,1757],{},[66,1755,1756],{},"OOM Killer (Out-of-Memory Killer)"," — это механизм ядра Linux, который автоматически завершает процессы, когда система исчерпала доступную оперативную память (RAM) и swap-пространство. Его цель — освободить память, чтобы ядро и критические системные процессы могли продолжить работу, предотвращая полный крах системы.",[21,1759,1760],{},"Обычно OOM Killer активируется, когда:",[31,1762,1763,1766,1769,1772],{},[34,1764,1765],{},"Физическая RAM и swap заполнены на 100%.",[34,1767,1768],{},"Приложение имеет утечку памяти (memory leak).",[34,1770,1771],{},"На сервере запущено слишком много memory-intensive процессов.",[34,1773,1774],{},"Неправильно настроены лимиты памяти в контейнерах (Docker/Kubernetes).",[21,1776,1777,1778,1781],{},"Если вы видите в логах сообщение ",[38,1779,1780],{},"Killed process"," или приложение внезапно завершается с кодом 137 (SIGKILL), скорее всего, виноват OOM Killer.",[16,1783,1785],{"id":1784},"как-работает-oom-killer","Как работает OOM Killer",[21,1787,1788,1789,1792],{},"Ядро Linux вычисляет ",[66,1790,1791],{},"oom_score"," для каждого процесса на основе:",[31,1794,1795,1798,1801],{},[34,1796,1797],{},"Доли памяти, потребляемой процессом (основной фактор).",[34,1799,1800],{},"Привилегий процесса (процессы root имеют меньший шанс быть убитыми).",[34,1802,1803],{},"Времени жизни процесса (долгоживущие процессы могут иметь более высокий score).",[21,1805,1806,1807,1809],{},"Процесс с самым высоким ",[38,1808,1791],{}," выбирается для завершения. Однако это не всегда оптимально: OOM Killer может убить важный сервис, а оставить фоновый процесс с утечкой.",[16,1811,1813],{"id":1812},"диагностика-проблемы","Диагностика проблемы",[21,1815,1816],{},"Перед любыми действиями нужно подтвердить, что проблема именно в OOM Killer.",[60,1818,1819,1861,1902,1944],{},[34,1820,1821,1824,1825,1844,1847,1848,1854,1856,1857,1860],{},[66,1822,1823],{},"Проверьте логи ядра",":",[211,1826,1828],{"className":213,"code":1827,"language":92,"meta":215,"style":215},"dmesg | grep -i kill\n",[38,1829,1830],{"__ignoreMap":215},[219,1831,1832,1835,1837,1839,1841],{"class":221,"line":222},[219,1833,1834],{"class":225},"dmesg",[219,1836,1351],{"class":1350},[219,1838,1354],{"class":225},[219,1840,776],{"class":443},[219,1842,1843],{"class":228}," kill\n",[1845,1846],"br",{},"Пример вывода:",[211,1849,1852],{"className":1850,"code":1851,"language":893},[891],"[12345.678] Out of memory: Kill process 1234 (nginx) score 500 or sacrifice child\n[12345.680] Killed process 1234 (nginx) total-vm:1234567kB, anon-rss:456789kB, file-rss:0kB\n",[38,1853,1851],{"__ignoreMap":215},[1845,1855],{},"Здесь видно, что процесс ",[38,1858,1859],{},"nginx"," с PID 1234 был убит.",[34,1862,1863,1824,1866,1879,1881,1882,111,1885,111,1888,1891,1892,1895,1896,1898,1899,1901],{},[66,1864,1865],{},"Оцените общую память",[211,1867,1869],{"className":213,"code":1868,"language":92,"meta":215,"style":215},"free -h\n",[38,1870,1871],{"__ignoreMap":215},[219,1872,1873,1876],{"class":221,"line":222},[219,1874,1875],{"class":225},"free",[219,1877,1878],{"class":443}," -h\n",[1845,1880],{},"Обратите внимание на столбцы ",[38,1883,1884],{},"total",[38,1886,1887],{},"used",[38,1889,1890],{},"available"," и ",[38,1893,1894],{},"Swap",". Если ",[38,1897,1890],{}," близок к нулю, а ",[38,1900,1894],{}," также заполнен — система в критическом состоянии.",[34,1903,1904,1824,1907,1933,1935,1936,1938,1939,339,1941,117],{},[66,1905,1906],{},"Найдите процесс-потребителя",[211,1908,1910],{"className":213,"code":1909,"language":92,"meta":215,"style":215},"top -b -n 1 | head -20\n",[38,1911,1912],{"__ignoreMap":215},[219,1913,1914,1916,1919,1922,1925,1927,1930],{"class":221,"line":222},[219,1915,40],{"class":225},[219,1917,1918],{"class":443}," -b",[219,1920,1921],{"class":443}," -n",[219,1923,1924],{"class":443}," 1",[219,1926,1351],{"class":1350},[219,1928,1929],{"class":225}," head",[219,1931,1932],{"class":443}," -20\n",[1845,1934],{},"Или используйте ",[38,1937,44],{}," с сортировкой по памяти (клавиша ",[38,1940,293],{},[38,1942,1943],{},"MEM%",[34,1945,1946,1824,1949,2068,2070,2071,45],{},[66,1947,1948],{},"Проверьте oom_score процессов",[211,1950,1952],{"className":213,"code":1951,"language":92,"meta":215,"style":215},"for pid in $(ps -e | awk '{print $1}' | tail -n +2); do\n  echo \"PID $pid: $(cat /proc/$pid/oom_score 2>/dev/null) (adj: $(cat /proc/$pid/oom_score_adj 2>/dev/null))\"\ndone | sort -k3 -n -r | head -10\n",[38,1953,1954,1999,2044],{"__ignoreMap":215},[219,1955,1956,1959,1963,1966,1969,1972,1975,1977,1980,1983,1985,1988,1990,1993,1996],{"class":221,"line":222},[219,1957,1958],{"class":1350},"for",[219,1960,1962],{"class":1961},"sVt8B"," pid ",[219,1964,1965],{"class":1350},"in",[219,1967,1968],{"class":1961}," $(",[219,1970,1971],{"class":225},"ps",[219,1973,1974],{"class":443}," -e",[219,1976,1351],{"class":1350},[219,1978,1979],{"class":225}," awk",[219,1981,1982],{"class":228}," '{print $1}'",[219,1984,1351],{"class":1350},[219,1986,1987],{"class":225}," tail",[219,1989,1921],{"class":443},[219,1991,1992],{"class":228}," +2",[219,1994,1995],{"class":1961},"); ",[219,1997,1998],{"class":1350},"do\n",[219,2000,2001,2004,2007,2010,2013,2016,2019,2021,2024,2027,2030,2032,2034,2036,2039,2041],{"class":221,"line":235},[219,2002,2003],{"class":443},"  echo",[219,2005,2006],{"class":228}," \"PID ",[219,2008,2009],{"class":1961},"$pid",[219,2011,2012],{"class":228},": $(",[219,2014,2015],{"class":225},"cat",[219,2017,2018],{"class":228}," /proc/",[219,2020,2009],{"class":1961},[219,2022,2023],{"class":228},"/oom_score ",[219,2025,2026],{"class":1350},"2>",[219,2028,2029],{"class":228},"/dev/null) (adj: $(",[219,2031,2015],{"class":225},[219,2033,2018],{"class":228},[219,2035,2009],{"class":1961},[219,2037,2038],{"class":228},"/oom_score_adj ",[219,2040,2026],{"class":1350},[219,2042,2043],{"class":228},"/dev/null))\"\n",[219,2045,2046,2049,2051,2054,2057,2059,2061,2063,2065],{"class":221,"line":387},[219,2047,2048],{"class":1350},"done",[219,2050,1351],{"class":1350},[219,2052,2053],{"class":225}," sort",[219,2055,2056],{"class":443}," -k3",[219,2058,1921],{"class":443},[219,2060,1259],{"class":443},[219,2062,1351],{"class":1350},[219,2064,1929],{"class":225},[219,2066,2067],{"class":443}," -10\n",[1845,2069],{},"Это покажет топ-10 процессов с наивысшим ",[38,2072,1791],{},[900,2074],{},[16,2076,2078],{"id":2077},"методы-решения-проблемы","Методы решения проблемы",[193,2080,2082,2083,2086],{"id":2081},"шаг-1-настройка-oom_score_adj-для-защиты-ключевых-процессов","Шаг 1: Настройка ",[38,2084,2085],{},"oom_score_adj"," для защиты ключевых процессов",[21,2088,2089,2090,2093,2094,2097,2098,2101],{},"Каждому процессу можно задать ",[66,2091,2092],{},"adj","-значение от ",[38,2095,2096],{},"-1000"," (максимальная защита) до ",[38,2099,2100],{},"+1000"," (максимальный приоритет на убийство). Это самый быстрый способ защитить процесс.",[21,2103,2104,2107],{},[66,2105,2106],{},"Для одноразовой настройки"," (до перезагрузки):",[211,2109,2111],{"className":213,"code":2110,"language":92,"meta":215,"style":215},"# Замените \u003CPID> на идентификатор процесса\necho -1000 > /proc/\u003CPID>/oom_score_adj\n",[38,2112,2113,2118],{"__ignoreMap":215},[219,2114,2115],{"class":221,"line":222},[219,2116,2117],{"class":371},"# Замените \u003CPID> на идентификатор процесса\n",[219,2119,2120,2123,2126,2129,2131,2134,2137,2140,2143],{"class":221,"line":235},[219,2121,2122],{"class":443},"echo",[219,2124,2125],{"class":443}," -1000",[219,2127,2128],{"class":1350}," >",[219,2130,2018],{"class":228},[219,2132,2133],{"class":1350},"\u003C",[219,2135,2136],{"class":228},"PI",[219,2138,2139],{"class":1961},"D",[219,2141,2142],{"class":1350},">",[219,2144,2145],{"class":228},"/oom_score_adj\n",[21,2147,2148,2151],{},[66,2149,2150],{},"Для постоянной настройки через systemd"," (рекомендуется):\nСоздайте или отредактируйте юнит:",[211,2153,2157],{"className":2154,"code":2155,"language":2156,"meta":215,"style":215},"language-ini shiki shiki-themes github-light github-dark","# /etc/systemd/system/ваш-сервис.service.d/oom-protect.conf\n[Service]\nOOMScoreAdjust=-1000\n","ini",[38,2158,2159,2164,2169],{"__ignoreMap":215},[219,2160,2161],{"class":221,"line":222},[219,2162,2163],{},"# /etc/systemd/system/ваш-сервис.service.d/oom-protect.conf\n",[219,2165,2166],{"class":221,"line":235},[219,2167,2168],{},"[Service]\n",[219,2170,2171],{"class":221,"line":387},[219,2172,2173],{},"OOMScoreAdjust=-1000\n",[21,2175,2176,2177,45],{},"Затем перезапустите сервис: ",[38,2178,2179],{},"systemctl daemon-reload && systemctl restart ваш-сервис",[21,2181,2182,2185,2186,2189],{},[66,2183,2184],{},"Важно",": Не устанавливайте ",[38,2187,2188],{},"oom_score_adj=-1000"," для всех процессов — это может привести к тому, что OOM Killer не сможет освободить память и система зависнет.",[193,2191,2193],{"id":2192},"шаг-2-использование-cgroups-для-ограничения-памяти","Шаг 2: Использование cgroups для ограничения памяти",[21,2195,2196,2199],{},[66,2197,2198],{},"cgroups (control groups)"," позволяют задать жёсткие лимиты памяти для группы процессов. Это лучший способ для контейнеров и изолированных сервисов.",[21,2201,2202,2205],{},[66,2203,2204],{},"Через systemd"," (современные дистрибутивы):",[211,2207,2209],{"className":213,"code":2208,"language":92,"meta":215,"style":215},"# Запустить команду с лимитом 500 МБ\nsystemd-run --scope -p MemoryMax=500M /путь/к/команде\n\n# Или для существующего сервиса создайте дроп-ин:\n# /etc/systemd/system/ваш-сервис.service.d/limits.conf\n[Service]\nMemoryMax=1G\nMemorySwapMax=2G  # если нужен swap\n",[38,2210,2211,2216,2233,2237,2242,2247,2251,2262],{"__ignoreMap":215},[219,2212,2213],{"class":221,"line":222},[219,2214,2215],{"class":371},"# Запустить команду с лимитом 500 МБ\n",[219,2217,2218,2221,2224,2227,2230],{"class":221,"line":235},[219,2219,2220],{"class":225},"systemd-run",[219,2222,2223],{"class":443}," --scope",[219,2225,2226],{"class":443}," -p",[219,2228,2229],{"class":228}," MemoryMax=500M",[219,2231,2232],{"class":228}," /путь/к/команде\n",[219,2234,2235],{"class":221,"line":387},[219,2236,391],{"emptyLinePlaceholder":390},[219,2238,2239],{"class":221,"line":394},[219,2240,2241],{"class":371},"# Или для существующего сервиса создайте дроп-ин:\n",[219,2243,2244],{"class":221,"line":400},[219,2245,2246],{"class":371},"# /etc/systemd/system/ваш-сервис.service.d/limits.conf\n",[219,2248,2249],{"class":221,"line":415},[219,2250,2168],{"class":1961},[219,2252,2253,2256,2259],{"class":221,"line":1063},[219,2254,2255],{"class":1961},"MemoryMax",[219,2257,2258],{"class":1350},"=",[219,2260,2261],{"class":228},"1G\n",[219,2263,2264,2267,2269,2272],{"class":221,"line":1069},[219,2265,2266],{"class":1961},"MemorySwapMax",[219,2268,2258],{"class":1350},[219,2270,2271],{"class":228},"2G",[219,2273,2274],{"class":371},"  # если нужен swap\n",[21,2276,2277,1824],{},[66,2278,2279],{},"Вручную через cgroup v2",[211,2281,2283],{"className":213,"code":2282,"language":92,"meta":215,"style":215},"# Создайте cgroup\nsudo mkdir /sys/fs/cgroup/mylimit\n# Установите лимит 1 ГБ\necho $((1*1024*1024*1024)) | sudo tee /sys/fs/cgroup/mylimit/memory.max\n# Запустите процесс в этой группе\nsudo echo $$ > /sys/fs/cgroup/mylimit/cgroup.procs && /путь/к/вашему/приложению\n",[38,2284,2285,2290,2300,2305,2330,2335],{"__ignoreMap":215},[219,2286,2287],{"class":221,"line":222},[219,2288,2289],{"class":371},"# Создайте cgroup\n",[219,2291,2292,2294,2297],{"class":221,"line":235},[219,2293,68],{"class":225},[219,2295,2296],{"class":228}," mkdir",[219,2298,2299],{"class":228}," /sys/fs/cgroup/mylimit\n",[219,2301,2302],{"class":221,"line":387},[219,2303,2304],{"class":371},"# Установите лимит 1 ГБ\n",[219,2306,2307,2309,2312,2315,2318,2321,2324,2327],{"class":221,"line":394},[219,2308,2122],{"class":443},[219,2310,2311],{"class":1961}," $((",[219,2313,2314],{"class":225},"1*1024*1024*1024",[219,2316,2317],{"class":1961},")) ",[219,2319,2320],{"class":1350},"|",[219,2322,2323],{"class":225}," sudo",[219,2325,2326],{"class":228}," tee",[219,2328,2329],{"class":228}," /sys/fs/cgroup/mylimit/memory.max\n",[219,2331,2332],{"class":221,"line":400},[219,2333,2334],{"class":371},"# Запустите процесс в этой группе\n",[219,2336,2337,2339,2342,2345,2347,2350,2353],{"class":221,"line":415},[219,2338,68],{"class":225},[219,2340,2341],{"class":228}," echo",[219,2343,2344],{"class":443}," $$",[219,2346,2128],{"class":1350},[219,2348,2349],{"class":228}," /sys/fs/cgroup/mylimit/cgroup.procs",[219,2351,2352],{"class":1961}," && ",[219,2354,2355],{"class":225},"/путь/к/вашему/приложению\n",[193,2357,2359],{"id":2358},"шаг-3-настройка-параметров-ядра","Шаг 3: Настройка параметров ядра",[21,2361,2362],{},"Изменение поведения OOM Killer на уровне ядра.",[21,2364,2365,2368,2369,2372],{},[66,2366,2367],{},"Вариант A: Запретить переcommit памяти"," (строгий контроль):\nВ ",[38,2370,2371],{},"/etc/sysctl.conf"," добавьте:",[211,2374,2378],{"className":2375,"code":2376,"language":2377,"meta":215,"style":215},"language-conf shiki shiki-themes github-light github-dark","vm.overcommit_memory = 2\nvm.overcommit_ratio = 100  # разрешить commit только до 100% RAM+swap\n","conf",[38,2379,2380,2385],{"__ignoreMap":215},[219,2381,2382],{"class":221,"line":222},[219,2383,2384],{},"vm.overcommit_memory = 2\n",[219,2386,2387],{"class":221,"line":235},[219,2388,2389],{},"vm.overcommit_ratio = 100  # разрешить commit только до 100% RAM+swap\n",[21,2391,2392,2393,2396,2397,2400],{},"Примените: ",[38,2394,2395],{},"sudo sysctl -p",". Это предотвратит выделение памяти, которой физически нет, но может вызвать ошибки ",[38,2398,2399],{},"fork: Cannot allocate memory"," у приложений.",[21,2402,2403,2406],{},[66,2404,2405],{},"Вариант B: Режим паники вместо убийства"," (для отладки):",[211,2408,2410],{"className":2375,"code":2409,"language":2377,"meta":215,"style":215},"vm.panic_on_oom = 2\n",[38,2411,2412],{"__ignoreMap":215},[219,2413,2414],{"class":221,"line":222},[219,2415,2409],{},[21,2417,2418],{},"При нехватке памяти система упадёт в kernel panic, что полезно для сбора дампов, но неприемлемо для продакшена.",[21,2420,2421,2424],{},[66,2422,2423],{},"Вариант C: Изменить степень агрессивности OOM Killer"," (редко используется):",[211,2426,2428],{"className":2375,"code":2427,"language":2377,"meta":215,"style":215},"vm.oom_kill_allocating_task = 1  # убивать процесс, который выделил память, а не случайный\n",[38,2429,2430],{"__ignoreMap":215},[219,2431,2432],{"class":221,"line":222},[219,2433,2427],{},[193,2435,2437],{"id":2436},"шаг-4-оптимизация-приложения-или-увеличение-ресурсов","Шаг 4: Оптимизация приложения или увеличение ресурсов",[21,2439,2440],{},"Если проблема вызвана утечкой памяти:",[31,2442,2443,2455,2465],{},[34,2444,2445,2446,111,2449,111,2452,45],{},"Используйте профилировщики: ",[38,2447,2448],{},"valgrind --leak-check=full",[38,2450,2451],{},"heaptrack",[38,2453,2454],{},"perf",[34,2456,2457,2458,1891,2461,2464],{},"Для Java-приложений: настройте ",[38,2459,2460],{},"-Xmx",[38,2462,2463],{},"-Xms"," в JVM.",[34,2466,2467,2468,117],{},"Для Python: проверьте на утечки (например, через ",[38,2469,2470],{},"tracemalloc",[21,2472,2473],{},"Если нагрузка обоснована:",[31,2475,2476,2479],{},[34,2477,2478],{},"Увеличьте объём RAM на сервере.",[34,2480,2481,2482],{},"Добавьте swap-файл (временное решение, но не панацея):\n",[211,2483,2485],{"className":213,"code":2484,"language":92,"meta":215,"style":215},"sudo fallocate -l 4G /swapfile\nsudo chmod 600 /swapfile\nsudo mkswap /swapfile\nsudo swapon /swapfile\n",[38,2486,2487,2503,2515,2524],{"__ignoreMap":215},[219,2488,2489,2491,2494,2497,2500],{"class":221,"line":222},[219,2490,68],{"class":225},[219,2492,2493],{"class":228}," fallocate",[219,2495,2496],{"class":443}," -l",[219,2498,2499],{"class":228}," 4G",[219,2501,2502],{"class":228}," /swapfile\n",[219,2504,2505,2507,2510,2513],{"class":221,"line":235},[219,2506,68],{"class":225},[219,2508,2509],{"class":228}," chmod",[219,2511,2512],{"class":443}," 600",[219,2514,2502],{"class":228},[219,2516,2517,2519,2522],{"class":221,"line":387},[219,2518,68],{"class":225},[219,2520,2521],{"class":228}," mkswap",[219,2523,2502],{"class":228},[219,2525,2526,2528,2531],{"class":221,"line":394},[219,2527,68],{"class":225},[219,2529,2530],{"class":228}," swapon",[219,2532,2502],{"class":228},[16,2534,2536],{"id":2535},"профилактика-oom-killer","Профилактика OOM Killer",[60,2538,2539,2563,2604],{},[34,2540,2541,1824,2544],{},[66,2542,2543],{},"Мониторинг памяти",[31,2545,2546,2554,2557],{},[34,2547,1586,2548,1570,2551,45],{},[38,2549,2550],{},"Prometheus + node_exporter",[38,2552,2553],{},"Zabbix",[34,2555,2556],{},"Настройте алерты при использовании RAM > 80%.",[34,2558,2559,2560,45],{},"Пример команды для быстрой проверки: ",[38,2561,2562],{},"awk '/MemAvailable/ {print $2/1024\" GB available\"}' /proc/meminfo",[34,2564,2565,1824,2568],{},[66,2566,2567],{},"Логирование использования памяти",[211,2569,2571],{"className":213,"code":2570,"language":92,"meta":215,"style":215},"# Запись каждые 5 минут в cron\n*/5 * * * * /usr/bin/free -h >> /var/log/memory.log\n",[38,2572,2573,2578],{"__ignoreMap":215},[219,2574,2575],{"class":221,"line":222},[219,2576,2577],{"class":371},"# Запись каждые 5 минут в cron\n",[219,2579,2580,2583,2586,2588,2591,2593,2595,2598,2601],{"class":221,"line":235},[219,2581,2582],{"class":1350},"*",[219,2584,2585],{"class":1961},"/5 ",[219,2587,2582],{"class":1350},[219,2589,2590],{"class":1350}," *",[219,2592,2590],{"class":1350},[219,2594,2590],{"class":1350},[219,2596,2597],{"class":1961}," /usr/bin/free -h ",[219,2599,2600],{"class":1350},">>",[219,2602,2603],{"class":1961}," /var/log/memory.log\n",[34,2605,2606,1824,2609],{},[66,2607,2608],{},"Регулярный аудит процессов",[31,2610,2611,2616],{},[34,2612,2613,2614,45],{},"Ищите процессы с аномально высоким ",[38,2615,1791],{},[34,2617,2618],{},"Проверяйте контейнеры на соответствие лимитам.",[16,2620,2622],{"id":2621},"особенности-в-контейнерах-dockerkubernetes","Особенности в контейнерах (Docker/Kubernetes)",[21,2624,2625],{},"В контейнерах OOM Killer работает внутри изоляции cgroups, но если контейнер исчерпает свой лимит, ядро убьёт процесс внутри него.",[21,2627,2628,1824],{},[66,2629,2630],{},"Docker",[211,2632,2634],{"className":213,"code":2633,"language":92,"meta":215,"style":215},"# Запуск с лимитом 512 МБ RAM и 1 ГБ swap\ndocker run -d --memory=512m --memory-swap=1g ваш-образ\n\n# Проверка лимитов\ndocker stats\n",[38,2635,2636,2641,2661,2665,2670],{"__ignoreMap":215},[219,2637,2638],{"class":221,"line":222},[219,2639,2640],{"class":371},"# Запуск с лимитом 512 МБ RAM и 1 ГБ swap\n",[219,2642,2643,2646,2649,2652,2655,2658],{"class":221,"line":235},[219,2644,2645],{"class":225},"docker",[219,2647,2648],{"class":228}," run",[219,2650,2651],{"class":443}," -d",[219,2653,2654],{"class":443}," --memory=512m",[219,2656,2657],{"class":443}," --memory-swap=1g",[219,2659,2660],{"class":228}," ваш-образ\n",[219,2662,2663],{"class":221,"line":387},[219,2664,391],{"emptyLinePlaceholder":390},[219,2666,2667],{"class":221,"line":394},[219,2668,2669],{"class":371},"# Проверка лимитов\n",[219,2671,2672,2674],{"class":221,"line":400},[219,2673,2645],{"class":225},[219,2675,2676],{"class":228}," stats\n",[21,2678,2679,1824],{},[66,2680,2681],{},"Kubernetes",[211,2683,2687],{"className":2684,"code":2685,"language":2686,"meta":215,"style":215},"language-yaml shiki shiki-themes github-light github-dark","resources:\n  limits:\n    memory: \"512Mi\"\n    cpu: \"500m\"\n  requests:\n    memory: \"256Mi\"\n","yaml",[38,2688,2689,2698,2705,2716,2726,2733],{"__ignoreMap":215},[219,2690,2691,2695],{"class":221,"line":222},[219,2692,2694],{"class":2693},"s9eBZ","resources",[219,2696,2697],{"class":1961},":\n",[219,2699,2700,2703],{"class":221,"line":235},[219,2701,2702],{"class":2693},"  limits",[219,2704,2697],{"class":1961},[219,2706,2707,2710,2713],{"class":221,"line":387},[219,2708,2709],{"class":2693},"    memory",[219,2711,2712],{"class":1961},": ",[219,2714,2715],{"class":228},"\"512Mi\"\n",[219,2717,2718,2721,2723],{"class":221,"line":394},[219,2719,2720],{"class":2693},"    cpu",[219,2722,2712],{"class":1961},[219,2724,2725],{"class":228},"\"500m\"\n",[219,2727,2728,2731],{"class":221,"line":400},[219,2729,2730],{"class":2693},"  requests",[219,2732,2697],{"class":1961},[219,2734,2735,2737,2739],{"class":221,"line":415},[219,2736,2709],{"class":2693},[219,2738,2712],{"class":1961},[219,2740,2741],{"class":228},"\"256Mi\"\n",[21,2743,2744,2745,1891,2748,2751],{},"Убедитесь, что ",[38,2746,2747],{},"requests",[38,2749,2750],{},"limits"," установлены адекватно. При превышении лимита поды будет убит (OOMKilled).",[16,2753,2755],{"id":2754},"частые-ошибки-при-настройке","Частые ошибки при настройке",[31,2757,2758,2766,2772,2782],{},[34,2759,2760,2765],{},[66,2761,2762,2763],{},"Защита всех процессов через ",[38,2764,2188],{},": Это отключает OOM Killer полностью, что может привести к полной блокировке системы при нехватке памяти.",[34,2767,2768,2771],{},[66,2769,2770],{},"Установка слишком высоких лимитов cgroups",": Если лимит выше, чем физическая RAM, OOM Killer всё равно сработает на уровне хоста.",[34,2773,2774,2777,2778,2781],{},[66,2775,2776],{},"Игнорирование swap",": Swap замедляет систему, но может дать время на реакцию. Полный отказ от swap (",[38,2779,2780],{},"swapoff -a",") ускорит срабатывание OOM Killer.",[34,2783,2784,2787,2788,2790,2791,2794,2795,2797],{},[66,2785,2786],{},"Неправильное толкование логов",": Сообщение ",[38,2789,1780],{}," может быть и от ручного ",[38,2792,2793],{},"kill -9",". Всегда проверяйте ",[38,2796,1834],{}," и код выхода процесса (137 = SIGKILL, часто от OOM).",[16,2799,2801],{"id":2800},"что-дальше","Что дальше?",[21,2803,2804],{},"После применения мер проверьте:",[60,2806,2807,2814,2817],{},[34,2808,2809,2810,2813],{},"Стабильность работы под нагрузкой (тесты с ",[38,2811,2812],{},"stress-ng"," или реальной нагрузкой).",[34,2815,2816],{},"Логи на отсутствие новых записей OOM Killer.",[34,2818,2819],{},"Корректность работы защищённых процессов (не потребляют ли они слишком много памяти в ущерб другим).",[21,2821,2822],{},"Если проблема остаётся, рассмотрите архитектурные изменения: шардирование, кэширование, использование более эффективных алгоритмов обработки данных.",[21,2824,2825,2828],{},[66,2826,2827],{},"Запомните",": OOM Killer — это последний рубеж защиты системы. Лучшая стратегия — не допускать ситуаций, когда он срабатывает, через мониторинг и грамотное планирование ресурсов.",[1406,2830,2831],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":215,"searchDepth":235,"depth":235,"links":2833},[2834,2835,2836,2837,2844,2845,2846,2847],{"id":1750,"depth":235,"text":1751},{"id":1784,"depth":235,"text":1785},{"id":1812,"depth":235,"text":1813},{"id":2077,"depth":235,"text":2078,"children":2838},[2839,2841,2842,2843],{"id":2081,"depth":387,"text":2840},"Шаг 1: Настройка oom_score_adj для защиты ключевых процессов",{"id":2192,"depth":387,"text":2193},{"id":2358,"depth":387,"text":2359},{"id":2436,"depth":387,"text":2437},{"id":2535,"depth":235,"text":2536},{"id":2621,"depth":235,"text":2622},{"id":2754,"depth":235,"text":2755},{"id":2800,"depth":235,"text":2801},"2026-02-14 11:52:27","Подробное руководство по работе OOM Killer в Linux. Узнайте, как анализировать логи, настроить параметры ядра и предотвратить завершение процессов из-за нехватки памяти. Пошаговые инструкции для администраторов.",[2851,2854,2857,2860],{"answer":2852,"question":2853},"OOM Killer работает на основе очков (`oom_score`), которые вычисляются исходя из использования памяти и других факторов. Если процесс потребляет много RAM, даже будучи системным, он может быть убит. Настройка `oom_score_adj` помогает защитить критические процессы.","Почему OOM Killer убивает важные системные процессы?",{"answer":2855,"question":2856},"Можно установить `vm.panic_on_oom=2` в `/etc/sysctl.conf` и применить `sysctl -p`. При нехватке памяти система вместо убийства процессов упадёт в панику (kernel panic), что полезно для отладки, но не для продакшена.","Как временно отключить OOM Killer?",{"answer":2858,"question":2859},"Для процесса с PID `\u003CPID>` запишите отрицательное значение (например, `-1000`) в `/proc/\u003CPID>/oom_score_adj`. Это значительно снизит его `oom_score` и вероятность убийства. Для постоянной защиты настройте через systemd или скрипт.","Как защитить конкретный процесс от OOM Killer?",{"answer":2861,"question":2862},"Да, но контейнеры изолированы через cgroups. OOM Killer убивает процессы внутри контейнера, если контейнер исчерпал свой лимит памяти. Настройте `--memory` и `--memory-swap` при запуске контейнера, а также `oom_score_adj` внутри него.","OOM Killer работает внутри Docker-контейнеров?",[2864,2867,2870,2873,2876,2879],{"name":2865,"text":2866},"Анализ логов ядра на наличие записей OOM Killer","Используйте команду `dmesg | grep -i kill` или просмотрите `/var/log/syslog` на наличие строк с \\Out of memory\\ и \\Killed process\\. Запишите имя процесса и его PID.",{"name":2868,"text":2869},"Проверка текущего использования памяти","Выполните `free -h` для общего обзора памяти и swap. Используйте `top` или `htop` для сортировки процессов по использованию RAM (клавиша `M` в htop).",{"name":2871,"text":2872},"Настройка oom_score_adj для защиты процесса","Для процесса с PID `\u003CPID>` выполните `echo -1000 > /proc/\u003CPID>/oom_score_adj`. Это значение от -1000 до +1000, где -1000 максимально защищает процесс. Для перманентной настройки используйте systemd-юнит с `OOMScoreAdjust=-1000`.",{"name":2874,"text":2875},"Использование cgroups для ограничения памяти","Создайте cgroup через systemd: `systemd-run --scope -p MemoryMax=500M ваша_команда`. Или вручную: `mkdir /sys/fs/cgroup/mylimit && echo 500M > /sys/fs/cgroup/mylimit/memory.max` и запустите процесс в этой группе.",{"name":2877,"text":2878},"Настройка параметров ядра","Отредактируйте `/etc/sysctl.conf` и добавьте строки: `vm.panic_on_oom=2` (паника вместо убийства) или `vm.overcommit_memory=2` (запрет переcommit'а памяти). Примените `sysctl -p`.",{"name":2880,"text":2881},"Оптимизация приложения или увеличение RAM","Если проблема хроническая, проанализируйте утечки памяти в приложении (например, через `valgrind`). На сервере без возможности оптимизации рассмотрите апгрейд оперативной памяти.","PT30M",[2884,2885,2886,2887,2085,2888,2889,2890,2891,2892],"oom killer linux","killed process linux","нехватка памяти linux","как отключить oom killer","linux out of memory","убийство процессов ядром","cgroups memory limit","dmesg oom killer","vm.overcommit_memory",{},[2895,2896,2897],"/errors/linux/out-of-memory","/guides/linux/monitor-memory-usage","/guides/linux/systemd-cgroups","Ошибки Linux",{"title":1741,"description":2849},"high","errors/linux/oom-killer","Этот гайд объясняет механизм OOM Killer в Linux и предоставляет практические шаги по диагностике и предотвращению завершения процессов из-за нехватки памяти. Вы научитесь анализировать логи, настраивать приоритеты процессов и управлять памятью с помощью cgroups.",[2904,2905,2906,2907,2908,2909],"linux errors","oom killer","memory management","администрирование","kernel","cgroups","yLKZsBBOdw0WxB2klhnj1kgSj9b0cNfsSTCuvycB6Aw"]