¿por qué necesita un evento de circuito para solicitudes asíncronas (por ejemplo, AJAX sondeo largo)

StackOverflow https://stackoverflow.com/questions/3121405

  •  30-09-2019
  •  | 
  •  

Pregunta

Yo entiendo que se considera un mal diseño de utilizar un servidor web roscado normal (por ejemplo, Apache) para AJAX sondeo largo ... pero no entiendo muy bien por qué.

¿Es porque cada solicitud longpolling tarda mucho más tiempo que uno normal lo haría (empatando así el procesador)? Y si ese es el caso, no temas realmente se que muchos gastos que no pueden permanecer inactivo por un tiempo antes de su uso?

¿Fue útil?

Solución

Solo para aclarar, AJAX de votación es cuando JavaScript del lado del cliente hace una petición AJAX que no se cumplió de inmediato. En su lugar, el servidor espera hasta que se quiere impulsar una respuesta al cliente y luego utiliza el contexto AJAX ya abierta para hacerlo. (¿Verdad?)

En un servidor web que trata cada conexión de su propio hilo, esa conexión abierta va a causar un hilo que se creará para cada cliente en el sitio web. El hilo permanecerá funcionando hasta que el cliente cierra la conexión. Cuando digo "corriendo", eso sólo significa que existe el hilo y está tomando recursos del servidor; se podría ralentí en una función de apagado automático () o wait (). Pero todavía consume muchos más recursos del sistema que se utilizaría en un servidor basado en eventos.

Otros consejos

No es que usted está atando el procesador, pero usted está bloqueando una conexión y un hilo de la agrupación de hebras. El servidor tiene entonces que ser configurado con un grupo de subprocesos mucho más grande.

Si sus intentos de aplicación a facebook rival, a continuación, tienen un problema importante en sus manos, si se trata de una aplicación interna en un SME para el almuerzo de pedido, nadie va a ser lastimado.

Esto no es realmente un corte y secado cuestión, ya que tiene varios factores que pueden afectar la respuesta.

Por ejemplo, ¿está utilizando el pian (un servidor web escrito en Erlang)? Entonces no sería realmente un problema, excepto que estén bloqueando los puertos en el servidor web, pero las discusiones no son un problema.

¿Está utilizando la API de Java NewIO, por lo que cada conexión hace falta ser un hilo dedicado, entonces no va a ser un problema para las discusiones.

Sin embargo, si va a consumir recursos innecesariamente, independientemente de lo que está haciendo, entonces eso es malo. Por ejemplo, si se mantiene una conexión de base de datos abierta, hacer algo de procesamiento mayor, a continuación, escribir la espalda, que es también un mal diseño.

Tenga recursos para sólo el tiempo que los necesite.

Si usted va a hacer algo de procesamiento que necesita una cantidad considerable de tiempo, entonces es posible que desee ver en una solución más asíncrona.

Por ejemplo, dar un número único que el usuario puede utilizar para comprobar si su petición se hace, por lo que puede apagar su ordenador, o simplemente comprobar que cada vez que quieran, sin tener que preocuparse por perder nada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top