Nie miałem dużo szczęścia ze znalezieniem informacji przez google, może ktoś tutaj miał podobny problem.Powolne zapytanie o Postgres na Heroku nie jest przerywane przez timeout-timeout
Mamy aplikację szyny działającą na Heroku z bazą Postgres DB. Mamy szczególnie powolne zapytanie (tak, pracujemy nad poprawieniem zapytania), ale w trakcie debugowania tego problemu zauważyłem, że nasz klejnot czasu na szafę nie zabija żądania po 15 sekundach. Zrobiłem test boczny poprzez wstawienie uśpienia (50) i na pewno wystarczająco, czas oczekiwania na rack działa poprawnie w tym przypadku.
Oto zredagowana kopia naszych dzienników, która pokazuje, że czas przechowywania w szafie (czas minął!) Dzieje się kilka minut później i nadal widzimy limit czasu żądania H12 po 30 sekundach.
2011-12-14T21:15:16+00:00 app[web.2]: Started GET "/search?utf8=%E2%9C%93&terms=foo" for 173.164.186.205 at Wed Dec 14 13:15:16 -0800 2011
2011-12-14T21:15:16+00:00 app[web.2]: search query elapsed time => [0.000365018844604492]
2011-12-14T21:15:46+00:00 heroku[router]: Error H12 (Request timeout) -> GET /search dyno=web.2 queue= wait= service=30000ms status=503 bytes=0
2011-12-14T21:18:47+00:00 app[postgres]: [6-1] [removed] [COBALT] LOG: duration: 211241.725 ms statement: SELECT [truncated]
2011-12-14T21:18:47+00:00 app[web.2]:
2011-12-14T21:18:47+00:00 app[web.2]: ActionView::Template::Error (Timeout::Error: time's up!: SELECT [truncated]):
Wszelkie informacje na temat tego, dlaczego i jak egzekwować limit czasu w magazynie?
Dzięki za odpowiedź. To, czego szukam, to wgląd w to, w jaki sposób mogę zmusić program typu rack-timeout do wyłączenia tej prośby. Używamy heroku, a my nie określamy pg_gem, heroku. Używamy niewspółużytkowanej bazy danych w wersji 9.0.6. – sorens
Niestety, czas oczekiwania na Rack nie może zabić uruchomionego zapytania. Twoja aplikacja będzie korzystała z gem gem na Heroku, ponieważ jest wstrzykiwany przez proces kompilacji slug. –