¿Qué temas de informática ayudan a saber cómo escalar un sitio web / servicio web?

Es un tema bastante complicado, pero creo que lo dividiré en tres áreas clave: creación de perfiles , depuración y pruebas .

Es cierto que las redes, los algoritmos y la concurrencia son las herramientas que necesita para construir un sistema de carga, pero las herramientas deben usarse en los lugares correctos. Piense en ello como si fuera un puente: si no puede soportar el peso, entonces debe agregar el tipo correcto de soportes exactamente donde se necesitan. Si se atornilla al azar en bosques de pilares y cuelga cables con la esperanza de que aguante, ambos desperdiciarán muchos recursos y aún no tendrán la confianza de haber solucionado el problema real.

No se solucionará agregando más cinta adhesiva.

La clave, entonces, es comprender por qué su sistema falla cuando se coloca bajo carga. La mayoría de las veces, si comprende completamente lo que se rompió, la forma de solucionarlo queda clara.

Primero: perfilado . Este es el arte de saber qué partes de su sistema tardan más en ejecutarse. La creación de perfiles puede ser tan simple como imprimir el tiempo transcurrido en el registro después de cada tarea, o tan compleja como ejecutar programas especializados diseñados para encontrar puntos específicos hasta la línea de código.

Además del registro, los dos estilos principales de perfilador son perfiladores instrumentados y perfiladores de muestreo . Dos gratuitos con los que estoy familiarizado son gprof, que es un generador de perfiles instrumentado en sistemas POSIX, y Very Sleepy, que es un generador de perfiles de muestreo disponible para Windows. Hay muchos otros, incluidos algunos buenos comerciales.

La creación de perfiles requiere que tenga algún tipo de caso de prueba que ejecute. Luego, el generador de perfiles medirá qué partes del código tomaron más tiempo y lo ayudarán a encontrar los bits de bajo rendimiento de su código. Esto puede darle la información necesaria para acelerar las cosas.


Un ejemplo de muy somnoliento en el trabajo

Segundo: depuración . La principal dificultad para depurar problemas de carga es que el depurador generalmente comparte una máquina con el sistema que no responde. Eso significa que tiene que quitar la carga para ver lo que está sucediendo … pero tan pronto como lo haga, el problema desaparecerá, por lo que ya no podrá ver qué era.

La forma habitual de lidiar con esto es registrar todo . Los sistemas de alta carga necesitan un registro de alta potencia, capaz de transmitir miles de mensajes por segundo sin pesar la máquina. Necesita una convención de codificación sólida para verificar cada código de error y registrar cada mensaje de advertencia y error. Cuando el servidor comienza a fumar y desea saber qué se derritió, debe estar bastante seguro de que la respuesta estará en sus registros.

Finalmente, probando . La mejor manera de ver cómo se comportará un servidor bajo carga es ponerlo bajo carga. Genio, ¿verdad?

En la práctica, incluso las pruebas diligentes generalmente no encuentran todos los problemas, pero seguramente encuentran muchos problemas. Los problemas encontrados durante las pruebas te hacen sentir inteligente, y los problemas encontrados después de que el servidor se pone en funcionamiento te hacen sentir tonto. En aras de preservar tu ego, prueba a fondo.

Si es posible, siga aumentando la carga hasta que el servidor comience a fallar de alguna manera. Desea probar lo que sucede cuando el servidor falla, porque esas son las situaciones más difíciles de solucionar. Los servidores que continúan respondiendo de inmediato tan pronto como la carga cae son resistentes. Sin embargo, es bastante común que algo se bloquee mientras se carga el servidor y que permanezca inactivo incluso después de quitar la carga. Esos son los errores que te harán sentir tonto. Entonces prueba hasta que algo sangra.

¡Buena suerte fortaleciendo tus servidores!

More Interesting

Recibí una oferta de trabajo, que es $ 30k por debajo de lo que pedí. Solicité que lo aumentaran y agregaron otros $ 5k. ¿Debo continuar contrarrestando o no?

¿Existe realmente una diferencia salarial entre un B.Tech y un M.Tech para un ingeniero mecánico?

Soy un especialista en informática en Houston, TX y el campo está creciendo en base a mi investigación, pero me han advertido sobre la externalización de empresas a otros países. ¿Son mis posibilidades de conseguir un trabajo alto o bajo?

De Capgemini, Accenture, Cognizant, TCS, Infosys, Wipro, ¿qué compañía es la mejor compañía para unirse?

¿Cuáles son los desafíos de un abandono de doctorado para inscribirse nuevamente en un doctorado en un instituto diferente?

¿Es cierto que un título en artes liberales no vale nada sin experiencia laboral?

¿Cómo puedo averiguar qué es lo que realmente quiero hacer con mi vida después de la universidad?

¿Solicitar algún entrenamiento o autoestudio es mejor en vacaciones de verano después de completar el segundo año para un estudiante de ingeniería electrónica y de comunicación?

¿Debo ir a Ingeniería?

¿Qué es el CFA? ¿Cómo puedo obtener un título a través de él y cómo me puede ayudar?

Cómo convertirse en un teniente en el ejército indio

¿Es posible que una persona socialmente incómoda pase una entrevista y consiga un trabajo como ingeniero de software?

Cómo conseguir más trabajo en diseño de interiores.

¿Es una mala idea compartir sus historias personales de vida con personas en una oficina, incluso cuando cree que son amigos?

Para un ingeniero de software que comienza, ¿cuál es el mejor enfoque para encontrar un trabajo decente que no requiera una gran cantidad de horas?