Я не понял вопрос. websocket это просто транспорт. Архитектура приложения и потоки данных при этом кардинально не отличаются от htt GET, POST или XMLHttpRequest транспорта. Еще вид транспорта Push сервисы для мобильных платформ. Ваша архитектура не должна зависеть от транспорта
В коде очевидных косяков не заметно. Нужно профилировать 'go tool pprof' и timehop/apns вычитывать, может timehop накосячил. Можно время от времени принудительно мусорщик вызывать 'runtime.GC()' - понаблюдать эффект.
Maybe легко написать на Go, там функция может возвращать несколько параметров 'func(args...) res, Ok' или 'func(res...) res, err' Но ведь адепты скажут fake
Роман Ракзин Здаюсь. Я использую database/sql из stdlib и https://github.com/go-sql-driver/mysql/ в качестве драйвера. Мне кажется так идиоматичней)) Просто с вашим драйвером плохо знаком, но общая идея зарезервировать достаточно подключений.
@saboteur_kievr Если О() осталась квадратичной, то меньше не стала(кажется) Пузырьковая сортировка вроде вообще простая, там и оптимизировать нечего. Все новомодные сортировки которые я видел по сути комбинации большой пятерки. Правда, выложите на любом авторитетном ресурсе, заинтриговали. И копирайт ведь получите.