2014-10-27 13 views
6

Otrzymałem ten błąd teraz na & off w ciągu ostatnich kilku dni, od kiedy wdrożyłem moją aplikację do Heroku. Zdarza się to zarówno przed rozpoczęciem używania jednorożca jako serwera, jak i później. Czasami mogę go przywrócić i używać, używając heroku run rake db:migrate, następnie heroku restart, ale to tylko naprawia go na kilka godzin i jest znowu zepsuty. Jeśli chodzi o stronę internetową, oznacza to "Błąd aplikacji". Dzienniki nie są bardzo pomocne, ale tutaj jest to, co mówi za każdym razem ten błąd się dzieje:Błąd Heroku H13

[2014-10-27T21:13:31.675956 #2] ERROR -- : worker=1 PID:8 timeout (16s > 15s), killing 
[2014-10-27T21:13:31.731646 #14] INFO -- : worker=1 ready 
[2014-10-27T21:13:31.694690 #2] ERROR -- : reaped #<Process::Status: pid 8 SIGKILL (signal 9)> worker=1 
at=error code=H13 desc="Connection closed without response" method=GET 

jestem po prostu za pomocą bezpłatnej wersji Heroku, chcę aby upewnić się, że działa przed aktualizacją, ale jest to tylko moja opcja w tym momencie?

Również jestem w stanie uruchomić to idealnie idealnie lokalnie przy użyciu albo rails server lub foreman start.

Odpowiedz

5

Heroku docs powiedzieć this about H13:

H13 - Połączenie zamknięte bez odpowiedzi

Ten błąd jest generowany, gdy proces w hamowni internetowej akceptuje połączenia, ale następnie zamyka gniazdo bez pisania czegokolwiek do niego .

Jednym z przykładów, w którym może się to zdarzyć, jest skonfigurowanie serwera WWW Unicorn z czasem oczekiwania krótszym niż 30 sekund i żądanie nie zostało przetworzone przez pracownika przed upływem limitu czasu. W tym przypadku Unicorn zamyka połączenie przed zapisaniem jakichkolwiek danych, co skutkuje H13.

Kilka linii w górę, masz błąd temat terminów procesowych się po 15s:

ERROR -- : worker=1 PID:8 timeout (16s > 15s), killing 

Heroku pomoc ma sekcję na timeout settings:

zależności od języka was mogą być w stanie ustawić limit czasu na poziomie serwera aplikacji. Jednym z przykładów jest jednorożec Rubiego. W Unicorn można ustawić limit czasu w config/unicorn.rb tak:

timeout 15

czasomierz rozpocznie raz Unicorn rozpoczyna przetwarzanie żądania, jeśli przejść 15 sekund, a następnie proces mistrz wysyła SIGKILL do pracownika, ale nie wyjątek zostanie podniesiony.

To pasuje do komunikatów o błędach w logu. Zajrzę do tego.

+0

Mam linię w config/unicorn.rb, która mówi 'timeout 15' iw pewnym momencie zmieniłem ją na' timeout 30' na bezskuteczną – Eli

+0

Po prostu przyjmuję to jako odpowiedź, ponieważ wydaje się działać teraz konsekwentnie, więc nie jestem pewien, co było przyczyną tego problemu. – Eli

+4

Eli, Jakakolwiek zmiana w tej sytuacji? Od czasu do czasu pojawia się ten błąd, ale wydaje mi się, że zniknęło mniej więcej czasu, gdy zaczynam rozwiązywać problemy. Wygląda na to, że najprawdopodobniej stanie się to po tym, jak aplikacja będzie bezczynna przez prawie jeden dzień, prawie jak we śnie. – SteveO7

Powiązane problemy