php - resuelve - ¿Cuáles son las formas de encontrar cuellos de botella en una aplicación web?
manejo de cuello de botella (11)
¿Podría ser más específico sobre la plataforma (XP, Vista, Server 2000, 2003, 2008) y el método de ejecución de la aplicación (IIS, Servicio de Windows). Como se mencionó anteriormente, el rastreo es un buen comienzo, pero existen otras herramientas según el entorno en el que esté configurada la aplicación web.
¿Cómo comparto el rendimiento de mis aplicaciones web?
¿Hay alguna manera de descubrir los cuellos de botella en una aplicación web?
EDITAR: No estoy preguntando por ningún tipo de ajustes en el front-end como imágenes, CSS, etc. Lo que quiero saber es cómo crear un perfil en el back-end de la aplicación para que sepa qué métodos / consultas modificar para aumentar el rendimiento.
Active la función de seguimiento, trace = true si se trata de una aplicación web y ponga en las declaraciones de seguimiento al principio y al final de sus métodos que se activan. Esto le dará una lectura muy detallada de los tics en el sistema y, en consecuencia, cuánto demora ejecutar cada pieza.
Si tiene una biblioteca a la que se llama, entonces también puede hacer el rastreo utilizando httpcontext.Current.Trace.Write para generar lo que necesita ver. Alternativamente, si su aplicación es realmente quisquillosa, puede escribir su propia función para almacenar las instrucciones de seguimiento en una variable compartida y escribirla en un DB u otro mecanismo una vez que se haya ejecutado el script.
El primer paso es rápido y sucio. Pruébelo en un iPhone, una computadora portátil con una conexión 3G, una PC con conexión a Internet por satélite y una PDA móvil con Windows. Si eso funciona, terminaste. Si no, triangula.
En cuanto a los cuellos de botella en el servidor de aplicaciones, puede utilizar una herramienta de creación de perfiles para ver cuánto tiempo se gasta en cada parte de su código, cuánta memoria se usa, etc. Para PHP, webgrind parece ser una forma popular, basada en GUI perfilado Algo como dotTrace haría lo mismo para una aplicación ASP.NET. Tenga en cuenta que cuando se trata de bases de datos, las herramientas de creación de perfiles como esta solo le mostrarán qué consultas de bases de datos son lentas, no por qué son lentas. Para eso, necesitaría buscar perfiles específicos de la base de datos ...
Otro aspecto de los cuellos de botella de la aplicación web es la cantidad de tiempo que un navegador necesita para descargar todo (importaciones de CSS y JavaScript, imágenes, etc.) y renderizar la página. Hay varias compañías como Keynote que tienen bots que llegarán a su sitio de todo el mundo, analizan el rendimiento y le dan recomendaciones sobre los cambios que puede realizar para obtener la salida de su aplicación al navegador y procesarla lo más rápido posible ( por ejemplo, "use compresión gzip y ponga su JavaScript al final de la página en lugar de la cabecera", etc.). También puede hacerlo usted mismo en una escala mucho más pequeña, por supuesto. Por ejemplo, los complementos de Firefox como Jiffy e YSlow harán el trabajo.
Para cualquier aplicación web, puede intentar usar la extensión Firebug, junto con la extensión Yahoo YSlow (a Firebug). Realmente útil en el rendimiento de la página. http://developer.yahoo.com/yslow/
Si desea una forma genérica de encontrar cuellos de botella, intente utilizar una herramienta de supervisión HTTP. Esto le permite ver qué tipos de solicitudes tardan más o si devuelven mensajes de error. A continuación, puede utilizar una herramienta de generación de perfiles específica de la plataforma para concentrarse en áreas específicas de su aplicación en función de los datos de la herramienta.
Me gusta usar una herramienta de proxy HTTP como Charles para hacer este tipo de análisis.
Si usa Perl, Devel :: NYTProf es súper sorprendente .
Tengo un tutorial que he hecho algunas veces en OSCON y la conferencia de MySQL sobre " Real World Web: Performance & Scalability " (diapositivas disponibles en PDF ), puede que lo encuentre interesante.
intente utilizar algunos motores de prueba como PHPUnit para enfatizar su aplicación, y use su caparazón para ver qué proceso está tardando más en resolverse.
en Unix / Linux puede usar el comando ''superior''
en Windows use el administrador de tareas (extendido)
El seguimiento es un gran comienzo
Fiddler es una buena herramienta para el registro y monitoreo del tráfico. Funciona en el cliente y puede ver qué solicitudes y respuestas van entre el cliente y el servidor web. Puede analizar fácilmente páginas lentas y detectar razones (para muchas solicitudes, páginas grandes, ...)
Específicamente para ASP.Net, existe un mecanismo de rastreo que puede crear un registro detallado para aplicaciones web. El registro muestra información de tiempo y usted puede encontrar funciones de larga ejecución. (Artículo de MSDN: descripción del seguimiento de ASP.NET