Марат Нагаев, значит скорее всего эта горутина и утекает. Нужно обращать внимание на первое число в начале стека, это количество горутин, которые остановились в этом месте. Обычно в месте учетки это число растет постепенно
Soft_touch_plastic, в глобальных пакетах можно оставить лог, например. Остальное бы вынес.
Потому что тестить с глобалами очень сложно и могут быть проблемы с побочными эффектами (когда одна функция что-то меняет в глобальной области, а другие от этого ловят баги, отлаживать такое в большом проекте— смерть)
SSSSTTTTAAAASSSS, если дамп запроса, который вы прислали, был с клиента (а его нужно делать именно с клиента), то проблема у вас не в сервере, а в клиенте.
В Го такое будет сделать довольно просто, если знать Го на нормальном уровне и использовать паттерн worker pool. В отличие от Ноды вы сразу получите многопоточную обработку из коробки, при этом код будет выглядеть синхронным и несложным.
yxtiblin, что вы имеете ввиду под "timestamp"? Обычно этим словом называют unixtime, а он вообще не имеет в себе зоны и зону там надо учитывать только при конвертировании из человекопонятного времени в unixtime и обратно.
В каком виде время передается в контракте к другим сервисам?
Приведите пример действия, в котором получается добавление 4 часов. Прям с реальными данными.
Не очень понял, что нужно сделать. Вопрос у вас "Как преобразовать time.Time в unix" ответ на него — через метод .Unix()
Но дальше вы спрашиваете уже про таймзоны и вот тут непонятно, что вы хотите. В коде вы преобразовываете время зачем-то в unixtime и потом сразу обратно в time.Time. Зачем?
Если вам просто зону надо нужную поставить, для этого есть функция In(), в которую можете передавать нужную зону.