2011-08-25 22 views
6

Actualmente estoy investigando formas de recopilar algunos análisis/métricas sobre el rendimiento de los equipos cliente en nuestra aplicación web. La aplicación es fuertemente ajax y esperamos reunir algunas estadísticas sobre cómo funcionan las máquinas de los clientes.Medición del rendimiento de los clientes

No necesariamente queremos poner el código de supervisión del rendimiento a través de la aplicación (por una gran cantidad de razones esto puede no ser factible de todos modos). Más bien, nos gustaría poder ejecutar algún tipo de prueba o algo así cuando un usuario envía comentarios que podrían darnos una idea de qué tan bien se desempeña su navegador/computadora.

Esto ha sido un poco complicado de investigar, ya que sigue provocando discusiones sobre el perfil, etc. Esto es obviamente útil, pero solo hasta cierto punto, ya que nuestras máquinas de desarrollo están enormemente dominadas. Esperamos obtener algunas métricas sobre los tipos de máquinas con las que nuestros clientes se están conectando.

¿Existe algún tipo de biblioteca/marco o mejores prácticas para esto? Hasta ahora, lo mejor es ejecutar algún tipo de proceso intensivo de CPU a través de JS durante unos segundos y medir el rendimiento de esa manera ...

¿Pensamientos o sugerencias? Puede ser una discusión interesante.

+1

No es suficiente para ser una respuesta: creamos vm's para este propósito. Limítelo a 1 CPU y 512 MB y "esa mala versión del navegador que el cliente todavía parece usar". Entonces solo tenga una idea de cómo reacciona. Es fácil de configurar y creo que deberías obligar a los desarrolladores a mirar con frecuencia su trabajo desde el punto de vista de los usuarios finales. – Eddy

+0

@Eddy: no olvidar el ancho de banda de acceso telefónico – drlemon

+0

No estoy seguro de qué tan bien funcionaría (si es que lo hace) en una VM, pero he tenido buena suerte con dummynet (http: //info.iet.unipi. it/~ luigi/dummynet /) para estrangular la conexión de red cuando se realizan pruebas con clientes. – AngerClown

Respuesta

0

Esta es una pregunta interesante ya que trajo la mayor parte del perfil de desarrollador en sus máquinas. No estoy seguro de si hay alguna otra manera que no sea poner Profiler de rendimiento en su código. La parte interesante que mencionó es que esto se basa en los comentarios del usuario y no necesariamente se envía todo el tiempo al servidor.

Podríamos desarrollar un perfilador de JavaScript clase que básicamente recoge:

  • Nombre de la función
  • Red tiempo de ida y vuelta
  • ejecución total Función tiempo
  • UserMachineProcessingTime = Total ejecución de la función de tiempo de la red de ida y vuelta
  • Otra información útil (similar a lo que proporciona YSlow o herramientas similares)

Como mencionas que la suya se basa en los comentarios de los usuarios, no es necesario que enviemos esta información todo el tiempo a medida que se llama a cada función (lo que hace que la aplicación sea muy hablante). A continuación, agregamos esta información por parte del cliente y posiblemente la almacenemos en algún lugar (¿quizás utilizando almacenamiento local HTML5?)

Solo cuando el usuario presta su consentimiento para enviar el perfil de rendimiento, le enviamos esta información al servidor donde obtiene los datos necesarios También sería interesante ver cómo reacciona el usuario si escuchamos un pequeño mensaje que dice: "Notamos que su rendimiento está por debajo del rendimiento promedio de los usuarios. ¿Desea enviarnos su perfil de rendimiento para que podamos aprender y mejorarlo?" (Se necesita una redacción diferente, soy malo con esto, pero ese es básicamente el mensaje). Al decir que sí, el perfil envía la información agregada que ha recopilado + información adicional que Javascript podría recopilar (agente de usuario, etc.). Por supuesto, la pregunta es cuántos usuarios optarían por enviar su información de perfil, pero es un enfoque que podríamos intentar.

+0

Sí, es una discusión interesante. Lamentablemente, no podemos instrumentar una gran cantidad de código con el perfil porque es en gran parte un paquete precomprado que hemos personalizado. También estoy un poco preocupado de que tener un perfil funcionando constantemente puede degradar el rendimiento, especialmente en aquellos casos en los que realmente estamos interesados: personas con computadoras terribles. Tengo la esperanza de encontrar algún tipo de prueba relativamente corta que se pueda ejecutar en segundo plano, mientras que en la "sección de comentarios" se podría obtener una idea básica del rendimiento de un cliente. – rat

2

esto es lo que hacemos para monitorear y analizar los datos de uso del cliente ...

  • uso Google Analytics para capturar información sobre el usuario (plataformas, navegadores, velocidad de conexión, el uso del sitio, etc.)

  • uso Google Webmaster Tools para obtener las estadísticas de sitios adicionales y sugerencias de optimización

  • uso Pagespeed plug-in para analizar/ajustar con precisión páginas de alto volumen y/o lentas

  • use Apache AB o JMeter - para ejecutar pruebas de carga básicas en páginas de gran volumen

+0

Otra herramienta que es útil: Fiddler (http://www.fiddler2.com/fiddler2/) con el complemento de rendimiento neXpert (http://www.fiddler2.com/fiddler2/addons/neXpert.asp). –

Cuestiones relacionadas