Rostislav
да
это одна из самых вероятных причин была. Тогда гугли pprof, запускай сервис, забирай из него отчет и смотри, что больше всего есть цпу
Rostislav
так, стоп. Проблема в памяти или цпу все же?
Valery
цпу
Илья
https://github.com/EminZalaev/BestProgramist
Эх, сразу видно новичка. Вот тебе настоящий пример https://github.com/illiafox/gocalculator
Andrey
а как получаешь данные о курсах валют? может там много горутин распладилось?
Rostislav
цпу
тогда как и сказал pprof и смотришь callgraph, ищешь самые красные квадраты и их чинишь
Andrey
Эх, сразу видно новичка. Вот тебе настоящий пример https://github.com/illiafox/gocalculator
о это вообще красиво, надо сделать мерж реквест и добавить еще сотню вариантов )
Andrey
ну если без горутин умудряешь процессор сожрать, то тогда только pprof в помощь
Andrey
либо весь код можешь куда-то скинуть и показать
Andrey
ради интереса можно попробовать угадать где течет
Valery
Valery
вот весь код
Valery
а вот полное описание: Есть сервис, называется currenstore. Писал его один человек, дописывал другой. Этот сервис хранит курсы валют ЦБ по датам. Базу данных накапливает, делая запросы к сайту ЦБ. Отвечает на запросы вида curl 'http://localhost:3007/api/v1/currency/USD/ondate/2021-08-11' На данный момент сервис потребляет непомерно много процессора. Надо разобраться, почему он так прожорлив, исправить.
Valery
ну если без горутин умудряешь процессор сожрать, то тогда только pprof в помощь
pprof я так не получится запустить, т к бд пустая и код отрабатывать не будет
Andrey
т.е. кода нету? есть просто текст задачки и надо рассказать какие шаги ты будешь делать что бы оптимизировать?
Valery
код выше кинул
Valery
код есть
Илья
1) убери time.Sleep
Valery
это жрет цпу? 😳
Илья
тут постоянные конкатенации, тоже жрут cpu
Илья
постоянно аллоцируешь через new() var o models.Currency for rows.Next()....
Илья
чувство будто кто-то по рофлу это писал) в общем смотри код, pprof очень поможет
Andrey
а процессор при каком-то запросе грузится или постоянно?
Valery
чувство будто кто-то по рофлу это писал) в общем смотри код, pprof очень поможет
это тестовое. Но есть страх что это взято из проекта 😄
Илья
это тестовое. Но есть страх что это взято из проекта 😄
ну я думаю что проблема в time.Sleep() и других долгих функций + много лишних выделений памяти
Emin Zalaev
так
Emin Zalaev
к вам присоеднияется профессионал
Valery
спасибо за помощь, попробую все таки через pprof запустить
Valery
естественно)
Anton
for _, ValuteData := range m.Valute
Anton
не используй такой нейминг транслитный
Anton
если уж совсем - через гугл транслейт
Anton
выглядит ужасно :D
Valery
да это не мой код 😭
Anton
а, чет увидел про тестовое
Anton
подумал, что твое
Anton
тогда соррямба
Valery
у самого кровь из глаз
Valery
тут в одной функции могут использовать camel case и snake case
Valery
о чем речь 😄
Valery
ахахахах
Илья
for _, ValuteData := range m.Valute
кстати, да нагружает cpu на 99%
Илья
под капотом видел
Anton
))))
Anton
да лан, это же просто хороший тон
Anton
не использовать такое
Emin Zalaev
ахахахах
у тебя много времени на это?
Valery
да нормально
Илья
да нормально
перепиши
Valery
перепиши
так боль в том что надо именно исправить а не заново написать
Emin Zalaev
так и пишешь
Emin Zalaev
вот пришлось
Emin Zalaev
исправить
Emin Zalaev
10к строк
Valery
кстати, да нагружает cpu на 99%
а как лучше сделать?
Илья
это шутка
Valery
я и думаю странно
Илья
но будет достаточно time.Sleep убрать)
Valery
😅
Valery
но будет достаточно time.Sleep убрать)
я думал это только на скорость выполнения влияет, но не на нагрузку
Emin Zalaev
да
Илья
Там начался митап от Evrone Кому лень регаться: клик Логин: yerdukaspa@vusra.com Пароль: 12345678 Записи будут тут: https://www.youtube.com/EvroneDevelopment
Илья
зачем?
Andrey
зачем?
интересно
Andrey
может узнаю как из него выйти
Илья
как сделать автоматическое дописывание if err != ... ?