¿Cuál es el mejor lenguaje del lado del servidor para una aplicación que hace tantas solicitudes CURL?

Estoy de acuerdo con la respuesta de Joe Pepersack.

Su programa está vinculado a la red y hay poco que pueda hacer para reducir la latencia de las solicitudes individuales a direcciones de Internet arbitrarias … porque hay un número finito de saltos de red necesarios para cada uno de ellos, y no puede hacer los enrutadores intermedios y los conmutadores le envían datos más rápido (sin estrategias de almacenamiento en caché complejas y dependientes de la aplicación).

Dependiendo exactamente de cómo funciona su aplicación, y suponiendo que su servidor tenga mucho ancho de banda de red, es posible que pueda mejorar la velocidad percibida de la aplicación emitiendo muchas solicitudes en paralelo , como con el subprocesamiento múltiple .

(Por ejemplo, si el archivo promedio tarda 10 segundos en descargarse, pero puede descargar 10 en paralelo en lugar de en serie, uno a la vez, podrá descargar completamente 100 archivos 10 veces más rápido).

Joe Pepersack y Dan Lenski escribieron lo que he estado escribiendo durante años. Es por eso que los ISP lo venden “hasta”, no a una velocidad determinada. No se puede curar la latencia, es lo que hay en Internet. Podrías escribir todo en conjunto y probablemente no notarías el cambio en el tiempo.

Además de descargar archivos en paralelo, puede hacer lo que hacen los impulsores de descarga: emitir solicitudes de reinicio por cada 1/10 del archivo, por lo que está descargando 10 piezas del archivo a la vez. De esa manera, incluso si la velocidad de la red, del servidor al cliente, es de 1 mbps, su velocidad de transmisión es de 10 mbps. (Sin embargo, tenga cuidado: algunos servidores limitan el número de conexiones simultáneas desde una sola dirección IP).

Es probable que su aplicación esté vinculada a la red en lugar de a la CPU. CURL es una biblioteca C muy bien optimizada, por lo que es poco probable que mejore su rendimiento.

Mire la utilización de su CPU con la top mientras su aplicación se está ejecutando. Si no está funcionando al 100% durante las partes lentas, su problema es el ancho de banda. Use iftop -i o iostat -n para monitorear la utilización de su red.

Recuerde que una conexión de red es tan rápida como el enlace más lento. No importa si tiene Gigabit Ethernet en el centro de datos de Amazon si extrae datos de un sitio web que cuelga de una línea DSL lenta.

Node.JS
o
Node.JS engendrando PHP

Cree cientos de solicitudes de una vez y deje que la devolución de llamada se encargue del procesamiento. La naturaleza asincrónica de JavaScript es muy efectiva.

Un ejemplo: https://github.com/gitbhsk/fastS

More Interesting

¿Cuál es la mejor manera de mantener una lista de usuarios en línea en una aplicación web?

¿Por qué los desarrolladores de Linux están tan obsesionados con sus archivos de configuración de Vim?

¿Cómo pedirle a un desarrollador que escriba en silencio ya que su ruido de tipeo es tan molesto? ¿Qué podría hacer para ayudarlo a reducir el ruido de tipeo?

¿Qué hosting es apropiado para el portal web de marketing por correo electrónico?

¿Cómo obtener dinero de mi familia para mi proyecto web? O debería encontrar otra manera

¿Por qué debería crear una página 404 personalizada para un sitio web?

Con la esperanza de contratar a un ingeniero informático pronto para una participación en el capital, ¿algún consejo sobre dónde / a quién buscar? ¿Qué quieren ver los ingenieros informáticos para convencerlos de trabajar por la equidad?

¿Cómo genera Facebook el contenido abreviado que aparece cuando se comparte un enlace?

Cómo ganar dinero creando un sitio web

¿Qué herramientas y tecnologías se utilizan para construir Squarespace?

¿Cuál es el mejor lenguaje de programación para construir un sitio web de transmisión de video?

¿Cómo podemos maximizar el uso de un archivo de texto como base de datos?

¿Cuál es el criterio de la mejor empresa de desarrollo web?

¿Cuáles son los mejores recursos o rutas para que un desarrollador intermedio de JavaScript aprenda arquitectura de software para su gran aplicación o producto JavaScript a gran escala?

¿Cómo modificamos el panel de WordPress sin complemento?