Byłem ciekawy, jaka jest różnica między platformą internetową i robotniczą w Heroku. Podają jedno zdanie na stronie z cenami, ale to mnie po prostu zdezorientowało. Skąd mam wiedzieć, ile wybrać każdego z nich? Czy istnieje stosunek, do którego powinienem dążyć? Jestem całkiem nowy w tych rzeczach, więc czy ktoś może szczegółowo wyjaśnić, a może w jakiś sposób obliczyć, ile i jakiego rodzaju hamownie bym potrzebował?
Poza tym nie rozumiem, co mają na myśli, mówiąc o liczbie godzin na każdej hamowni.
Ja też trafiłem na ten artykuł. Jako jedno z ich sugerowanych rozwiązań powiedzieli, że zwiększą liczbę hamowni. O jaki typ hamowni mają tutaj na myśli?
źródło
heroku logs -p router --tail
log-runtime-metrics
. Uruchom następujące polecenie, aby to zrobić,heroku labs:enable log-runtime-metrics
. Przeczytaj więcej tutaj: devcenter.heroku.com/articles/log-runtime-metricsDynos to w zasadzie procesy, które działają w Twojej instancji. Dzięki nowemu stosowi Cedar można je skonfigurować do wykonywania dowolnych poleceń powłoki. W przypadku aplikacji internetowych masz zwykle jeden proces zwany „siecią”, który odpowiada za odpowiadanie na żądania HTTP użytkowników. Wszystkie inne procesy nazywano wcześniej „pracownikami”. Działają one nieprzerwanie w tle, wykonując zadania takie jak cron, kolejki przetwarzania i wszelkie ciężkie obliczenia, których nie chcesz wiązać z procesami sieciowymi. Możesz również skalować każdy typ procesu, tak aby wiele procesów każdego typu zostało uruchomionych w celu uzyskania dodatkowej współbieżności. Ilość każdego, którego używasz, naprawdę zależy od potrzeb twojej aplikacji i obciążenia, jakie otrzymuje. Możesz użyć narzędzi takich jak wtyczka New Relic do monitorowania tych rzeczy.
źródło
Wiele osób wspomniało, że nie ma znanego współczynnika i że stosunek pracowników internetowych do pracowników „w tle”, których będziesz potrzebować, zależy od tego, jak zaprojektowałeś swoją aplikację - to prawda. Pomyślałem jednak, że warto byłoby dodać, że ogólną zasadą jest, aby Twoi pracownicy sieciowi - a tym samym działania kontrolera, które obsługują - były błyskawiczne i bardzo lekkie, aby zmniejszyć opóźnienia w czasie reakcji z działań przeglądarki. Jeśli jakaś czynność w przeglądarce wymagałaby więcej niż, powiedzmy, około pół sekundy czasu rzeczywistego, to prawdopodobnie będziesz chciał zaprojektować jakiś rodzaj systemu, który spycha większość tej czynności do kolejki.
Następnie należy zaprojektować hamownię pracującą w trybie offline, która będzie obsługiwać tę kolejkę. Może to potrwać znacznie dłużej, ponieważ na ich wyjściu nie ma oczekujących odpowiedzi HTTP. Być może strona wyrenderowana na podstawie pierwotnego żądania przeglądarki, która przekazała akcję, będzie obsługiwać skrypt JavaScript, który uruchamia wątek sprawdzający, czy żądanie zakończyło się co 5 sekund, lub coś podobnego.
Nadal nie mogę podać współczynnika do pracy z tego samego powodu, dla którego podali inni, ale mam nadzieję, że pomoże ci to zdecydować, jak zaprojektować twoją aplikację. (Powinienem również wspomnieć, że jest to tylko jeden projekt z wielu ważnych.)
źródło
https://stackoverflow.com/a/19965981/1233555 - Heroku przeszło na losowy routing, więc niektóre hamownie mogą ustawiać kolejki (podczas gdy obsługują długie żądania), podczas gdy inne hamownie są bezpłatne. Unikaj tego, upewniając się, że wszystkie żądania są obsługiwane bardzo szybko w twoich internetowych hamowniach. Zmniejszy to liczbę potrzebnych hamowni internetowych, jednocześnie wymagając większej liczby hamowni roboczych.
Musisz także zadbać o swoją aplikację internetową obsługującą współbieżność, co robią tylko niektóre konfiguracje Railsów - wypróbuj Unicorn lub starannie napisany kod (dla I / O, który nie blokuje EventMachine) z Thin.
Prawdopodobnie będziesz musiał spróbować zamiast obliczać, ile potrzebujesz hamowni każdego rodzaju. Upewnij się, że ich New Relic zgłasza kolejkę hamowni - zobacz powyższy link.
źródło
Krótka odpowiedź jest taka, że potrzebujesz tylu, ile potrzebujesz, aby utrzymać swoje kolejki w dół.
Jak opisuje John, jeśli zaczniesz widzieć kolejkę w swoich dziennikach, potrzebujesz więcej hamowni. Jeśli zaczniesz widzieć zbyt długie kolejki w tle (sposób uzyskania tych informacji zależy od tego, co zaimplementowałeś), potrzebujesz więcej pracowników.
Nie ma współczynnika, ponieważ jest on bardzo zależny od projektu i wykorzystania aplikacji.
źródło
heroku logs -f
z wiersza poleceń.