---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/troubleshooting/performance/hardware/insufficient-memory.md?version=v25.3
  - https://ydb.tech/docs/ru/troubleshooting/performance/hardware/insufficient-memory.md?version=v25.3
  - href: ru/troubleshooting/performance/hardware/insufficient-memory.md
    type: text/markdown
    title: Markdown version
  - href: ../../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/troubleshooting/performance/hardware/insufficient-memory.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# Недостаточный объём памяти (RAM)

Если [swap](https://en.wikipedia.org/wiki/Memory_paging#Unix_and_Unix-like_systems) (paging of anonymous memory) отключён на сервере YDB, недостаточный объём памяти активирует механизм ядра системы [OOM killer](https://en.wikipedia.org/wiki/Out_of_memory), который завершает процессы, потребляющие больше всего оперативной памяти. Часто это сама база данных. Этот механизм также взаимодействует с [cgroups](https://en.wikipedia.org/wiki/Cgroups), если сконфигурировано несколько cgroups.

Если swap включён, недостаточный объём памяти может приводить к сильной зависимости скорости базы данных от пропускной способности дисковой системы, которая значительно медленнее, чем доступ к данным в памяти.

{% note warning %}

Если узлы YDB выполняются на серверах с включённым swap, необходимо отключить swap. YDB – это распределённая система, поэтому если узел перезапускается из-за недостатка памяти, клиент просто переподключится к другому узлу и продолжит работать с данными как будто ничего не случилось. Swap позволяет запросам выполняться на том же узле, но медленнее из-за увеличенной нагрузки на пропускную способность дисковой системы, что обычно ещё хуже.

{% endnote %}

Хотя причины и механизмы снижения производительности из-за нехватки памяти могут различаться, во всех случаях наблюдаются похожие симптомы: увеличение времени отклика при выполнении запросов и получении данных.

Кроме того, может быть важно, какие компоненты процесса YDB потребляют память.

## Диагностика

1. Определите, не перезапускались ли недавно по неизвестной причине какие-либо узлы YDB. Исключите случаи обновления версии YDB и другого планового обслуживания. Это может помочь обнаружить узлы, которые были завершены из-за нехватки памяти и перезапущены системой `systemd`.

    1. Откройте [встроенный UI](https://ydb.tech/docs/ru/reference/embedded-ui/index.md?version=v25.3).

    1. На вкладке **Nodes** обратите внимание на узлы с низким значением uptime.

    1. Выберите недавно перезапущенный узел и войдите на сервер, на котором он размещён. Выполните команду `dmesg` и проверьте, активировался ли недавно механизм OOM killer.

        Ищите подобные строки:

        ```plaintext
        [ 2203.393223] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=user.slice,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1000.slice/session-1.scope,task=ydb,pid=1332,uid=1000
        [ 2203.393263] Out of memory: Killed process 1332 (ydb) total-vm:14219904kB, anon-rss:1771156kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:4736kB oom_score_adj:0
        ```

    Кроме того, изучите логи `ydbd` для получения более подробной информации.


1. Определите, используется ли память на 100%.

    1. Откройте панель мониторинга **[DB overview](https://ydb.tech/docs/ru/reference/observability/metrics/grafana-dashboards.md?version=v25.3#dboverview)** в Grafana.

    1. Проанализируйте графики в секции **Memory**.

1. Определите, увеличилась ли пользовательская нагрузка на YDB. Проанализируйте следующие графики на панели мониторинга **[DB overview](https://ydb.tech/docs/ru/reference/observability/metrics/grafana-dashboards.md?version=v25.3#dboverview)** в Grafana:

    - **Requests**;
    - **Request size**;
    - **Response size**.

1. Определите, выходили ли новые версии ваших приложений, работающих с YDB, или менялись ли методы доступа к данным в этих приложениях.

## Рекомендации

Рассмотрите следующие решения проблемы нехватки памяти:

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

- Если нагрузка на YDB не изменилась, но узлы всё равно перезапускаются, рассмотрите возможность добавления большего количества узлов YDB или увеличения жёсткого лимита памяти для узлов. Дополнительную информацию об управлении памятью в YDB см. в статье [memory_controller_config](https://ydb.tech/docs/ru/reference/configuration/memory_controller_config.md?version=v25.3).
