Moi użytkownicy widzą sporadyczne limity czasu na żądanie na Heroku. Niestety nie mogę ich konsekwentnie odtworzyć, co sprawia, że naprawdę trudno je debugować. Istnieje wiele możliwości poprawy wydajności - np. redukując ogromną liczbę zapytań do bazy danych na żądanie i dodając więcej pamięci podręcznej - ale bez profilowania to strzał w ciemność.Jak profilować niespójne limity czasu H12 na Heroku
Zgodnie z naszymi analitykami New Relic wiele żądań trwa od 1 do 5 sekund na serwerze. Wiem, że to zbyt wolno, ale nie jest to nawet 30 sekund potrzebne do przekroczenia limitu czasu.
Zakładka błędów w New Relic pokazuje mi kilka różnych zapytań do bazy danych, w których występuje przekroczenie limitu czasu, ale nie są to szczególnie powolne zapytania i mogą to być różne zapytania dotyczące każdej awarii. Również w przypadku tego samego adresu URL czasami pojawia się, a czasami nie pokazuje zapytania do bazy danych.
Jak mogę się dowiedzieć, co się dzieje w tych konkretnych przypadkach? Na przykład. jak mogę sprawdzić, ile czasu spędził w bazie danych po przekroczeniu limitu czasu, w przeciwieństwie do czasu, jaki spędza w bazie danych, gdy nie ma błędu?
Mam jedną hipotezę, że baza danych zostaje zablokowana w niektórych przypadkach; być może połączenie czytania i pisania.
Przeglądałeś dzienniki?Następnym razem, gdy pojawi się problem, natychmiast przejdź do wiersza poleceń i wpisz "logi heroku". Publikowanie dzienników z błędu pomoże nam rozwiązać problem. –
@BrianPetro Mam dzienniki, ale są one różne dla każdego przypadku - nawet na tej samej stronie - ponieważ cały czas kończą inne miejsce. Właśnie dlatego szukam bardziej ogólnego sposobu debugowania tego. –
Zaktualizuj wpis, dodając kilka logów lub najbardziej odpowiedni kod. W przeciwnym razie obawiam się, że nie mogę pomóc. –