Tenía curiosidad por saber cuál es la diferencia entre web y dynos de trabajador en Heroku. Dan una explicación de una oración en su página de precios, pero esto me dejó confundido. ¿Cómo sé cuántos elegir de cada uno? ¿Hay una proporción a la que debería aspirar? Soy bastante nuevo en esto, así que ¿alguien puede dar una explicación en profundidad, o tal vez alguna forma de calcular cuántos y qué tipo de dinamómetros necesitaría?
Además, estoy confundido acerca de lo que quieren decir con la cantidad de horas para cada banco de pruebas.
También me encontré con este artículo. Como una de sus soluciones sugeridas, dijeron aumentar la cantidad de dinamómetros. ¿A qué tipo de banco de pruebas se refieren aquí?
fuente
heroku logs -p router --tail
log-runtime-metrics
. Ejecute el comando siguiente para hacerlo,heroku labs:enable log-runtime-metrics
. Lea más aquí: devcenter.heroku.com/articles/log-runtime-metricsDynos son básicamente procesos que se ejecutan en su instancia. Con la nueva pila Cedar, se pueden configurar para ejecutar cualquier comando de shell arbitrario. Para las aplicaciones web, generalmente tiene un proceso llamado "web" que es responsable de responder a las solicitudes HTTP de los usuarios. Todos los demás procesos son lo que antes se llamaba "trabajadores". Estos se ejecutan continuamente en segundo plano para cosas como cron, colas de procesamiento y cualquier cálculo pesado que no desee que atasque sus procesos web. También puede escalar cada tipo de proceso, de modo que se inicien múltiples procesos de cada tipo para una simultaneidad adicional. La cantidad de cada uno que use realmente depende de las necesidades de su aplicación y la carga que recibe. Puede usar herramientas como el complemento New Relic para monitorear estas cosas.
fuente
Varias personas han mencionado que no existe una proporción conocida y que la proporción de trabajadores web a trabajadores 'en segundo plano' que querrá dependerá de cómo diseñó su aplicación, eso es correcto. Sin embargo, pensé que podría ser útil agregar que, como regla general, desea que sus trabajadores web, y por lo tanto, las acciones del controlador que realizan, sean muy rápidas y muy ligeras, para reducir la latencia en los tiempos de respuesta de las acciones del navegador. Si hay alguna acción del navegador que requeriría más de, digamos, alrededor de medio segundo de tiempo real para servir, entonces probablemente querrá diseñar algún tipo de sistema que empuje la mayor parte de esa acción a una cola.
Luego, diseñaría un dinamómetro de trabajador fuera de línea que atenderá esta cola. Pueden tardar mucho más porque no hay respuestas HTTP pendientes en su salida. Quizás la página que renderizó desde la solicitud inicial del navegador que impulsó la acción servirá algo de Javascript que inicie un hilo que verifique si la solicitud ha finalizado cada 5 segundos, o algo por el estilo.
Todavía no puedo darte una proporción con la que trabajar por la misma razón que otros han dado, pero espero que esto te ayude a decidir cómo diseñar tu aplicación. (También debo mencionar que este es solo un diseño entre muchos válidos).
fuente
https://stackoverflow.com/a/19965981/1233555 - Heroku ha pasado al enrutamiento aleatorio, por lo que algunos dynos pueden tener colas apiladas (mientras atienden una solicitud larga) mientras que otros dynos son gratuitos. Evite esto asegurándose de que todas las solicitudes se manejen muy rápidamente en sus dinámicos web. Esto reducirá la cantidad de dinámicos web que necesita, al tiempo que requerirá más dinámicos de trabajo.
También debe preocuparse por la simultaneidad de soporte de su aplicación web, lo que solo hacen algunas configuraciones de Rails: pruebe Unicorn o código escrito cuidadosamente (para E / S que no bloquea EventMachine) con Thin.
Probablemente tenga que probar, en lugar de calcular, para ver cuántos dinamómetros de cada tipo necesita. Asegúrese de que su New Relic informe la cola del dinamómetro; consulte el enlace anterior.
fuente
La respuesta corta es que necesita tantas como necesite para mantener sus colas reducidas.
Como describe John, si comienza a ver una cola en sus registros, entonces necesita más dinamizadores. Si comienza a ver que sus colas en segundo plano se vuelven demasiado largas (la forma de obtener esta información depende de lo que haya implementado), entonces necesita más trabajadores.
No existe una proporción, ya que depende en gran medida del diseño y el uso de su aplicación.
fuente
heroku logs -f
desde la línea de comandos.