[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/errors/linux/docker-oom-killed":3,"mdc--kqlrnh-key":1040,"mdc--h6a4l5-key":1051,"mdc--33torb-key":1084,"mdc--o8qbzi-key":1100,"mdc-54xbh0-key":1116,"mdc--7ri4zt-key":1147,"mdc-uqrx0a-key":1177,"mdc-7eaiu1-key":1185,"related-/errors/linux/docker-container-exited,/guides/linux/docker-memory-limits,/errors/linux/docker-no-space-left-on-device":1209},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":974,"code":27,"createdAt":975,"description":976,"difficulty":977,"draft":978,"estimatedTime":979,"extension":980,"faq":981,"howToSteps":994,"howToTotalTime":1007,"image":974,"keywords":1008,"locale":1019,"meta":1020,"navigation":134,"path":1021,"platform":1022,"related":1023,"section":1027,"seo":1028,"severity":1029,"stem":1030,"summary":1031,"tags":1032,"twitterCreator":974,"twitterSite":974,"type":1038,"updatedAt":975,"__hash__":1039},"content_ru/errors/linux/docker-oom-killed.md","Docker OOMKilled: причины и способы решения ошибки нехватки памяти",[7,8,9,10],"Docker Engine 20.10+","Docker Compose 1.29+","Ubuntu 20.04/22.04","CentOS 8/RHEL 8","FixPedia Team",{"type":13,"value":14,"toc":954},"minimark",[15,20,33,45,170,173,186,190,244,248,251,260,338,344,449,463,467,470,474,481,498,503,523,527,542,546,562,566,573,609,614,634,643,647,650,664,752,760,764,767,813,817,866,869,873,885,893,919,927,950],[16,17,19],"h2",{"id":18},"что-означает-ошибка-oomkilled","Что означает ошибка OOMKilled",[21,22,23,24,28,29,32],"p",{},"Ошибка ",[25,26,27],"strong",{},"OOMKilled"," (Out Of Memory Killed) возникает, когда ядро Linux принудительно завершает процесс в контейнере Docker из-за нехватки оперативной памяти (RAM). Это срабатывание механизма ",[25,30,31],{},"OOM killer"," (Out-Of-Memory killer).",[21,34,35,36,39,40,44],{},"Контейнер завершается с кодом выхода ",[25,37,38],{},"137"," (128 + 9, где 9 — сигнал ",[41,42,43],"code",{},"SIGKILL","). В логах Docker вы увидите:",[46,47,52],"pre",{"className":48,"code":49,"language":50,"meta":51,"style":51},"language-bash shiki shiki-themes github-light github-dark","$ 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","bash","",[41,53,54,74,101,129,136,149,164],{"__ignoreMap":51},[55,56,59,63,67,70],"span",{"class":57,"line":58},"line",1,[55,60,62],{"class":61},"sScJk","$",[55,64,66],{"class":65},"sZZnC"," docker",[55,68,69],{"class":65}," ps",[55,71,73],{"class":72},"sj4cs"," -a\n",[55,75,77,80,83,86,89,92,95,98],{"class":57,"line":76},2,[55,78,79],{"class":61},"CONTAINER",[55,81,82],{"class":65}," ID",[55,84,85],{"class":65},"   IMAGE",[55,87,88],{"class":65},"          COMMAND",[55,90,91],{"class":65},"                  CREATED",[55,93,94],{"class":65},"        STATUS",[55,96,97],{"class":65},"                     PORTS",[55,99,100],{"class":65},"     NAMES\n",[55,102,104,107,110,113,116,119,122,125],{"class":57,"line":103},3,[55,105,106],{"class":61},"a1b2c3d4e5f6",[55,108,109],{"class":65},"   my-app:latest",[55,111,112],{"class":65},"  \"python app.py\"",[55,114,115],{"class":72},"          2",[55,117,118],{"class":65}," hours",[55,120,121],{"class":65}," ago",[55,123,124],{"class":65},"    Exited",[55,126,128],{"class":127},"sVt8B"," (137) 5 minutes ago            my-app\n",[55,130,132],{"class":57,"line":131},4,[55,133,135],{"emptyLinePlaceholder":134},true,"\n",[55,137,139,141,143,146],{"class":57,"line":138},5,[55,140,62],{"class":61},[55,142,66],{"class":65},[55,144,145],{"class":65}," logs",[55,147,148],{"class":65}," my-app\n",[55,150,152,155,158,161],{"class":57,"line":151},6,[55,153,154],{"class":72},"...",[55,156,157],{"class":127}," (логи ",[55,159,160],{"class":65},"приложения",[55,162,163],{"class":127},") ...\n",[55,165,167],{"class":57,"line":166},7,[55,168,169],{"class":61},"Killed\n",[21,171,172],{},"Ошибка характерна для:",[174,175,176,180,183],"ul",{},[177,178,179],"li",{},"Контейнеров с высоким потреблением памяти (базы данных, обработка данных, Java-приложения).",[177,181,182],{},"Систем с ограниченной RAM (например, облачные инстансы малого размера).",[177,184,185],{},"Сценариев, где несколько контейнеров конкурируют за память.",[16,187,189],{"id":188},"причины-возникновения","Причины возникновения",[191,192,193,199,209,215,221,231],"ol",{},[177,194,195,198],{},[25,196,197],{},"Недостаточный объём RAM на хосте",". Суммарное потребление памяти всеми контейнерами и системами превышает доступную физическую память.",[177,200,201,204,205,208],{},[25,202,203],{},"Отсутствие лимитов памяти у контейнера",". Если не задать ",[41,206,207],{},"--memory",", контейнер может использовать всю свободную RAM хоста, что приведёт к OOM.",[177,210,211,214],{},[25,212,213],{},"Утечки памяти в приложении",". Программа внутри контейнера постепенно потребляет всё больше памяти (например, из-за неосвобождения ресурсов).",[177,216,217,220],{},[25,218,219],{},"Неправильно настроенный swap",". На хосте может быть недостаточно или отсутствовать swap-пространство, что ускоряет исчерпание RAM.",[177,222,223,226,227,230],{},[25,224,225],{},"Агрессивные настройки OOM killer",". Ядро может убивать контейнеры с высоким ",[41,228,229],{},"oom_score"," (по умолчанию у контейнеров он выше, чем у системных процессов).",[177,232,233,236,237,239,240,243],{},[25,234,235],{},"Запуск контейнера без ограничений на memory-swap",". Если задан только ",[41,238,207],{},", но не ",[41,241,242],{},"--memory-swap",", контейнер может использовать swap, что иногда маскирует проблему, но приводит к деградации производительности.",[16,245,247],{"id":246},"способ-1-настройка-лимитов-памяти-при-запуске-контейнера","Способ 1: Настройка лимитов памяти при запуске контейнера",[21,249,250],{},"Самый прямой способ — явно задать лимиты памяти для контейнера. Это предотвратит исчерпание памяти хоста и гарантирует, что контейнер не будет убит, пока не достигнет своего лимита.",[252,253,255,256,259],"h3",{"id":254},"для-docker-run","Для ",[41,257,258],{},"docker run",":",[46,261,263],{"className":48,"code":262,"language":50,"meta":51,"style":51},"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",[41,264,265,279,289,301,318,333],{"__ignoreMap":51},[55,266,267,270,273,276],{"class":57,"line":58},[55,268,269],{"class":61},"docker",[55,271,272],{"class":65}," run",[55,274,275],{"class":72}," -d",[55,277,278],{"class":72}," \\\n",[55,280,281,284,287],{"class":57,"line":76},[55,282,283],{"class":72},"  --name",[55,285,286],{"class":65}," my-app",[55,288,278],{"class":72},[55,290,291,294,297],{"class":57,"line":103},[55,292,293],{"class":72},"  --memory=512m",[55,295,296],{"class":72}," \\ ",[55,298,300],{"class":299},"sJ8bj","         # жёсткий лимит RAM\n",[55,302,303,306,310,313,315],{"class":57,"line":131},[55,304,305],{"class":127},"  --memory-swap",[55,307,309],{"class":308},"szBVR","=",[55,311,312],{"class":65},"1g",[55,314,296],{"class":72},[55,316,317],{"class":299},"      # общий лимит (RAM + swap). Если не задать, то по умолчанию равно --memory.\n",[55,319,320,323,325,328,330],{"class":57,"line":138},[55,321,322],{"class":127},"  --memory-reservation",[55,324,309],{"class":308},[55,326,327],{"class":65},"256m",[55,329,296],{"class":72},[55,331,332],{"class":127},"# мягкий лимит, который Docker пытается соблюдать\n",[55,334,335],{"class":57,"line":151},[55,336,337],{"class":61},"  my-image:latest\n",[252,339,255,341,259],{"id":340},"для-docker-composeyml",[41,342,343],{},"docker-compose.yml",[46,345,349],{"className":346,"code":347,"language":348,"meta":51,"style":51},"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",[41,350,351,363,371,378,388,395,402,409,420,431,439],{"__ignoreMap":51},[55,352,353,357,360],{"class":57,"line":58},[55,354,356],{"class":355},"s9eBZ","version",[55,358,359],{"class":127},": ",[55,361,362],{"class":65},"'3.8'\n",[55,364,365,368],{"class":57,"line":76},[55,366,367],{"class":355},"services",[55,369,370],{"class":127},":\n",[55,372,373,376],{"class":57,"line":103},[55,374,375],{"class":355},"  app",[55,377,370],{"class":127},[55,379,380,383,385],{"class":57,"line":131},[55,381,382],{"class":355},"    image",[55,384,359],{"class":127},[55,386,387],{"class":65},"my-image:latest\n",[55,389,390,393],{"class":57,"line":138},[55,391,392],{"class":355},"    deploy",[55,394,370],{"class":127},[55,396,397,400],{"class":57,"line":151},[55,398,399],{"class":355},"      resources",[55,401,370],{"class":127},[55,403,404,407],{"class":57,"line":166},[55,405,406],{"class":355},"        limits",[55,408,370],{"class":127},[55,410,412,415,417],{"class":57,"line":411},8,[55,413,414],{"class":355},"          memory",[55,416,359],{"class":127},[55,418,419],{"class":65},"512M\n",[55,421,423,426,428],{"class":57,"line":422},9,[55,424,425],{"class":355},"          memory-swap",[55,427,359],{"class":127},[55,429,430],{"class":65},"1G\n",[55,432,434,437],{"class":57,"line":433},10,[55,435,436],{"class":355},"        reservations",[55,438,370],{"class":127},[55,440,442,444,446],{"class":57,"line":441},11,[55,443,414],{"class":355},[55,445,359],{"class":127},[55,447,448],{"class":65},"256M\n",[450,451,452],"blockquote",{},[21,453,454,455,458,459,462],{},"💡 ",[25,456,457],{},"Совет",": Начинайте с лимита, немного превышающего нормальное потребление приложения (можно узнать через ",[41,460,461],{},"docker stats","). Не устанавливайте лимит равным всей RAM хоста — оставьте память для системы и других процессов.",[16,464,466],{"id":465},"способ-2-оптимизация-приложения-в-контейнере","Способ 2: Оптимизация приложения в контейнере",[21,468,469],{},"Если лимиты уже настроены, но контейнер всё равно получает OOM, нужно уменьшать потребление памяти самим приложением.",[252,471,473],{"id":472},"для-java-приложений","Для Java-приложений:",[21,475,476,477,480],{},"Настройте параметры JVM в ",[41,478,479],{},"Dockerfile"," или команде запуска:",[46,482,486],{"className":483,"code":484,"language":485,"meta":51,"style":51},"language-dockerfile shiki shiki-themes github-light github-dark","ENV JAVA_OPTS=\"-Xmx256m -Xms128m\"\nCMD java $JAVA_OPTS -jar app.jar\n","dockerfile",[41,487,488,493],{"__ignoreMap":51},[55,489,490],{"class":57,"line":58},[55,491,492],{},"ENV JAVA_OPTS=\"-Xmx256m -Xms128m\"\n",[55,494,495],{"class":57,"line":76},[55,496,497],{},"CMD java $JAVA_OPTS -jar app.jar\n",[21,499,500,501,259],{},"Или в ",[41,502,343],{},[46,504,506],{"className":346,"code":505,"language":348,"meta":51,"style":51},"environment:\n  - JAVA_OPTS=-Xmx256m\n",[41,507,508,515],{"__ignoreMap":51},[55,509,510,513],{"class":57,"line":58},[55,511,512],{"class":355},"environment",[55,514,370],{"class":127},[55,516,517,520],{"class":57,"line":76},[55,518,519],{"class":127},"  - ",[55,521,522],{"class":65},"JAVA_OPTS=-Xmx256m\n",[252,524,526],{"id":525},"для-pythonnodejs","Для Python/Node.js:",[174,528,529,532,539],{},[177,530,531],{},"Используйте стриминговую обработку больших файлов вместо загрузки в память.",[177,533,534,535,538],{},"Уменьшите размер кэшей (например, в Django ",[41,536,537],{},"CACHES['default']['OPTIONS']['MAX_ENTRIES']",").",[177,540,541],{},"Обновите библиотеки — иногда утечки памяти исправляются в новых версиях.",[252,543,545],{"id":544},"для-веб-серверов-nginxapache","Для веб-серверов (Nginx/Apache):",[174,547,548,559],{},[177,549,550,551,554,555,558],{},"Уменьшите ",[41,552,553],{},"worker_processes"," и ",[41,556,557],{},"worker_connections",".",[177,560,561],{},"Настройте буферизацию.",[16,563,565],{"id":564},"способ-3-настройка-oom-score-adjustment","Способ 3: Настройка OOM score adjustment",[21,567,568,569,572],{},"Вы можете влиять на приоритет контейнера при выборе жертвы OOM killer. Параметр ",[41,570,571],{},"--oom-score-adj"," (от -1000 до 1000) задаёт \"вес\" контейнера. Чем ниже значение, тем меньше шансов, что контейнер будет убит.",[46,574,576],{"className":48,"code":575,"language":50,"meta":51,"style":51},"docker run -d \\\n  --name critical-app \\\n  --oom-score-adj=-500 \\\n  my-critical-image\n",[41,577,578,588,597,604],{"__ignoreMap":51},[55,579,580,582,584,586],{"class":57,"line":58},[55,581,269],{"class":61},[55,583,272],{"class":65},[55,585,275],{"class":72},[55,587,278],{"class":72},[55,589,590,592,595],{"class":57,"line":76},[55,591,283],{"class":72},[55,593,594],{"class":65}," critical-app",[55,596,278],{"class":72},[55,598,599,602],{"class":57,"line":103},[55,600,601],{"class":72},"  --oom-score-adj=-500",[55,603,278],{"class":72},[55,605,606],{"class":57,"line":131},[55,607,608],{"class":65},"  my-critical-image\n",[21,610,611],{},[25,612,613],{},"Как выбрать значение:",[174,615,616,622,628],{},[177,617,618,621],{},[41,619,620],{},"-1000"," — максимальная защита (контейнер будет убит в последнюю очередь, но не гарантировано).",[177,623,624,627],{},[41,625,626],{},"0"," — значение по умолчанию.",[177,629,630,633],{},[41,631,632],{},"1000"," — максимальный приоритет на убийство (не рекомендуется).",[450,635,636],{},[21,637,638,639,642],{},"⚠️ ",[25,640,641],{},"Важно",": Это не отменяет OOM killer, а лишь меняет порядок. Если память закончится, какой-то процесс всё равно будет убит.",[16,644,646],{"id":645},"способ-4-увеличение-памяти-хоста-или-настройка-swap","Способ 4: Увеличение памяти хоста или настройка swap",[21,648,649],{},"Если проблема в нехватке ресурсов на уровне хоста:",[191,651,652,658],{},[177,653,654,657],{},[25,655,656],{},"Увеличьте RAM"," на виртуальной машине/сервере (например, в AWS измените тип инстанса).",[177,659,660,663],{},[25,661,662],{},"Добавьте swap-пространство",", если его нет или оно мало:",[46,665,667],{"className":48,"code":666,"language":50,"meta":51,"style":51},"# Проверьте текущий 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",[41,668,669,674,682,686,691,708,720,729,738,742,747],{"__ignoreMap":51},[55,670,671],{"class":57,"line":58},[55,672,673],{"class":299},"# Проверьте текущий swap\n",[55,675,676,679],{"class":57,"line":76},[55,677,678],{"class":61},"swapon",[55,680,681],{"class":72}," --show\n",[55,683,684],{"class":57,"line":103},[55,685,135],{"emptyLinePlaceholder":134},[55,687,688],{"class":57,"line":131},[55,689,690],{"class":299},"# Создайте swap-файл 2 ГБ\n",[55,692,693,696,699,702,705],{"class":57,"line":138},[55,694,695],{"class":61},"sudo",[55,697,698],{"class":65}," fallocate",[55,700,701],{"class":72}," -l",[55,703,704],{"class":65}," 2G",[55,706,707],{"class":65}," /swapfile\n",[55,709,710,712,715,718],{"class":57,"line":151},[55,711,695],{"class":61},[55,713,714],{"class":65}," chmod",[55,716,717],{"class":72}," 600",[55,719,707],{"class":65},[55,721,722,724,727],{"class":57,"line":166},[55,723,695],{"class":61},[55,725,726],{"class":65}," mkswap",[55,728,707],{"class":65},[55,730,731,733,736],{"class":57,"line":411},[55,732,695],{"class":61},[55,734,735],{"class":65}," swapon",[55,737,707],{"class":65},[55,739,740],{"class":57,"line":422},[55,741,135],{"emptyLinePlaceholder":134},[55,743,744],{"class":57,"line":433},[55,745,746],{"class":299},"# Чтобы swap включался автоматически, добавьте в /etc/fstab:\n",[55,748,749],{"class":57,"line":441},[55,750,751],{"class":299},"# /swapfile none swap sw 0 0\n",[450,753,754],{},[21,755,638,756,759],{},[25,757,758],{},"Внимание",": Swap на SSD может ускорить износ диска. Используйте только если нет возможности добавить RAM.",[16,761,763],{"id":762},"способ-5-мониторинг-и-автоматическое-реагирование","Способ 5: Мониторинг и автоматическое реагирование",[21,765,766],{},"Настройте мониторинг памяти и автоматические действия:",[174,768,769,801,807],{},[177,770,771,777,778],{},[25,772,773,774],{},"Используйте ",[41,775,776],{},"docker events"," для отслеживания событий OOM:\n",[46,779,781],{"className":48,"code":780,"language":50,"meta":51,"style":51},"docker events --filter 'event=die' --filter 'status=OOMKilled'\n",[41,782,783],{"__ignoreMap":51},[55,784,785,787,790,793,796,798],{"class":57,"line":58},[55,786,269],{"class":61},[55,788,789],{"class":65}," events",[55,791,792],{"class":72}," --filter",[55,794,795],{"class":65}," 'event=die'",[55,797,792],{"class":72},[55,799,800],{"class":65}," 'status=OOMKilled'\n",[177,802,803,806],{},[25,804,805],{},"Интегрируйте с системами мониторинга"," (Prometheus + cAdvisor, Datadog). Настройте алерты при достижении 80-90% памяти.",[177,808,809,812],{},[25,810,811],{},"Используйте оркестраторы"," (Kubernetes, Docker Swarm), которые могут автоматически перезапускать контейнеры и масштабироваться при нехватке ресурсов.",[16,814,816],{"id":815},"профилактика","Профилактика",[191,818,819,829,838,848,854,860],{},[177,820,821,824,825,554,827,558],{},[25,822,823],{},"Всегда задавайте лимиты памяти"," для продакшн-контейнеров. Используйте ",[41,826,207],{},[41,828,242],{},[177,830,831,834,835,837],{},[25,832,833],{},"Регулярно анализируйте потребление памяти"," через ",[41,836,461],{}," или мониторинг.",[177,839,840,843,844,847],{},[25,841,842],{},"Тестируйте приложение под нагрузкой"," с ограниченной памятью (например, через ",[41,845,846],{},"stress-ng"," внутри контейнера).",[177,849,850,853],{},[25,851,852],{},"Настройте health checks"," в Docker Compose/Kubernetes, чтобы быстро обнаруживать падение из-за OOM.",[177,855,856,859],{},[25,857,858],{},"Избегайте запуска нескольких memory-intensive контейнеров на одном хосте"," без должного контроля.",[177,861,862,865],{},[25,863,864],{},"Обновляйте ядро и Docker"," — новые версии улучшают управление памятью и OOM killer.",[867,868],"in-article-ad",{},[16,870,872],{"id":871},"faq","FAQ",[21,874,875,878,881,882,884],{},[25,876,877],{},"Можно ли полностью отключить OOM killer для контейнера?",[879,880],"br",{},"\nНет, OOM killer — это механизм ядра Linux. Вы можете только уменьшить ",[41,883,229],{}," контейнера или увеличить лимиты памяти, чтобы избежать срабатывания.",[21,886,887,890,892],{},[25,888,889],{},"Почему контейнер с лимитом памяти всё равно получает OOMKilled?",[879,891],{},"\nЕсли лимит задан, контейнер должен быть остановлен Docker до достижения лимита (с кодом 137). Но если лимит не задан, контейнер может использовать всю RAM хоста, и тогда OOM killer ядра его убьёт. Проверьте, что лимит установлен корректно.",[21,894,895,898,900,901,904,905,908,909,908,912,915,916,558],{},[25,896,897],{},"Как диагностировать, какое приложение в контейнере потребляет много памяти?",[879,899],{},"\nВойдите в контейнер (",[41,902,903],{},"docker exec -it \u003Ccontainer> bash",") и используйте утилиты: ",[41,906,907],{},"top",", ",[41,910,911],{},"htop",[41,913,914],{},"ps aux --sort=-%mem",". Для Java-приложений используйте ",[41,917,918],{},"jcmd \u003Cpid> VM.native_memory summary",[21,920,921,924,926],{},[25,922,923],{},"Что делать, если приложение не может работать в заданных лимитах памяти?",[879,925],{},"\nОптимизируйте код, увеличьте лимит (если есть запас на хосте) или пересмотрите архитектуру: разделите монолит на микросервисы, вынесите тяжёлые операции в отдельные контейнеры с большими лимитами.",[21,928,929,938,940,941,943,944,947,948,558],{},[25,930,931,932,934,935,937],{},"Правильно ли задавать ",[41,933,242],{}," в 2x от ",[41,936,207],{},"?",[879,939],{},"\nНе всегда. Если приложение не использует swap (например, базы данных), то задание ",[41,942,242],{}," может привести к неожиданному использованию swap и падению производительности. Для таких приложений лучше отключить swap (",[41,945,946],{},"--memory-swap=-1",") или оставить равным ",[41,949,207],{},[951,952,953],"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 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":51,"searchDepth":76,"depth":76,"links":955},[956,957,958,964,969,970,971,972,973],{"id":18,"depth":76,"text":19},{"id":188,"depth":76,"text":189},{"id":246,"depth":76,"text":247,"children":959},[960,962],{"id":254,"depth":103,"text":961},"Для docker run:",{"id":340,"depth":103,"text":963},"Для docker-compose.yml:",{"id":465,"depth":76,"text":466,"children":965},[966,967,968],{"id":472,"depth":103,"text":473},{"id":525,"depth":103,"text":526},{"id":544,"depth":103,"text":545},{"id":564,"depth":76,"text":565},{"id":645,"depth":76,"text":646},{"id":762,"depth":76,"text":763},{"id":815,"depth":76,"text":816},{"id":871,"depth":76,"text":872},null,"2026-02-16 20:38:19","Контейнер Docker завершается с ошибкой OOMKilled? Узнайте, как диагностировать нехватку памяти, настроить лимиты и оптимизировать приложение. Пошаговые решения для Linux.","medium",false,"10-15 мин","md",[982,985,988,991],{"question":983,"answer":984},"Что означает ошибка OOMKilled в Docker?","Ошибка OOMKilled означает, что ядро Linux принудительно завершило контейнер из-за нехватки оперативной памяти (OOM killer). Контейнер получает сигнал SIGKILL и останавливается.",{"question":986,"answer":987},"Как проверить, что контейнер убит из-за OOM?","Выполните `docker ps -a` и посмотрите статус контейнера. Если он `Exited (137)`, это скорее всего OOM. Также проверьте логи: `docker logs \u003Ccontainer_name>` — там может быть упоминание 'Killed' или 'OOM'.",{"question":989,"answer":990},"Можно ли отключить OOM killer для контейнера?","Полностью отключить нельзя, но можно настроить `--oom-score-adj` (от -1000 до 1000) чтобы снизить вероятность убийства контейнера, или увеличить лимиты памяти.",{"question":992,"answer":993},"Чем OOMKilled отличается от ошибки 137?","Код выхода 137 (128+9) означает, что контейнер получил сигнал SIGKILL (9). В контексте Docker это обычно результат работы OOM killer, но может быть и ручная остановка через `docker kill`.",[995,998,1001,1004],{"name":996,"text":997},"Определите потребление памяти контейнера","Запустите `docker stats` чтобы увидеть текущее использование памяти. Обратите внимание на `MEM USAGE` и `MEM %`. Если контейнер использует память близко к лимиту (если он установлен) или близко к общей памяти хоста — причина в OOM.",{"name":999,"text":1000},"Настройте лимит памяти для контейнера","При запуске контейнера укажите лимит через `--memory` и `--memory-swap`. Например: `docker run -d --name app --memory=512m --memory-swap=1g my-image`. Это предотвратит исчерпание памяти хоста.",{"name":1002,"text":1003},"Оптимизируйте приложение в контейнере","Уменьшите потребление памяти приложением: настройте JVM (если Java), уменьшите кэши, используйте стриминговую обработку данных. Пересмотрите архитектуру: возможно, нужно разделить сервис на несколько контейнеров.",{"name":1005,"text":1006},"Настройте OOM score adjustment","Запустите контейнер с параметром `--oom-score-adj=-500` (значение от -1000 до 1000). Чем меньше число, тем ниже шансы, что контейнер будет убит при нехватке памяти. Пример: `docker run -d --oom-score-adj=-500 my-image`.","PT15M",[1009,1010,1011,1012,1013,1014,1015,1016,1017,1018],"docker oomkilled","контейнер docker убит oom","docker out of memory error","ошибка 137 docker","как исправить oomkilled","лимиты памяти docker","oom killer docker linux","контейнер завершается из-за памяти","docker memory limit установить","oomkilled в docker compose","ru_RU",{},"/errors/linux/docker-oom-killed","linux",[1024,1025,1026],"/errors/linux/docker-container-exited","/guides/linux/docker-memory-limits","/errors/linux/docker-no-space-left-on-device","Ошибки Docker",{"title":5,"description":976},"high","errors/linux/docker-oom-killed","Ошибка OOMKilled в Docker возникает, когда контейнеру не хватает оперативной памяти. Статья объясняет причины и предоставляет проверенные способы решения: от настройки лимитов памяти до оптимизации приложения.",[269,1033,1034,1022,1035,1036,1037],"oom","ошибки","memory","контейнеры","k8s","error","b1PfoAMw_WQsX9oxz0m64QotKDzxhWGsR_kwyCZS85s",{"data":1041,"body":1042},{},{"type":1043,"children":1044},"root",[1045],{"type":1046,"tag":21,"props":1047,"children":1048},"element",{},[1049],{"type":1050,"value":984},"text",{"data":1052,"body":1053},{},{"type":1043,"children":1054},[1055],{"type":1046,"tag":21,"props":1056,"children":1057},{},[1058,1060,1066,1068,1074,1076,1082],{"type":1050,"value":1059},"Выполните ",{"type":1046,"tag":41,"props":1061,"children":1063},{"className":1062},[],[1064],{"type":1050,"value":1065},"docker ps -a",{"type":1050,"value":1067}," и посмотрите статус контейнера. Если он ",{"type":1046,"tag":41,"props":1069,"children":1071},{"className":1070},[],[1072],{"type":1050,"value":1073},"Exited (137)",{"type":1050,"value":1075},", это скорее всего OOM. Также проверьте логи: ",{"type":1046,"tag":41,"props":1077,"children":1079},{"className":1078},[],[1080],{"type":1050,"value":1081},"docker logs \u003Ccontainer_name>",{"type":1050,"value":1083}," — там может быть упоминание 'Killed' или 'OOM'.",{"data":1085,"body":1086},{},{"type":1043,"children":1087},[1088],{"type":1046,"tag":21,"props":1089,"children":1090},{},[1091,1093,1098],{"type":1050,"value":1092},"Полностью отключить нельзя, но можно настроить ",{"type":1046,"tag":41,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":1050,"value":571},{"type":1050,"value":1099}," (от -1000 до 1000) чтобы снизить вероятность убийства контейнера, или увеличить лимиты памяти.",{"data":1101,"body":1102},{},{"type":1043,"children":1103},[1104],{"type":1046,"tag":21,"props":1105,"children":1106},{},[1107,1109,1115],{"type":1050,"value":1108},"Код выхода 137 (128+9) означает, что контейнер получил сигнал SIGKILL (9). В контексте Docker это обычно результат работы OOM killer, но может быть и ручная остановка через ",{"type":1046,"tag":41,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":1050,"value":1114},"docker kill",{"type":1050,"value":558},{"data":1117,"body":1118},{},{"type":1043,"children":1119},[1120],{"type":1046,"tag":21,"props":1121,"children":1122},{},[1123,1125,1130,1132,1138,1139,1145],{"type":1050,"value":1124},"Запустите ",{"type":1046,"tag":41,"props":1126,"children":1128},{"className":1127},[],[1129],{"type":1050,"value":461},{"type":1050,"value":1131}," чтобы увидеть текущее использование памяти. Обратите внимание на ",{"type":1046,"tag":41,"props":1133,"children":1135},{"className":1134},[],[1136],{"type":1050,"value":1137},"MEM USAGE",{"type":1050,"value":554},{"type":1046,"tag":41,"props":1140,"children":1142},{"className":1141},[],[1143],{"type":1050,"value":1144},"MEM %",{"type":1050,"value":1146},". Если контейнер использует память близко к лимиту (если он установлен) или близко к общей памяти хоста — причина в OOM.",{"data":1148,"body":1149},{},{"type":1043,"children":1150},[1151],{"type":1046,"tag":21,"props":1152,"children":1153},{},[1154,1156,1161,1162,1167,1169,1175],{"type":1050,"value":1155},"При запуске контейнера укажите лимит через ",{"type":1046,"tag":41,"props":1157,"children":1159},{"className":1158},[],[1160],{"type":1050,"value":207},{"type":1050,"value":554},{"type":1046,"tag":41,"props":1163,"children":1165},{"className":1164},[],[1166],{"type":1050,"value":242},{"type":1050,"value":1168},". Например: ",{"type":1046,"tag":41,"props":1170,"children":1172},{"className":1171},[],[1173],{"type":1050,"value":1174},"docker run -d --name app --memory=512m --memory-swap=1g my-image",{"type":1050,"value":1176},". Это предотвратит исчерпание памяти хоста.",{"data":1178,"body":1179},{},{"type":1043,"children":1180},[1181],{"type":1046,"tag":21,"props":1182,"children":1183},{},[1184],{"type":1050,"value":1003},{"data":1186,"body":1187},{},{"type":1043,"children":1188},[1189],{"type":1046,"tag":21,"props":1190,"children":1191},{},[1192,1194,1200,1202,1208],{"type":1050,"value":1193},"Запустите контейнер с параметром ",{"type":1046,"tag":41,"props":1195,"children":1197},{"className":1196},[],[1198],{"type":1050,"value":1199},"--oom-score-adj=-500",{"type":1050,"value":1201}," (значение от -1000 до 1000). Чем меньше число, тем ниже шансы, что контейнер будет убит при нехватке памяти. Пример: ",{"type":1046,"tag":41,"props":1203,"children":1205},{"className":1204},[],[1206],{"type":1050,"value":1207},"docker run -d --oom-score-adj=-500 my-image",{"type":1050,"value":558},[]]