Java la optimización del rendimiento de aplicaciones (Reproducido dos)

Supongamos ahora que tenemos los problemas de rendimiento de aplicaciones (por ejemplo. El nivel del agua de la CPU es relativamente alta), listo para ser optimizado para el trabajo, en el proceso, habrá un potencial de puntos de dolor, lo que hace? Éstos son algunos de los más comunes:

  1. No es muy clara en el rendimiento de los procesos optimizados. Después de un período inicial de un punto cuello de botella sospechado, que felizmente Hangchihangchi comenzaron a secarse, la solución definitiva del problema es solamente un cuello de botella de rendimiento superficial, la verdadera raíz del problema no retocar;
  2. El análisis de los cuellos de botella punto de pensar no está muy claro. Tanto la CPU, memoria, red ...... indicadores de rendimiento, lo que me preocupa en el extremo que debe comenzar juntos por dónde empezar?
  3. La falta de comprensión de las herramientas de optimización del rendimiento. Después de experimentar problemas, no está claro cuál de las herramientas utilizadas, no saben qué métricas herramienta de representantes de conseguir.


2. Optimización del rendimiento del proceso de

optimización del rendimiento en esta área, no tiene una definición de proceso estricto, pero para la gran mayoría de los escenarios de optimización, que puede abstraerse como el siguiente proceso de cuatro pasos.

  1. Fase de preparación: el trabajo principal es a través de pruebas de rendimiento, obtener una visión general de la aplicación, sobre la dirección de los cuellos de botella, optimizar los objetivos claros;
  2. Fase de análisis: a través de una variedad de herramientas o medios para localizar los cuellos de botella de punto inicial;
  3. Tuning Etapa: La ubicación del punto de cuellos de botella, para aplicaciones de sintonía;
  4. fase de prueba: sintonizar Vamos con las pruebas de rendimiento de las aplicaciones, en comparación con la fase de preparación indicadores, observando si cumple con las expectativas, si no eliminar un cuello de botella o rendimiento de punto no cumple con las expectativas, a continuación, repita los pasos 2 y 3.


La figura es un esquema de las cuatro etapas del proceso.

 

 2.1 Proceso general detallado
en cuatro pasos anteriores procesos comunes entre los pasos 2 y 3 daremos a conocer en las próximas dos secciones de enfoque. En primer lugar nos fijamos en, en la fase de preparación y la fase de pruebas, tenemos que hacer algo.
★ fase 2.1.1 preparación
fase de preparación es paso muy crítico, no puede ser omitido.
En primer lugar, tenemos que sintonizar una comprensión detallada de la materia, la llamada a nosotros mismos saben, conocerse a sí mismo.

  1. evaluación aproximada de los problemas de rendimiento, problemas de rendimiento de filtración, como resultado de la lógica de negocio inferior. Por ejemplo, el nivel de registro de aplicación en línea no es razonable, puede causar carga de CPU y el disco se disparan, este ajuste puede iniciar sesión en el nivel alto flujo;
  2. Entender la aplicación de la arquitectura general, las interfaces externas tales como dependiente de la aplicación y el núcleo de los cuales, el que los componentes utilizados y el marco, que las interfaces, alta utilización del módulo, aguas arriba y aguas abajo de enlace de datos es cómo similares;
  3. Más información correspondiente al servidor de aplicaciones , tales como el servidor de información de clúster se encuentra, el servidor de información de la CPU / memoria, Linux instalado información de la versión, el servidor es un contenedor o una máquina virtual, donde el anfitrión si hay interferencias en la aplicación actual y similares después de la porción de mezcla;


En segundo lugar, tenemos que conseguir los datos de referencia, a continuación, combinar los datos de referencia e indicadores de negocio actuales, para determinar el objetivo último de la optimización del rendimiento.

  1. Utilice la herramienta de evaluación comparativa para obtener indicadores del sistema de grano fino. Se puede utilizar una serie de Linux herramienta de evaluación comparativa (por ejemplo. Jmeter, ab, loadrunnerwrk, wrk, etc.) para obtener el sistema de archivos, disco I / O, otros informes de rendimiento de la red y. Además, de forma similar a la GC, servidor Web, el tráfico de LAN y otra información, si es necesario, también es necesario entender el registro;
  2. Mediante la medición de la presión o de la plataforma herramienta de medición de presión (si existe) en la aplicación de la prueba de esfuerzo, obtener indicadores macroeconómicos actuales de aplicaciones de negocio, tales como: el tiempo de respuesta, rendimiento, TPS, QPS, la tasa de consumo (aplicación MQ tenga la) y así sucesivamente. Las pruebas de esfuerzo pueden ser omitidos, se pueden combinar con la corriente de monitorización de datos actual y de negocios pasada, para contar el número actual de métricas de negocio principales, tales como el servicio TPS pico de la tarde.


★ 2.1.2 beta
en esta etapa, que hemos identificado tentativamente donde los cuellos de botella de rendimiento de aplicaciones, y tiene una afinación preliminar. Sintonizábamos para detectar si una manera efectiva, es decir, en las condiciones de la simulación, las pruebas de estrés de aplicaciones. Nota: Debido a que Java tiene JIT (compilación en tiempo de ejecución ) de proceso, y por lo tanto puede tener que ser pre-calentamiento de las pruebas de estrés.
Si los resultados de las pruebas de estrés en línea con el objetivo expectativas de sintonía, o en comparación con los datos de referencia, se ha mejorado en gran medida, a continuación, podemos seguir para localizar el siguiente cuello de botella a través de la herramienta, de lo contrario, tendrá que excluir temporalmente este punto cuello de botella, continúan buscando la siguiente variable.

2.2 Precauciones
cuando se optimiza para el rendimiento, comprenden lo siguiente estas precauciones podemos tomar algunos desvíos.

  1. 2/8 de punto de los cuellos de botella de rendimiento suelen estar presentes de distribución, es decir, el 80% de los problemas de rendimiento por lo general causada por el 20% de los puntos de ventaja cuello de botella, 2/8 principios también significa que no todos los problemas de rendimiento vale la pena optimización;
  2. La optimización del rendimiento es un proceso progresivo e iterativo, que tenga que poco a poco, de forma dinámica. Después de la grabación de la línea de base, cada vez que cambie una variable, la introducción de múltiples variables dará a nuestras observaciones, el proceso de optimización causar interferencia;
  3. No sobre-pursue independiente rendimiento de las aplicaciones , si el autónomo funciona bien, usted debe pensar desde la perspectiva de la arquitectura del sistema; no sobre-búsqueda de la optimización máxima en una sola dimensión, como la búsqueda excesiva de los cuellos de botella de rendimiento de la CPU de la memoria mientras que ignora los aspectos;
  4. Seleccione la herramienta de optimización del rendimiento adecuados, la optimización del rendimiento que se puede lograr un efecto multiplicador;
  5. Optimización de toda la aplicación, debe estar aislado del sistema en línea , el nuevo programa de código de línea debe ser degradada.


3. Análisis de punto de estrangulamiento caja de herramientas
de optimización del rendimiento es en realidad para encontrar las aplicaciones de punto de cuello de botella, y luego tratar de ir a través de algunos medios de facilidad de sintonía. Posicionamiento punto de cuello de botella es más difícil, de forma rápida, directa posicionado para el cuello de botella, se requiere las dos condiciones siguientes:

  1. La herramienta adecuada;
  2. Se valorará la experiencia optimización del rendimiento.


Debemos primero de sus beneficios, ¿cómo elegir la herramienta adecuada? Bajo diferentes escenarios de optimización, lo que debería elegir esas herramientas?
Elección, nos fijamos en las famosas "Performance Tools (Herramientas de rendimiento de Linux-completos) mapa", presumiblemente muchos ingenieros saben que se trata de expertos en rendimiento Brendan Gregg. La cifra de los diversos subsistemas del núcleo de Linux, se enumeran las herramientas que tenemos en el momento de cada análisis de rendimiento del subsistema se puede utilizar para cubrir el seguimiento, análisis, ajustar el rendimiento de optimización con clase en todos los aspectos. Además de este panorama, Brendan Gregg también disponibles de forma individual herramienta de evaluación comparativa (Rendimiento Linux Herramientas de referencia) gráfico, herramientas de monitorización de rendimiento (Linux Herramientas de Rendimiento observabilidad) diagramas, más detalles, consultar la página web de Brendan Gregg explicó.

 

 Fuente: http: //www.brendangregg.com/linuxperf.html SPM = ata.13261165.0.0.34646b44KX9rGc?

La imagen de arriba es muy clásico, hacemos la optimización del rendimiento es una muy buena referencia, pero de hecho, que en la aplicación práctica de las veces, se dará cuenta de que puede que no sea la más adecuada, las siguientes dos razones principales:
1) a análisis de la experiencia exigente. La imagen de arriba es en realidad desde la perspectiva de los recursos del sistema Linux para el rendimiento observado de esta función en Linux nos exige cada subsistema, el principio de entender. Ejemplo: problemas de rendimiento de la experiencia, no tomamos cada subsistema herramientas en absoluto a intentarlo de nuevo, la mayoría de los casos son: Sospechamos que un subsistema de problemas, de acuerdo con la herramienta y luego aparece en esta tabla, ir a la observación o verificación nuestra suposición, esto es, sin duda, exagerando los requisitos de experiencia de la optimización del rendimiento;
2) la idoneidad e integridad no es muy buena. Nuestro análisis de los problemas de rendimiento, desde el principio para analizar el sistema de la parte inferior es menos eficiente, la mayor parte del tiempo, desde el nivel de aplicación para analizar será más eficaz. Herramientas de rendimiento (Performance Linux Herramientas-completos) gráfico ofrece sólo un conjunto de herramientas desde la perspectiva de la capa del sistema, si se inicia a partir del análisis de capa de aplicación, qué herramientas podemos utilizar? ¿Cuál es el punto que primero tiene que centrarse en?
Dado el número de puntos de dolor anteriormente, se dan a continuación un enfoque más práctico "herramientas de optimización del rendimiento Atlas", las cifras, respectivamente, de la capa del sistema, capa de aplicación (capa que contiene componentes) punto de vista, en primer lugar hay citadas en el análisis de los problemas de rendimiento los indicadores de interés (que? es la preocupación más marcados), estos son el punto donde se producen los cuellos de botella más probable. Cabe señalar que algunos de los indicadores de baja frecuencia o de la herramienta, y no aparece en la figura, tales como interrupción de la CPU, los nodos de índice, I / O seguimiento de eventos, la investigación de estos de bajo punto de pensamiento es más compleja, la oportunidad es también generalmente encontró pequeña, donde nos centramos la mayoría de las más comunes en él.
La comparación anterior de herramientas de rendimiento (Performance Linux Herramientas-completos) Fig ventaja reside en la siguiente figura: las cosechadoras específicas de la herramienta con el rendimiento, al mismo tiempo desde diferentes niveles de cuello de botella para describir el punto de distribución, y la utilidad operativa algunos más fuertes.Capa es la CPU del sistema de herramientas divididas, memoria, disco (incluyendo un sistema de archivos), consistentes cuatro partes de la red, el rendimiento de la misma herramienta (conjunto de herramientas de rendimiento de Linux Herramientas-completos) en la herramienta de la figura. capa de componente y la capa de aplicación se configura herramientas: herramientas proporcionadas por los JDK + análisis de trazas Herramientas + + volcado de herramientas de perfilado.
Aquí no es una descripción específica del uso específico de estas herramientas, podemos usar comando man para obtener instrucciones detalladas sobre el uso de herramientas, además, hay otro método manual comando de consulta: información. información se puede entender como una versión detallada del hombre, si el hombre no es una buena comprensión de la producción, puede hacer referencia a un documento de información, comandos demasiado, recuerde que no hay necesidad de recordar.

 

 La imagen de arriba a usar?
En primer lugar, aunque el punto de describir el cuello de botella de los componentes del sistema de distribución, el uso de dos de tres ángulos, pero en la operación real, los tres menudo complementaria, la influencia mutua. El sistema prevé el entorno de tiempo de ejecución de la aplicación, la naturaleza del problema de rendimiento es el uso de los recursos del sistema alcanzado el límite, y se refleja en la capa de aplicación es la aplicación de los indicadores / componentes comenzaron a declinar, y el uso irracional y diseño de aplicaciones / componentes, Ya que acelerará el agotamiento de los recursos del sistema. Por lo tanto, cuando se analiza el punto de cuello de botella, necesitamos combinar los resultados de los análisis desde diferentes ángulos, fuera de campo común, para llegar a la conclusión final.
En segundo lugar, el inicio propuesta para iniciar la capa de aplicación, los indicadores de alta frecuencia análisis se indica en las figuras, agarrando la ventaja más importante, el más sospechoso y más probabilidades de rendimiento de punto, la conclusión preliminar después, ir a la validación de nivel de sistema. La ventaja de esto es: una gran parte del punto de cuello de botella refleja a nivel del sistema, se presentará multivariante, por ejemplo, la recolección de basura (GC) indicadores de nivel de aplicación aparecieron anormal, fácilmente observado por JDK viene con una herramienta, sino que reflejan sobre el nivel del sistema, el sistema encontrará la utilización actual de la CPU, memoria indicadores no son normales, lo que nos da el análisis de las ideas presentadas problemas.
Por último, si el cuello de botella en la capa de la capa de aplicación y el sistema se muestra distribuciones multivariantes, se recomienda utilizar este tiempo ZProfiler, JProfiler y otras herramientas para aplicaciones de perfilado, obtener información completa del rendimiento de aplicaciones (Nota: Perfilado se refiere a la aplicación se está ejecutando, por evento (basado en evento), el muestreo estadístico (muestreo estadístico) o implantar instrucciones adicionales (Byte-Code instrumentación) y otros métodos para recopilar información sobre el método de análisis de tiempo de ejecución de aplicaciones para estudiar el comportamiento dinámico). Por ejemplo, la muestra estadística puede estar en la CPU, en conjunción con diversas informaciones tabla de símbolos, de un periodo de tiempo para obtener el punto de acceso de código dentro de la aplicación.
Estos son los diferentes niveles de análisis, es necesario centrarse en los indicadores clave de rendimiento, sino también cómo estos indicadores preliminares, sistema o aplicación para determinar si hay un punto de cuello de botella, la confirmación de las causas del punto de cuello de botella, el punto de cuello de botella, tuning medios, se pondrá en marcha en la siguiente sección.
hilo de 3,1 CPU &&

Y los indicadores de la siguiente CPU principal relacionada. herramientas comunes incluyen superior, ps, el tiempo de actividad, vmstat, pidstat y así sucesivamente.

    1. utilización de la CPU (CPU Utilización)
    2. La carga de la CPU media (carga media)
    3. Los cambios de contexto (cambio de contexto)
top - 12:20:57 hasta 25 días, 20:49, 2 usuarios, carga media: 0,93, 0,97, 0,79 
Tareas:   51 totales, 1 en funcionamiento, 50 de dormir, 0 se detuvo, 0 zombi
 % de la CPU (s): US 1.6 , 1,8 sy, 0,0 Ni, 89.1 Identificación, 0,1 wa, 0,0 hi, 0,1 de Si, 7,3 st 
KiB Mem:   8388608 total 476,436 libre, 5.903.224 utilizado, 2.008.948 buff / caché 
KiB de intercambio:         0 total, 0 libre, 0 utiliza. 0 vano Mem 

   USUARIO PID PR NI VIRT RES SHR S   % CPU% MEM TIEMPO + COMANDO
 119680 administrador 20 0 600 908 72 332 5 768 S 2,3 0,9 52: 32,61 obproxy
  65.877 raíz 20 0 93 528 4936 2328 S 1,3 0,1 449: 03,61 alisentry_cli

Contenido de la primera línea de la pantalla: la hora actual, el tiempo de actividad del sistema y el número de usuarios inician sesión. Después de tres promedio de carga digital, que muestra secuencialmente el pasado 1 minuto, 5 minutos, y la carga media (carga media) 15 minutos. La carga media es la unidad de tiempo, el sistema está en estado de marcha (es el uso de CPU o en espera de proceso CPU, el estado R) y el número medio de procesos que no pueden ser estado de interrupción (estado D), que es el número medio de procesos activos, media carga de la CPU y la utilización de la CPU no están directamente relacionados .
Tercera línea representa la utilización de la CPU, el significado de cada columna se puede utilizar para ver el hombre. uso de la CPU refleja la unidad estadística del tiempo de uso de la CPU, como porcentaje de la forma en que el espectáculo. Calculado como: utilización de la CPU puede = 1 - Tiempo total (CPU tiempo de inactividad) / CPU. Cabe señalar que al analizar el rendimiento de la herramienta resultante es en realidad una utilización de la CPU CPU promedio durante un tiempo de muestreo. Nota: utilización de la CPU puede mostrar la herramienta superior es sumar los valores de todos los núcleos de CPU, es decir, la utilización máxima de la base de la CPU 8 puede alcanzar 800% (htop similares pueden utilizarse en lugar de la actualización de la parte superior de algunas herramientas).
Se utiliza comando vmstat, se puede ver el "cambios de contexto" el índice en la tabla siguiente, un conjunto de datos cada segundo de salida:

$ Vmstat 1 
procsos ----------- ---------- --- memoria swap-- ----- io ---- ---- -system-- --cpu ----- 
 rb swpd libre aficionado caché si así bo bi en cs nos sy wa Identificación del st
  0 0 0 504804 0 1967508 0 0 644 33377 0 1 2 2 88 0 9

Sobre la mesa cs (cambio de contexto) es el número de cambios de contexto por segundo, de acuerdo con diferentes escenarios, cambios de contexto de la CPU también se pueden dividir en el contexto de interrupciones de conmutación de cambio de contexto hilo y contexto del proceso de conmutación de tres tipos, pero no importa qué tipo, también el cambio de contexto, el tiempo de CPU se consume en guardar y restaurar los registros, la pila del núcleo y la memoria virtual y otros datos, lo que acorta el tiempo del curso realmente ejecuta, lo que lleva a una disminución sustancial en el rendimiento general del sistema. salida de vmstat en nosotros, utilización de la CPU son sy modo de usuario y modo kernel, estos dos valores son también muy valor de referencia.
vmstat perder sólo da el contexto general del sistema cambia las circunstancias, con el fin de ver los detalles de cada proceso de cambios de contexto (como interruptor voluntario e involuntario) se requiere pidstat, este comando también se puede conocer el modo de usuario y los procesos en modo kernel utilización de la CPU.

¿Qué análisis anomalías relacionadas con la CPU idea es?
1) utilización de la CPU: Si observamos un cierto período de tiempo que un sistema o proceso de solicitud de utilización de la CPU ha sido alto (más del 80% de un solo núcleo), entonces se merece nuestra vigilancia. Podemos utilizar repetidamente códigos calientes subproceso de la aplicación Ver pila el volcado comando jstack, aplicaciones no Java pueden utilizar directamente una CPU perf muestras recogidas, analizada fuera de línea los datos de muestreo obtenidos después de la CPU ejecuta un punto de acceso (pila de aplicaciones símbolo requerido mapeo información de tabla de Java, no puede ser utilizado directamente perf obtener resultados).
2) medio de carga de CPU: La carga media es mayor que el número de CPU 70%, hay un medio de punto de cuello de botella que el sistema, hay muchas razones para el aumento de la carga, en los que no lleva a cabo. Cabe señalar que el sistema de monitoreo mediante el control de la evolución de la carga media, más fácil de localizar el problema, a veces cargar archivos de gran tamaño, etc., puede conducir a un aumento transitorio de carga media. Si los tres valores de 1 minuto / 5 minutos / 15 minutos o menos, significa que la carga del sistema es muy estable, no se refiere si estos tres valores disminuyeron, lo que indica que la carga aumenta gradualmente, necesidad de centrarse en el rendimiento global;
3) el cambio de contexto CPU: cambio de contexto este indicador, y ninguna experiencia puede ser recomendada (decenas a decenas de miles son posibles), este valor depende del indicador de rendimiento de la CPU del sistema en sí, así como la situación actual de los trabajos de aplicación. Sin embargo, el número de cambios de contexto ocurrir si el sistema o aplicación del orden de magnitud del crecimiento, hay una gran probabilidad de indicar un problema de rendimiento, tal como hasta involuntaria y abajo interruptores aumentaron significativamente, lo que indica que hay demasiados hilos de la CPU de la competencia.
Los tres indicadores anteriores están estrechamente relacionados, tales como frecuente CPU cambio de contexto puede dar lugar a un promedio de carga aumenta. Cómo afinar la aplicación de acuerdo a la relación entre estos tres, en la siguiente sección.
Algunos de la transacción en la CPU, por lo general se puede observar, pero hay que señalar que a partir del hilo y el hilo no es del todo cuestiones relacionadas con la CPU. indicadores relacionados con los subprocesos, los principales son los siguientes (todos son directa o indirectamente a través de JDK viene herramienta jstack):

  1. El número total de hilos en la aplicación;
  2. Cada distribución de estado de subproceso de las solicitudes;
  3. El uso de un hilo de bloqueo, tal como puntos muertos, distribución de cerradura;


Acerca de hilo, hay excepciones pueden estar preocupados acerca de:
si el número total 1) hilo demasiado. Demasiados hilos, se refleja en la CPU causa cambios de contexto frecuente, mientras que el hilo consumirá demasiada memoria, el tamaño del número total de hilos y la configuración de la máquina y la propia aplicación correspondiente;
si el estado excepción 2) hilo. Observe si espera / hilo BLOCKED demasiado (o demasiado violento para establecer el número de hilos de bloqueo de contención), la unión de las aplicaciones que utilizan el análisis exhaustivo de bloqueo interno;
3) utilización de la CPU combinado, ver si hay consumir una gran cantidad de hilos de CPU.

3.2 && memoria de pila
y los indicadores de memoria relacionada principalmente en las siguientes herramientas de análisis utilizados comúnmente: parte superior, libre, vmstat, pidstat y JDK viene con algunas herramientas.

  1. el uso de memoria del sistema, incluyendo la memoria restante, memoria utilizada, la memoria disponible, el caché / buffers;
  2. Procesar (incluyendo el proceso de Java) de memoria virtual, memoria permanente, la memoria compartida;
  3. El número de página que falta del proceso anormal, incluyendo las principales anomalías página que falta y anomalías menores páginas que faltan;
  4. Cambiar cambiando dentro y fuera del tamaño de la memoria, los parámetros del intercambio;
  5. asignación de pila de JVM, los parámetros de JVM arranque;
  6. reciclaje JVM montón, situación GC.


Puede ver el uso de uso libre y la partición uso del intercambio de memoria del sistema, los mejores herramientas pueden ser específicas para cada proceso, como podemos ver el tamaño de la memoria residente proceso de Java (RES) con la función superior, estas dos herramientas se combinan , que cubre la mayor parte de las métricas de memoria disponibles. Aquí está la salida del comando libre:

$ gratis - h 
              totales utilizado libremente compartido buff / caché disponible 
Mem: 125G         6.8G 54G 2 .5m 64G 118G 
de intercambio:           2.0G 305M 1,7 g

significados específicos de cada columna en la salida no se repiten aquí, es relativamente fácil de entender. Bajo centra en el intercambio y pula / cache estos dos indicadores.
Swap es para efectuar un archivo local o un espacio de disco se utiliza como una memoria, y un transductor incluye un transductor en dos procesos. Intercambiar requiere de lectura y escritura del disco, por lo que el rendimiento no es muy alto, de hecho, incluyendo Elasticsearch, aplicaciones Java de Hadoop, incluyendo la mayoría de las recomendaciones SWAP desactivado, ya que el coste de la memoria se ha reducido, lo que también JVM y la recolección de basura procedimientos para la JVM en tiempo GC atravesarán todo el uso de la pila de memoria, esta memoria es si Intercambiar, habrá atravesado cuando se genera / S de disco. Aumento de la partición de intercambio y el uso del disco es generalmente fuertemente correlacionados, cuando el análisis específico, requiere una combinación de uso de la caché, el umbral swappiness, y expediente del caso páginas y páginas de análisis exhaustivo anónimos activos.
buff / cache es el tamaño de la memoria caché y la memoria intermedia. Caché (caché): se lee de archivos de disco o almacenar temporalmente datos al escribir archivos en el disco, archivo-orientado. Uso cachestat puede ver toda la memoria caché del sistema hit leer y escribir, y leer y escribir puede ser observado mediante golpes por cachetop caché proceso. Buffer (tampón) se escribe en el disco o leer datos del disco que almacena temporalmente datos, dispositivos orientados a bloques. salida del comando libre, se añaden los dos indicadores en conjunto, pueden ser utilizados para distinguir entre caché comando vmstat y tampón también se puede ver la partición cambiar cambiando dentro y fuera del tamaño de la memoria.
Consciente de los indicadores comunes de memoria, problemas de memoria común y qué? Resumirse como sigue:

  1. La memoria del sistema restante / falta de disposición (un proceso ocupar demasiado, el propio sistema de la memoria), desbordamiento de la memoria;
  2. excepción recuperación de la memoria: pérdidas de memoria (uso de memoria proceso en el tiempo siguió aumentando), frecuencia GC anomalía;
  3. Caché utiliza de gran tamaño (archivo grande lectura o escritura), la tasa de aciertos de caché no es muy alta;
  4. Anormal error de página excesiva (I frecuente / O leo);
  5. partición de intercambio utiliza anormal (uso excesivo);


Después de las anomalías relacionadas con la memoria, la idea es una especie de análisis de la forma?

  1. Utilice el uso libre / top mundial vista de la memoria, tales como el uso de memoria del sistema, el uso de memoria partición de intercambio, cache / tampón de ocupación, etc., para determinar la dirección inicial de los problemas de memoria: memoria de proceso, cache / tampones, partición de Swap;
  2. La observación de las tendencias en el tiempo utilizando una memoria. Vmstat tal como mediante la observación de si el crecimiento en la memoria se ha utilizado; jmap por la memoria de objeto estadísticas de distribución de temporización, determina si hay una pérdida de memoria, comando cachetop mediante el posicionamiento de las causas fundamentales de tampones de elevada;
  3. Dependiendo del tipo de problemas de memoria, en combinación con la aplicación en sí, para el análisis detallado.


Ejemplo: Uso libre de encontrar poco caché / tampón de ocupación, excluyendo el impacto de caché / memoria intermedia después -> Uso vmstat o sar vistazo a cada uno las tendencias de uso de memoria de proceso -> encontró que un proceso de la memoria cuando se usa seguido aumentando - > Si se puede utilizar una aplicación Java asignar herramientas jmap / VisualVM / montón de análisis de volcado tales como memoria de destino observación, o por un cambio en la memoria de la aplicación jstat observó GC -> escenarios de negocio de unión, pérdidas de memoria posicionados / parámetros GC es / irrazonable anomalías código de negocio.

3.3 && archivo de disco
en el análisis de los problemas y, por lo general su sistema de archivos relacionado con el disco y teniendo en cuenta la siguiente ya no se distinguen. Y los indicadores relacionados con el sistema de disco / archivo, principalmente en lo siguiente, herramientas comunes para la observación y pidstat iostat, la primera se aplica a todo el sistema, que se puede observar el proceso específico de I / O.

  1. Disco I / utilización O: se refiere al porcentaje del disco I / O el tiempo de procesamiento;
  2. Disco Throughput: se refiere al segundo tamaño de solicitud de E / S, en unidades de KB;
  3. I / O tiempo de respuesta, medios I / O petición emitida a partir del intervalo de recibir una respuesta, incluyendo el tiempo de procesamiento real y el tiempo de espera en la cola;
  4. IOPS (entrada / salida por segundo): I por solicitudes segundo de E / S;
  5. I / O cola de tamaño se refiere a la O cola de longitud media de I /, la longitud de la cola tan corto como sea posible;


Uso iostat interfaz de salida es el siguiente:

$ iostat - dx 
Linux 3.10.0-327.ali2010.alios7.x86_64 (loginhost2.alipay.em14) 10/20/2019 _x86_64_ (32 CPU) 

Dispositivo: RRQM / s wrqm / sr / sw / s rkB / s wkb / s avgrq-sz avgqu-sz await r_await w_await svctm% util 
sda                0,01 15,49 0,05 8,21 3,10 240,49 58,92 0,04 4,38 2,39 4,39 0,09 0,07

Figura anteriormente% util, es decir, el disco I / utilización O, con la misma utilización de la CPU, este valor también puede ser más de 100% (la presencia de la I / O paralelo); rkB / s y wkb / s de lectura, respectivamente, desde el disco por segundo y la cantidad de datos de escritura, es decir, el rendimiento, en unidades de KB; disco índice de I / O tiempo de procesamiento es r_await y w_await denotar el procesamiento de la solicitud tiempo de respuesta finalización de lectura / escritura, la svctm representa procesamiento requerido un I promedio / O tiempo, el índice se ha abandonado, no tiene importancia práctica. r / s + w / s es el índice de IOPS, enviado respectivamente a un segundo número de disco solicitudes de lectura y solicitudes de escritura; AQU-sz indica la longitud de la cola de espera.

y la mayor parte de la producción iostat pidstat similar, excepto que se puede revisar cada proceso de E / S en tiempo real.
Cómo determinar el índice de disco aparecido anormal?

  1. Cuando la utilización del disco I / O por un largo tiempo, más de 80%, o el tiempo de respuesta es demasiado grande (por la SSD, de milisegundos a 0.0x oscilan 1.x ms, disco mecánico típicamente de 5 ms ~ 10 ms), por lo general significa que el disco de E / S hay un cuello de botella;
  2. Si es grande util%, mientras que rkB / S y wkb / S es pequeña, porque en general hay más de disco de acceso aleatorio, es el más optimizado el acceso aleatorio para lectura y escritura secuencial, (strace o blktrace observado por I / O si se determina continuamente si el comportamiento de escritura secuencial, indicador de acceso aleatorio debe estar preocupado por IOPS, lectura secuencial puede estar preocupado por un cierto índice);
  3. Si avgqu-SZ relativamente grande, lo que indica que hay muchos de E / S petición de espera en la cola. Generalmente, si la longitud de la cola de un único continuo en dos discos, se cree generalmente que la presencia de I / O problema de rendimiento con este disco.

3.4 Red de
gama cubre un amplio concepto de red en la capa de aplicación, capa de transporte, capa de red, capa de interfaz de red tiene diferentes indicadores para medir. Aquí "red" que estamos hablando, especialmente la capa de aplicación de red, los indicadores se utilizan generalmente como sigue:

  1. ancho de banda de red: representa la velocidad de transmisión máxima del enlace;
  2. Red Rendimiento: indica la cantidad de datos transmitidos con éxito por unidad de tiempo;
  3. Retardo de red: indica una petición emitida desde la red hasta que recibe una respuesta al extremo distal, el tiempo requerido;
  4. conexión de red y errores;


En general, la red de capa de aplicación cuellos de botella de las siguientes categorías:

  1. cúmulo de ancho de banda de red o sala de máquinas, donde los efectos de saturación mejorar QPS aplicación / TPS;
  2. red anormal rendimiento se produce, como un gran número de interfaces de transferencia de datos, lo que resulta en un ancho de banda excesivo;
  3. Red excepción de conexión o error;
  4. partición de la red se produce.


Ancho de banda de la red y el rendimiento de estos dos indicadores, que normalmente se centran en toda la aplicación se puede obtener directamente a través del sistema de control, si hay un claro índice aumentó con el tiempo, lo que indica que hay un cuello de botella de la red. Para independiente, red de rendimiento se puede obtener utilizando la interfaz de red sar, proceso.
Uso de ping o hping3 si la red puede obtener la zonificación, retardo de red específica se produce. Para aplicaciones, que están más preocupados por el retraso de todo el enlace, se pueden obtener todos los aspectos de la información de retardo de enlace a través del registro de seguimiento después de middleware Buried salida.
Utilice netstat, ss y SAR puede obtener el número de conexiones de red o error en la red. sobrecarga excesiva causada por enlaces de red es grande, uno tomará un descriptor de archivo, y en segundo lugar, se ocupará de la caché, por lo que el sistema puede soportar una serie de enlaces de red está limitada.
3.5 Resumen de herramientas
puede observar que, en el análisis de la CPU, memoria, disco y otros indicadores de rendimiento, hay varias herramientas son las frecuencias altas, como por ejemplo arriba, vmstat, pidstat, ligeramente resumir aquí:

  1. CPU: top, vmstat, pidstat, sar, perf, jstack, jstat;
  2. 内存: superior, libre, vmstat, cachetop, cachestat, sar, jmap;
  3. Disco: superior, iostat, vmstat, pidstat, du / df;
  4. La red: netstat, sar, dstat, tcpdump;
  5. Aplicación: perfilador, el análisis de volcado.

 

Muchas de las herramientas anteriormente, la mayoría de los cuales se utilizan para las métricas de nivel de sistema vista, la capa de aplicación, además de una amplia gama de herramientas proporcionadas por el JDK, algunos productos comerciales tales como gceasy.io (análisis de registros GC), fastthread.io (volcado hilo análisis log) es bueno.

la solución de problemas en línea excepción de aplicación Java o código de aplicación de análisis de cuello de botella, puede utilizar código abierto Ali Arthas, esta herramienta es muy potente, la siguiente introducción breve.

 

Arthas línea principal de diagnósticos en tiempo real orientados a la aplicación, la solución es similar a la "anomalía de aplicaciones en línea, la necesidad de análisis y el posicionamiento de la línea" cuestión, por supuesto, algunos métodos Arthas proporcionan herramientas de seguimiento en nuestra investigación, tales como "consulta lenta", etc. llamada cuestión, pero también es muy útil. La función principal de Arthas proporcionado son:

 

  1. Obtener estadísticas de rosca, como hilo posee las estadísticas de bloqueo, las estadísticas de utilización de la CPU;
  2. Cargando información de clase, carga dinámica de clases, el método de información de carga;
  3. Seguimiento de llamadas pila, estadísticas de llamadas que requieren mucho tiempo;
  4. parámetros de llamada método, el resultado detectado;
  5. La configuración del sistema, la información de configuración de la aplicación;
  6. Descompilar cargar la clase;
  7. ....


Cabe señalar que el único medio de herramientas de rendimiento para solucionar problemas de rendimiento, podemos entender el uso general de las herramientas comunes, no poner demasiada energía en una herramienta de aprendizaje.

Supongo que te gusta

Origin www.cnblogs.com/029zz010buct/p/12608303.html
Recomendado
Clasificación