Oleg
Kirill
это в роутере кеш соответствия хендлера
Kirill
грубо — вместо прохода по дереву он увидит, что твоя страница соответствует этому хендлеру — и профит
Kirill
никакого скрытого кеша страницы, конечно же)
Oleg
Kirill
такое в параметрах указывать пока смысла не вижу. а вот кеш страницы вкручиваю как раз, и да — будет параметр
Oleg
Только если кэш будет большой, для уникальных путей будет деградация
Kirill
Oleg
Kirill
ну — если большой — это процентов 60 памяти сервера — понятное дело, будут залаги на мапах %))
Kirill
но я на нагрузочном тестировании с напрягом триггерю кеш
Kirill
ну — как с напрягом. wrk сжирает 2 ядра, чтобы нагенерить достаточно запросов.
Alexander
а кто-нибудь в курсе как там дела с http2 в гошечке? я посмотрел – количество стримов можно задать только при запуске сервера и то только при использованнии x-пакета. А если хочется доступа к управлению количеством стримов на клиенте/сервере, то что делать? Свою имплементацию писать? Патчить существующую?
Slava
Slava
к примеру вот эту хрень не фиксят уже год как https://github.com/labstack/echo/issues/444
Sergey
Товариши, помогите пожалуйста
Sergey
https://pastebin.com/PBvzpQWg
Sergey
Весь день бьюсь и непойму почему паникует горутина и отваливается приложение (
Sergey
Принцип работы такой:
Принцип работы такой:
1. GetBrands() получает срез структур Brand
2. Запускаем цикл по этому срезу и под каждый бренд запускаем горутину BrandProcessing
3. В горутине BrandProcessing получаю массив ссылок блендов и под каждый бленд запускаю горутину BlendProcessing
И всё работает...но падает (
Alexander
а где стектрейс когда падает?
Sergey
goroutine 9586 [running]:
panic(0x629ea0, 0xc42000c130)
/usr/local/go/src/runtime/panic.go:500 +0x1a1
main.GetBlendLinks(0x3cf, 0xc42018f98b, 0x17, 0xc42018f972, 0x17, 0x0, 0x0, 0x0, 0x3, 0x66c58b, ...)
/home/proninsv/work/GOLANG/src/github.com/user/tbrimport/main.go:184 +0x22f
main.BrandProcessing(0x3cf, 0xc42018f98b, 0x17, 0xc42018f972, 0x17, 0x0, 0x0, 0x0, 0xc42001e2a0)
/home/proninsv/work/GOLANG/src/github.com/user/tbrimport/main.go:119 +0x10d
created by main.main
/home/proninsv/work/GOLANG/src/github.com/user/tbrimport/main.go:82 +0x47f
Sergey
goroutine 9586 [running]
- всегда разный номер
ros
номера строк же есть
ros
и это не весь выхлоп
должна быть причина в самом начале
Vladimir
А кто err будет проверять?
Vladimir
Vladimir
Ты получаешь ошибку и nil
Gaiaz
эти номера меняются? 184, 119, 82
Slava
хитрый, с проверкой err любой может
Vladimir
На 184 строке дергаешь метод, получаешь панику
Alexander
можно MustCompile взять, ну или проверять ошибку ;)
Vladimir
Учти что в го регулярки не pcre
Vladimir
Вероятно поэтому оно и не собирается
Sergey
Sergey
Вроде везде проверяю
Alexander
перед строкой про которую тебе паник пишет
Vladimir
Vladimir
Почему ? Проверяй ошибку и смотри
Sergey
Alexander
поставь проверку ошибок везде и попрбуй воспроизвести
Sergey
Sergey
Vladimir
Sergey
Вот я тупица
Sergey
спасибо товарищи
Slava
запускайте metalinter
Slava
или хотя бы govet
Slava
оно такие вещи ловит
Sergey
это что такое?
Vladimir
Статический анализатор
Vladimir
Metalinter - тулза для запуска различных анализаторов
Vladimir
Выдает обычно много полезного - где не проверил err, где code style залажал
Vladimir
И т.п
Sergey
так у меня vscode сам кодстайл правит
Sergey
при сохранении
Vladimir
Vladimir
Запустити металинтер
Vladimir
И посмотри
Alexander
кодстайл не очень гошный. избавься от именованных ретурнов
Sergey
Alexander
и капсов
Mike
именованый ретурн это ?
это когда ты в сигнатуре функции не только тип ретурна указываешь, но и имя, и это имя в функции меняешь, до чего доменялось в конце, то и вернет
Sergey
func ololo() (int, string) {
...
return
}
- правильно вот так?
nvkv
nvkv
именованые ретурны действительно фрустрируют, особенно поначалу
nvkv
но, справедливости ради, ими не так уж часто пользуются
Sergey
офигеть, поменял golint на gometalinter и стало больше ошибок (
Sergey
тэкс, а что в конструкции
defer resp.Body.Close()
плохого?
Sergey
Линтер пишет, что
error return value not checked (defer resp.Body.Close())
Sergey
а я смотрю в книжку по Go и там просто defer ....
Alexander
в книжке обычно выкидывают проверку ошибок
Alexander
в ней не учат продакшн-реди код писать
Alexander
но я не видел чтобы в коде Close проверяли
Николай
мб проверку на resp != nil?
Sergey
погуглил, не могу найти как подругому defer resp.Body.Close() вызывают (
Vladimir