Устранение неполадок
Этот документ поможет вам устранить основные проблемы с производительностью и использованием ресурсов при работе с seq-db.
Проблема: Высокое потребление памяти
Если вы заметили, что seq-db потребляет слишком много оперативной памяти, попробуйте след ующие действия:
Снизьте размер кэша
Seq-db использует кэш для повторного использования уже загруженных данных с диска. Понижение размера кэша может снизить общее потребление памяти. Для более детальной информации о работе кэша смотрите документацию по кэшу.
Настройте параметры среды выполнения Go
Среда Go использует сборщик мусора (GC), чтобы освобождать память, занятую неиспользуемыми объектами. Сборка мусора запускается, когда размер кучи вырастает в два раза по сравнению с прошлым запуском. Вы можете настроить поведение сборщика мусора с помощью следующих переменных:
-
GOGC
— определяет целевой размер памяти после каждой сборки мусора. Например, если для seq-db (учитывая кэш, внутренние буферы и другие ресурсы) обычно требуется 1 GiB памяти, значениеGOGC=100
(по умолчанию) допускает увеличение памяти до 2 GiB. Подробнее оGOGC
смотрите здесь. -
GOMEMLIMIT
— задает максимальный размер памяти, который приложение может использовать. При приближении к этому пределу сборка мусора будет запускаться чаще. Для подробной информации оGOMEMLIMIT
смотрите здесь.
Эти параметры можно использовать вместе для оптимизации потребления памяти и нагрузки на процессор. Рекомендуется ознакомиться с этим документом, чтобы понять, как эффективно комбинировать оба параметра.
Для контроля за нагрузкой, создаваемой сборщиком мусора, полезно отслеживать метрику seq-db "The fraction of CPU time used by the GC, %" (todo: график не работает). Рекомендуется, чтобы сборка мусора не занимала более 5% процессорного времени.