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

<!-- source: ru/faq/_includes/sdk.md -->
# SDK

## Что делать, если SDK экстренно завершает работу при завершении работы приложения? {#what-to-do-if-the-sdk-crashes-urgently-when-the-app-is-shut-down}

Не следует оборачивать компоненты SDK в синглтон, так как время их жизни не должно превышать время выполнения функции `main()`. Так как при уничтожении клиента происходит опустошение пулов сессий, требуется возможность перехода по сети. Но gPRC содержит глобальные статические переменные, которые к этому времени уже могут быть разрушены. Таким образом, работа gRPC невозможна. При необходимости сделать драйвер глобальным объектом, на драйвере нужно вызвать функцию `Stop(true)` перед выходом из `main()`.

## Что делать, если при вызове `fork()` в дочернем процессе программа работает некорректно? {#program-does-not-work-correctly-when-calling-fork}

Вызов `fork()` в многопоточных приложениях является антипаттерном. Так как и SDK, и gRPC-библиотека являются многопоточными приложениями, стабильность их работы не гарантируется.

## Что делать, если я получаю ошибку «Active sessions limit exceeded», хотя текущее количество активных сессий не превышает лимит? {#active-sessions-does-not-exceed-the-limit}

Лимит действует на количество активных сессий. Активная сессия — сессия, переданная клиенту для использования в его коде. Сессия возвращается в пул в деструкторе. При этом, сама сессия является копируемым объектом. Возможно, вы сохранили в коде копию сессии.

## Есть ли возможность делать запросы к разным БД из одного приложения? {#make-requests-to-different-databases-from-the-same-application}

Да, C++ SDK позволяет переопределять параметры БД и токен в момент создания клиента. Отдельные драйверы создавать не нужно.

## Что делать, если отказала одна из ВМ и невозможно сделать запрос? {#vms-failed-and-you-cant-make-a-request}

Чтобы выявить недоступность ВМ, нужно проставить клиентский таймаут. Все запросы содержат параметры для клиентского таймаута. Величина таймаута должна быть на порядок больше ожидаемого времени выполнения запроса.
<!-- endsource: ru/faq/_includes/sdk.md -->
