Alexander
Предположение, что может быть дело в какой-то пропускной способности. Но 8мб это немного
Alexander
Что если не запускать процессинг получается?
Олег
Если не запускать, то там порядка 250MB/s
Alexander
Мне больше нравится такая схема: стартуем n воркеров, 1 сохраняльщик. Хэндлер отправляет в буферизованный канал, воркеры парсят передают сохраняльщику через канал или мьютекс + слайс, сохраняльщик сбрасывает в базу раз m секунд или когда набралось k записей. Таким образом нет лишних переключений контекста, естественный троллинг: и со стороны ЦПУ, и когда в базу всё упирается
Alexander
Грейсфул шатдаун опять же наладить легче будет
Alexander
Олег
А разве в такой схеме узким местом не станет кол-во обраьотчиков разгребающих канал? Нагрузка входящего трафика сильно влияет на необходимое кол-во обработчиков.
Alexander
Но их же всё равно сильно больше кол-ва тредов нет смысла держать
Олег
В целом да, согласен.
Олег
Спасибо.
🅞leksiy
Ilya
А мне интересно, как происходит понимание по ограничению rps?
Перестает отдавать 200?
Отдает с задержкой?
Anonymous
скорее всего есть определенный максимальный лимит по запросам
Anonymous
но я не уверен
Әмир
Anonymous
может кто помочь?
пишу рест апи. Все было норм до тех пор, пока не начал юзать бд
Запускаю сервак -> (https://go.dev/play/p/brQdmUcYx0s -- тут подключение к бд, хендлеры, запуск сервака). Все норм к бд коннектится.
Вот сам рест -> (https://go.dev/play/p/sb-J_Sbnv5Y). Повторюсь, игрался со слайсами все было прекрасно. Гет, пост, пут, делете методы работали отлично. Сейчас же когда запускаю бд (коннект происходит), но почему-то не могу взять данные из бд.
Сперва подумал, что все дело в бд(была postgresql) свичнул на sqlite3, но не помогло
Вот что принтит:
http: panic serving 127.0.0.1:47678: runtime error: invalid memory address or nil pointer dereference <- (ошибка на стороне сервера)
curl: (52) Empty reply from server <- когда делаю гет запрос. Мне кажется, что rows - пустые. Если кто сталкивался помогите пж
Alexander
http: panic serving 127.0.0.1:47678: runtime error: invalid memory address or nil pointer dereference <- (ошибка на стороне сервера)
строчка какая?
Anonymous
это вроде не в моем файле даже
Null
Как создать приложение на Go с gRPC
https://nuancesprog.ru/p/14627/
@Golang_google
Maxim
Alexey
r *http.Request => r Result = r redeclared in this block
Alexey
Привычка делать короткие нечитабельные имена переменных она такая...
Herman
Так принято в языке
A
Alexey
Так принято в языке
То что так написана стандартная библиотека вовсе не означает, что нужно повторять этот подход. Есть очевидные разумные кейсы, когда однобуквенная переменная допустима, но не стоит этим злоупотреблять. Тем более что многих типов данных есть свои устоявшиеся и понятные сокращения не из одной буквы: req, resp, arr, str , err и т.д. Для своих же типов стоит делать чуть более длинные (двухсловные), но более осмысленные имена. И, естественно, не нужно впадать в обратную крайность слишком длинных именований переменных, которые только усложняют чтение.
Олег
Ilya
Олег
Ilya
Я же правильно понимаю, запускается это на "самой дешевой виртуалке".
Ilya
Олег
Меня смущает i9 и 200 rps
я не писал ничего про 200 rps, при малом теле запроса там порядка 6к rps, при болшом 500 rps. Но разница очевидна.
Ilya
Объём записи в бд одинаковый (и он тоже на этой же машине)
Олег
одного вредителя этого процесса я вычислил (я использую gorm. он писал в лог запросы на вставку которые гонял, чем больше данных - тем больше вывод в консоль), стало получше. теперь 2к rps при большом теле. + улучшил ситуацию с лишними аллокациями памяти.
🅞leksiy
Anonymous
Maxim
Anonymous
так я уже кидал сверху
Anonymous
самое забавное, гет запрос добирается до ф-ции которая ему нужна и дальше все
Anonymous
дебагать надо или что?
Anonymous
????
Anonymous
так я же объявляю переменные
Anonymous
ААААААААААААААААААААААААААА
Anonymous
ну я колбаса
Anonymous
точнякккк
Alexander
неплохо
Alexander
не используй статические переменные
Alexander
что называется
Anonymous
да че вы мужики((((((
Anonymous
я думал, что так будет лучше
Anonymous
спас себя от дубликата кода
Anonymous
а в итоге сам себя запутал
Anonymous
а для чего это?
Anonymous
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}
Anonymous
так типо?
Anonymous
все заработало
Anonymous
день тупа в монитор втыкал))
Anonymous
спасибо
Anonymous
я не умею
Alexander
подожди, то есть ты умеешь grpc, но любишь глобальные переменные и не умеешь дебажить? не в обиду. но прям слом мозга
Anonymous
да
Alexander
получается hr'ы смотрящие на ключевики ошибаются на 146% процентов
Anonymous
а есть годное про дебаг?
Anonymous
не поздно же научиться
Anonymous
я дебажил только на си, юзая gdb
Emil
Всегда с пренебрежением смотрел на эти ваши встроенные дебаги, принтлн наше все
Anonymous
как в го это делается понятия не имею
Anonymous
ну вот да
Anonymous
я через принтлн делал
Anonymous
лол, дебагнул через delve
брейкнул файл с конектом, просто писал continue, пока не дошел до коннекта к бд и там была ошибка
Anonymous
прикольно
Anonymous
а как? расширение установить?
Anonymous
мне понравилось