Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка сборки в Cloud Function: нехватка ресурсов (signal: killed) при использовании yandex-cloud/go-sdk #26

Open
MikhailChe opened this issue Feb 13, 2025 · 1 comment

Comments

@MikhailChe
Copy link

MikhailChe commented Feb 13, 2025

При попытке загрузить Cloud Function с использованием пакета go-sdk, сборщик (builder) не справляется с выделенными ресурсами и процесс сборки завершается с ошибкой. Проблема воспроизводится при стандартном сценарии использования: функция реализует вызов Vision OCR (именно ради него я подключал SDK) и затем отправляет результат в сторонний сервис или очередь (telegram в моем случае).

История:
Аналогичная проблема обсуждалась в #23. Проблема возникает при сборке, когда код функции включает в себя зависимости:
• github.com/ydb-platform/ydb-go-sdk/v3
• github.com/ydb-platform/ydb-go-yc
• и другие (см. go.mod ниже).

Пример ошибки сборки:

===> executing build script  
go: downloading github.com/mikhailche/telebot v0.0.0-20230920205458-6d5a982b8ef0  
...  
go: downloading github.com/hashicorp/errwrap v1.0.0  
mikhailche/botcomod: /function/runtime/pkg/tool/linux_amd64/link: signal: killed  
===> execution failed: exit status 1  

Дополнительная информация:
Пример кода доступен по ссылке:
https://github.com/Mikhailche/izumrudny-bot

Прямые зависимости, указанные в go.mod:
• github.com/google/uuid v1.6.0
• github.com/mikhailche/telebot v0.0.0-20230920205458-6d5a982b8ef0
• github.com/stretchr/testify v1.9.0 (используется только в тестах, не включается в лямбду)
• github.com/ydb-platform/ydb-go-sdk/v3 v3.43.0
• github.com/yandex-cloud/go-sdk v0.0.0-20250210144447-399a857b9c4e
• go.uber.org/zap v1.24.0

Шаги для воспроизведения:

  1. Создать cloud function с кодом, подобным тому, что находится в указанном репозитории.
  2. В файле go.mod подключить зависимости, особенно обращая внимание на github.com/yandex-cloud/go-sdk и github.com/ydb-platform/ydb-go-sdk
  3. Попытаться собрать и загрузить Cloud Function.

Ожидаемое поведение:
Сборка лямбды должна проходить корректно, без ошибки «signal: killed», либо должен быть предоставлен способ оптимизировать сборку под ограниченные ресурсы билдера.

Вопросы и предложения:

  • Возможно ли оптимизировать сборку/ссылку с ydb-go-sdk таким образом, чтобы понизить требования к ресурсам?
  • Может ли проблема быть связана с особенностями компиляции/линковки, требующими слишком много памяти?

Замечания:

  • Известно, что можно использовать REST, но в SDK удобно применять credentials provider (InstanceServiceAccount), особенно в контексте Cloud Functions.
  • Предлагать собирать вручную *.so файлы не стоит — в таком случае лучше использовать serverless container.
@MikhailChe
Copy link
Author

MikhailChe commented Feb 13, 2025

Я тут вижу три варианта развития событий:

  1. Технический: распилить go-sdk и оптимизировать его сборку.
  2. Административный: квотирование и биллинг ресурсов билдера с возможностью выбрать "более жирного", но платного
  3. Компромисный: увеличить ресурсы билдера так чтобы базовые sdk облака влезали с запасом.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant