
Alex
24.09.2018
10:04:31

Tim
24.09.2018
10:04:40
у меня и желания в розетку палец засунуть не было

kolas
24.09.2018
10:05:19

Tim
24.09.2018
10:05:44

Google

Tim
24.09.2018
10:06:10

kolas
24.09.2018
10:06:17
в детстве от бп денди било часто ?

Tim
24.09.2018
10:06:47

kolas
24.09.2018
10:07:14
щас тоже иногда бьет когда неосторожно с проводкой работаю, но это редко бывает, раз в 5 лет наверное )

Alex
24.09.2018
10:07:29
ты хотя бы с проводкой работаешь.

kolas
24.09.2018
10:08:19
так не профессионально, розетку там поменять или выключатель света

Felix
24.09.2018
10:13:46

Tim
24.09.2018
10:15:12
опа, удалили спамера?

Nick
24.09.2018
10:15:41

Tim
24.09.2018
10:15:53
просто никогда не удаляли

Nick
24.09.2018
10:17:41
Ну я просмотрел чяд за выхи. Там большинство ботов уже забанены.

Black
24.09.2018
11:15:14
Уважаемые погромисты, скажите пожалуйста, как решить 504 Gateway bad request? В nginx.conf в блоке http добавил блок server с временем (proxy...) не помогает, все равно время ожидания одна минута.

Alex
24.09.2018
11:49:53

Google

Alex
24.09.2018
11:50:12
настроить nginx_debug и error_log path debug; и смотреть от и до почему не пашет

Alexander
24.09.2018
12:07:01

Black
24.09.2018
12:07:41
Ошибся с bad request, а на самом деле timeout

Alex
24.09.2018
12:10:34

Black
24.09.2018
12:34:26

Alex
24.09.2018
12:34:37
и проверяйте статус в очереди

Black
24.09.2018
12:35:20

Alex
24.09.2018
12:35:36
так поставь таймаут выше в nginx
или что там, puma
смотря кто вылетает

Black
24.09.2018
12:36:16
У меня nginx и puma

Alex
24.09.2018
12:36:30

Black
24.09.2018
12:36:43

Alex
24.09.2018
12:36:58
Как узнать?
запросить бэкенд напрямую и посмотреть отдаст он данные или улетит в таймаут?

Black
24.09.2018
12:37:58

Alex
24.09.2018
12:38:24
Отдаёт таймаут
https://github.com/puma/puma/blob/master/examples/config.rb#L179
Первая ссылка в гугле :)

Black
24.09.2018
12:38:39
А если не отдаёт таймаут?

Alex
24.09.2018
12:39:02
хоспади, что такое puma знаешь? ) что такое nginx знаешь? )

Google

Alex
24.09.2018
12:39:20
как оно работает знаешь?
логика же простая, есть nginx который проксирует запрос на бэкенд. Смотришь кто вылатает по таймауту первый.
И настраиваешь

Black
24.09.2018
12:41:50
Спасибо. "Мы вам перезвоним"

Alex
24.09.2018
12:42:16
они кстати оба по таймауту могут вылетать, настроишь один, а оказажется что теперь другой по своему вылетает.

Black
24.09.2018
12:43:44
Вот на локальном не вылетает ничего (в puma.rb нет речи о timeout), а на сервере да

Alex
24.09.2018
12:43:56
ну и смотришь на сервере кто из них вылетает

Black
24.09.2018
12:46:38

Alex
24.09.2018
12:47:02
Просто процессы работают долго, а у приложение как бы стоит ограничение на обратный ответ (1 минута)
дык уберите в очередь
и проверяйте статус в очереди
??? Мне надо просто увеличить время ожидание
хочешь сделать нормально - выноси в очередь
sidekiq например

Black
24.09.2018
12:52:08

Alex
24.09.2018
12:52:30
https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP
102, 202
делаешь в базе статус "в обработке" и пускай клиент периодически дергает статус задачи
если не в обработке то получит конкретные данные.
Sidekiq для отложенных задач, а не тех у которых нет ответа. Кроме того не зная твой кейс сложно что то адекватное посоветовать.

Google

Alex
24.09.2018
12:56:43
Кроме него есть еще delayed job (вроде) который не требует редиса и работает через базу

Black
24.09.2018
12:57:02
Правильно говоришь

Tim
24.09.2018
12:57:48
поцоны, как тестят фикс вот такой ошибки:
PG::QueryCanceled: ERROR: canceling statement due to statement timeout
Запрос затаймаутился из-за слишком большого числа удаляемых штук
я знаю как пофиксить (через батчи), но как это тестить? убеждаться что удаляешь батчами?
или есть какие-то финты ушами
в идеале тест должен воспроизводить баг с прода, типа должен быть тест с большим числом этих штук
но наверное будет долго это исполняться

Alex
24.09.2018
13:16:24
вот тоже хз как батчи тестить

Tim
24.09.2018
13:21:20
кстати в доках такое увидел
Person.where("age > 21").in_batches do |relation|
relation.delete_all
sleep(10) # Throttle the delete queries
end
Есть смысл в троттлинге?

Alex
24.09.2018
13:23:13
базу не перегружать и дать поработать другим запросам?

Tim
24.09.2018
13:24:47
понятно спс

Alex
24.09.2018
13:36:41
это предложение
просто такой батч потенциально может подтормозить базу и мешать другим запросам

Tim
24.09.2018
14:08:42
короче создал вопрос на стаковерфлоу: https://stackoverflow.com/questions/52481196/how-to-test-pgquerycanceled-due-to-timeout-error-in-a-rails-app

Ivan
24.09.2018
14:24:00
проблема же в том, что данных много

Tim
24.09.2018
14:25:16
ну баг на проде надо тестами покрывать по идее

Google

Tim
24.09.2018
14:25:19
ну да

Ivan
24.09.2018
14:25:57
ну так ты сейчас работу in_batches хочешь проверить?

Tim
24.09.2018
14:25:58
ты тестируешь тогда поведение своей аппликухи при больших данных
ну я и не знаю как надо
I would argue that you are only using Rails' methods and therefore should not test them. Especially because none of the methods actually fixes or avoids the exception. in_batches only makes the exception less likely to occur.
ну в моём виденьи это должно быть что-то типа тяжелого теста, который запускается только когда все остальные отработают

Ivan
24.09.2018
15:06:09

Tim
24.09.2018
15:06:30
ну там sql запрос тупо по таймауту отлетает
я его разбил на меньшие с помощью in_batches
вот, но мне кажется надо все равно как-то протестить что больше не отлетает вся эта фигня по таймауту
вот
интересно, как это делают те, кто занимается хуйлоадом
на всякой scala и т.д.

Roman
24.09.2018
15:11:45
нагрузочное тестирование, не через rspec

Tim
24.09.2018
15:12:22
ааа
и это включено в ci?

Roman
24.09.2018
15:13:15
хз как где настроено
но highload и не крутится на обычных ci я так думаю