Closed TorinAsakura closed 4 years ago
Какие задачи выполнял вчера? Укажи #issues и сообщи в каком они состоянии
Какие задачи будешь делать сегодня? Укажи #issues
SLR
разбирался с конфигами stolon. То, что смог разобрать, подозрений не вызвало. В pgParameters параметры, которых точно должно хватать, max_connections: "501" + shared_buffers: "256MB". Видно, что захлеб не в бд происходит.
еще раз вернулся к запросам, а именно тем, что в summary. Еще раз EXPLAINом погонял этот запрос https://github.com/StreamLayer/sl-sports/blob/861fe06360350477af04eb949bf383ddcf53ce15/src/models/event.ts#L169. По нему у меня такой план получился:
Nested Loop Left Join (cost=16.80..75.55 rows=1 width=1753) (actual time=0.266..0.288 rows=1 loops=1)
Join Filter: ("rawEntities".result_id = it.id)
-> Nested Loop Left Join (cost=16.80..61.40 rows=1 width=1537) (actual time=0.219..0.236 rows=1 loops=1)
-> Nested Loop Left Join (cost=8.62..39.04 rows=1 width=1109) (actual time=0.095..0.103 rows=1 loops=1)
-> Nested Loop Left Join (cost=0.44..16.67 rows=1 width=681) (actual time=0.046..0.047 rows=1 loops=1)
-> Index Scan using "PK_30c2f3bbaf6d34a55f8ae6e4614" on event it (cost=0.15..8.17 rows=1 width=252) (actual time=0.013..0.013 rows=1 loops=1)
Index Cond: (id = 1)
-> Nested Loop Left Join (cost=0.29..8.50 rows=1 width=429) (actual time=0.028..0.029 rows=1 loops=1)
-> Index Scan using "PK_0bd74b698f9e28875df738f7864" on league (cost=0.15..8.17 rows=1 width=249) (actual time=0.018..0.018 rows=1 loops=1)
Index Cond: (id = it.league_id)
-> Index Scan using "PK_c67275331afac347120a1032825" on sport (cost=0.15..0.33 rows=1 width=180) (actual time=0.004..0.004 rows=1 loops=1)
Index Cond: (id = league.sport_id)
-> Hash Right Join (cost=8.18..22.35 rows=1 width=428) (actual time=0.046..0.052 rows=1 loops=1)
Hash Cond: ("awayTeamRaw".result_id = "awayTeam".id)
-> Seq Scan on raw_team "awayTeamRaw" (cost=0.00..13.30 rows=330 width=216) (actual time=0.009..0.011 rows=22 loops=1)
-> Hash (cost=8.17..8.17 rows=1 width=212) (actual time=0.027..0.027 rows=1 loops=1)
Buckets: 1024 Batches: 1 Memory Usage: 9kB
-> Index Scan using "PK_f57d8293406df4af348402e4b74" on team "awayTeam" (cost=0.15..8.17 rows=1 width=212) (actual time=0.023..0.024 rows=1 loops=1)
Index Cond: (id = it.away_team_id)
-> Hash Right Join (cost=8.18..22.35 rows=1 width=428) (actual time=0.031..0.040 rows=1 loops=1)
Hash Cond: ("homeTeamRaw".result_id = "homeTeam".id)
-> Seq Scan on raw_team "homeTeamRaw" (cost=0.00..13.30 rows=330 width=216) (actual time=0.004..0.007 rows=22 loops=1)
-> Hash (cost=8.17..8.17 rows=1 width=212) (actual time=0.008..0.008 rows=1 loops=1)
Buckets: 1024 Batches: 1 Memory Usage: 9kB
-> Index Scan using "PK_f57d8293406df4af348402e4b74" on team "homeTeam" (cost=0.15..8.17 rows=1 width=212) (actual time=0.005..0.005 rows=1 loops=1)
Index Cond: (id = it.home_team_id)
-> Seq Scan on raw_event "rawEntities" (cost=0.00..14.12 rows=2 width=216) (actual time=0.018..0.023 rows=1 loops=1)
Filter: (result_id = 1)
Rows Removed by Filter: 12
Planning Time: 0.782 ms
Execution Time: 0.477 ms
Cost вроде небольшой, НО раньше, когда я его выполнял, cost был 10..30 примерно. Поэтому не придал этому значения, сейчас же он выше. И это уже на смешном наборе данных (видно по отсеянным rows).
И второй момент, Execution Time: 0.477 ms
- это много. У меня есть теория, т.к. в бд проблем не видно, то становится ясно, что проблема в беке. Как я это вижу, в экшены прилетают запросы (не sql), они улетают в sql. Т.к. sql выполняется долго, то он тупо накапливается. Event Loop не бесконечный. Пока нода переваривает пачку, хелсчек начинает драконить и гасить. На это частично указывает последовательность из ответов. Сначала прилетают 500 (скорее всего loop помирает) и далее летит 504 (кубер гасит сервисы)
YT
YT
SLR
Шаблон