Heroku: web dyno vs. worker dyno? Ile / jaki stosunek potrzebuję?

Byłem ciekaw jaka jest różnica między Web a worker dynos na Heroku. Dają one wyjaśnienie jednego zdania na swojej stronie cenowej, ale to po prostu mnie zdezorientowało. Skąd mam wiedzieć, ile wybrać? Czy jest jakiś stosunek, do którego powinienem dążyć? Jestem całkiem nowy w tych rzeczach, więc może ktoś dać dogłębne wyjaśnienie, a może jakiś sposób mogę obliczyć, ile i jakiego rodzaju dynos będę potrzebował?

Poza tym jestem zdezorientowany co mają na myśli przez ilość godzin dla każdego hamowni.

Http://www.heroku.com/pricing

I również stało się na ten artykuł. Jako jeden z ich sugerowanych rozwiązań, powiedzieli, aby zwiększyć ilość Dynów. Do jakiego typu hamowni się tutaj odnoszą?

Http://devcenter.heroku.com/articles/backlog-too-deep

Author: varatis, 2011-12-08

5 answers

Najlepszym wskaźnikiem, jeśli potrzebujesz więcej Dynów (aka procesy na Cedar), są Twoje logi heroku. Upewnij się, że zaktualizowałeś rejestr Rozszerzony (jest bezpłatny), aby móc śledzić swój dziennik.

Szukasz heroku.wpisy do routera i wartość, którą najbardziej interesuje to wartość kolejki-jeśli jest ona stale większa niż 0 to jest to dobry znak, że trzeba dodać więcej Dynów. Zasadniczo oznacza to, że przybywa więcej żądań, niż twój proces może obsłużyć, więc są one w kolejce. Jeśli są w kolejce zbyt długo bez zwracania żadnych danych, zostaną one przekroczone.

Nie ma idealnego stosunku obawiam się, że możesz mieć aplikację robiącą 100 żądań na sekundę potrzebującą wielu procesów internetowych, ale po prostu nie korzysta z pracowników. Potrzebujesz tylko procesów pracowniczych, jeśli robisz przetwarzanie w tle, takie jak wysyłanie e-maili itp.

Ps zaległości zbyt głębokie byłoby Dyno web proces, który spowodowałby to.

Aktualizacja: 26 marca 2013 Heroku usunął pola kolejki i oczekiwania z wylogowania.

Pola Queue I wait zostały usunięte z wiadomości dziennika routera. Ponadto Router Heroku nie ustawia już x-Heroku-Dynos-in-Use, X-Heroku-Queue-Depth oraz X-Heroku-Queue-Wait-Time nagłówki HTTP dla przychodzące żądania.

 56
Author: John Beynon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-17 07:04:49

Dyno to w zasadzie procesy, które działają na Twojej instancji. Za pomocą nowego stosu Cedar mogą być skonfigurowane do wykonywania dowolnych poleceń powłoki. W przypadku aplikacji internetowych zwykle istnieje jeden proces o nazwie "web", który odpowiada za odpowiadanie na żądania HTTP od użytkowników. Wszystkie inne procesy są tym, co wcześniej nazywano " pracownikami."Działają one nieprzerwanie w tle dla takich rzeczy, jak cron, kolejki przetwarzania i wszelkie ciężkie obliczenia, których nie chcesz związać z siecią procesy. Można również skalować każdy typ procesu, tak że wiele procesów każdego typu zostanie uruchomionych w celu uzyskania dodatkowej współbieżności. Ilość każdego z nich naprawdę zależy od potrzeb aplikacji i obciążenia, które otrzymuje. Możesz użyć narzędzi takich jak wtyczka New Relic do monitorowania tych rzeczy. Zajrzyj do artykułów na temat modelu procesu i Procfile w centrum deweloperskim Heroku, aby uzyskać więcej szczegółów.

 15
Author: Jimmy Cuadra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-08 08:40:05

Wiele osób wspomniało, że nie jest znany Współczynnik i że stosunek pracowników internetowych do pracowników "w tle" zależy od tego, jak zaprojektowałeś swoją aplikację - to jest poprawne. Pomyślałem jednak, że przydałoby się dodać, że ogólnie rzecz biorąc, chcesz, aby Twoi pracownicy sieci-a tym samym działania kontrolera, które obsługują-były błyskawiczne i bardzo lekkie, aby zmniejszyć opóźnienia w odpowiedziach z akcji przeglądarki. Jeśli są jakieś działanie przeglądarki, które wymagałoby więcej niż, powiedzmy, około pół sekundy czasu rzeczywistego, wtedy prawdopodobnie będziesz chciał zaprojektować jakiś system, który przesuwa większość tej akcji do kolejki.

Następnie zaprojektujesz hamownie robocze offline, które będą obsługiwać tę kolejkę. Mogą one trwać znacznie dłużej, ponieważ na ich wyjściu nie ma oczekujących odpowiedzi HTTP. Być może Strona, którą wyrenderowałeś z początkowego żądania przeglądarki, które pchnęło akcję, będzie obsługiwać Javascript rozpoczyna się wątek, który sprawdza, czy żądanie zakończyło się co 5 sekund, lub coś w tym stylu.

Nadal nie mogę dać ci proporcji do pracy z tego samego powodu, dla którego inni podali, ale mam nadzieję, że to pomoże Ci zdecydować, jak zaprojektować aplikację. (Powinienem też wspomnieć, że jest to tylko jeden projekt z wielu ważnych.)

 9
Author: eblume,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-31 02:59:13

Https://stackoverflow.com/a/19965981/1233555 - Heroku przeszedł do losowego routingu, więc niektóre dynamity mogą mieć ustawione kolejki (podczas gdy obsługują długie żądania), podczas gdy inne dynamity są wolne. Unikaj tego, upewniając się, że wszystkie żądania są obsługiwane bardzo szybko w dynos sieci Web. Zmniejszy to liczbę Dynów internetowych, których potrzebujesz, jednocześnie wymagając więcej Dynów roboczych.

Musisz również zadbać o swoją aplikację webową obsługującą współbieżność, co robią tylko niektóre konfiguracje Rails-spróbuj Unicorn, lub starannie napisany kod (dla We/Wy, który nie blokuje EventMachine) za pomocą Thin.

Prawdopodobnie musisz spróbować, zamiast obliczać, aby zobaczyć, ile Dynów każdego rodzaju potrzebujesz. Upewnij się, że ich nowy Relic zgłasza kolejkę dyno-patrz powyższy link.

 3
Author: ChrisPhoenix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:28

Krótka odpowiedź jest taka, że potrzebujesz tyle, ile potrzebujesz, aby utrzymać kolejki w dół.

Jak opisuje John, jeśli zaczniesz widzieć kolejkę w logach, Potrzebujesz więcej Dynów. Jeśli zauważysz, że kolejki w tle stają się zbyt długie (sposób uzyskania tych informacji zależy od tego, co zaimplementowałeś), Potrzebujesz więcej pracowników.

Nie ma proporcji, ponieważ jest ona w dużym stopniu zależna od projektu i użytkowania aplikacji.

 1
Author: Neil Middleton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-08 15:59:37