Contactos

Cómo desactivar el registro de las solicitudes lentas. Registro en MySQL. Análisis de datos de perfiles de consulta

Consultas de perfilado en MySQL Se utiliza para evaluar el rendimiento de su solicitud. Al desarrollar aplicaciones medianas y grandes, es necesario lidiar con cientos de solicitudes distribuidas de acuerdo con su código, que se ejecutan cada segundo. Ninguna técnica de perfiles de consulta es muy difícil de encontrar debido a lo que sufre la velocidad de su aplicación.

¿Qué es una pregunta lenta en MySQL?

La magnitud de las solicitudes lentas en MySQL es un registro, notando solicitudes lentas y potencialmente problemáticas. MySQL de forma predeterminada admite tal funcionalidad, pero está deshabilitado. Usando la configuración de ciertas variables del servidor, podemos especificar en qué solicitudes estamos interesados. La mayoría de las veces necesitamos consultas que requieran una cierta cantidad de Tiempo en su ejecución o consultas que manejan incorrectamente los índices.

Ajuste de perfiles variables

Variables básicas para configurar registros de solicitud:

Llow_query_log g slow_query_log_file g long_query_time g / s log_queries_not_using_indexes g min_examined_row_limit g / s

Comentario: G - Variables globales, S - Variables del sistema

  • slow_Query_log - Valor booleano incluyendo registro
  • slow_Query_Log_File es una ruta absoluta al archivo de registro. El propietario del catálogo debe ser un usuario. mysqld.Y el directorio debe tener permisos correctos para leer y escribir. La mayoría de las veces, MySQL Daemon se está ejecutando en nombre del usuario. mysql.

Para comprobar, ejecute los siguientes comandos:

PS -F | GREP BIN / MYSQLDLD | CUT -D "" -f1

La salida del comando le dará el nombre del usuario actual y el usuario mysqld. Ejemplo de configuración de directorio / var / log / mysql:

CD / VAR / LOG SUDO MKDIR MYSQL SUDO CHMOD 755 MYSQL Sudo Chown MySQL: MySQL MySQL

  • long_query_time - Time en segundos para verificar la duración de la consulta. Por ejemplo, con 5, cada solicitud durante más de 5 segundos se registrará en el registro.
  • log_queries_not_using_indexes - Valor booleano, incluye solicitudes de ahorro que no usan índices. Dichas solicitudes son muy importantes al analizar.
  • min_examined_row_limit: indica el valor mínimo del número de series de datos para su análisis. El valor de 1000 ignora las solicitudes que devuelven menos de 1000 filas de valores.

Puede configurar estas variables en el archivo de configuración de MySQL, dinámicamente a través de MySQL GUI o línea de comando MySQL. Si las variables se enumeran en el archivo de configuración, el servidor los instalará en el próximo lanzamiento. Por lo general, este archivo se encuentra en / etc, / usr, /etc/my.cnf o /etc/mysql/my.cnf. Aquí están los comandos de búsqueda de archivos de configuración (a veces, debe ampliar la búsqueda de otros directorios raíz):

Buscar / etc -name my.cnf heard / usr -name my.cnf

Cuando encuentre un archivo, agregue las variables requeridas en la sección:

; ... SALO-QUERY-LOG \u003d 1 SALO-QUERY-LOG-FILE-FILE \u003d /VAR/LOG/MYSQL/LOCALHOST-SLOW.LOG LONG_QUERY_TIME \u003d 1 LOG-QUERIES: índices no usando; No hay valor

Los cambios se llevarán a cabo solo en el próximo lanzamiento de MySQL, si necesita un cambio dinámico de parámetros, use otros métodos de instalación variable:

MySQL\u003e Set Global Slow_Query_log \u003d "ON"; Mysql\u003e set global slow_query_log_file \u003d "/var/log/mysql/localhost-slow.log"; MySQL\u003e set global log_queries_not_using_indexes \u003d "ON"; MySQL\u003e Set Session long_query_time \u003d 1; MySQL\u003e Set Session Min_examined_row_limit \u003d 100;

Compruebe que los valores de las variables pueden ser de la siguiente manera:

MySQL\u003e Mostrar variables globales como "Slow_Query_Log"; MySQL\u003e Mostrar variables de sesión como "long_query_time";

La principal desventaja de la instalación dinámica: los valores se perderán en el inicio del sistema. Se recomienda indicar parámetros importantes En la configuración de MySQL.

La nota: La sintaxis de la configuración de la configuración dinámica a través del comando set y usando archivo de configuración Varía ligeramente, por ejemplo, Slow_Query_Log / Slow-Query-Log. En la documentación oficial DBMS encontrarás. descripción completa Sintaxis. El formato de archivo-archivo se utiliza para el archivo de configuración, nombre de la variable del sistema: nombres de variables cuando se configuran dinámicamente los valores.

Generación de datos para la solicitud de perfiles.

Revisamos los principales elementos de configuración de perfiles, ahora creamos solicitudes que le interesan. Este ejemplo se usó en el servidor MySQL que se ejecuta sin ningún entornos preliminares Tronco. Los ejemplos de solicitudes se pueden ejecutar a través de los comandos MySQL GUI y DBMS. Al monitorear el registro de solicitud de ranura, a menudo se abren dos ventanas con una conexión: una para comenzar las solicitudes, otra: para ver el registro.

$\u003e mysql -u -p mysql\u003e Crear perfil de base de datos_sampling; MySQL\u003e Utilice Perfil_Sampling; MySQL\u003e Crear usuarios de la tabla (ID Tinyint Primary Key Auto_Inscrement, nombre Varchar (255)); MySQL\u003e Insertar en los valores de los usuarios ("Nombre) (" Walter "), (" Skyler "), (" Jesse "), (" Hank "), (" Walter Jr. "), (" Marie "), ( "Saúl"), ("Gustavo"), ("Héctor"), ("Mike"); MySQL\u003e Set Global Slow_Query_log \u003d 1; Mysql\u003e set global slow_query_log_file \u003d "/var/log/mysql/localhost-slow.log"; mysql\u003e set global log_queries_not_using_indexes \u003d 1; Mysql\u003e set long_query_time \u003d 10; mysql\u003e establecer min_examined_row_limit \u003d 0;

Ahora tenemos una base de datos con datos de prueba. Lanzamos el perfilado, pero el tiempo de respuesta y la cantidad de líneas que instalamos específicamente pequeñas. Para ver el registro, use el equipo:

CD / VAR / LOG / MYSQL LS -L

Según la idea, el archivo de registro aún no debe existir, ya que no realizamos solicitudes a la base de datos. Si existe, esto significa que el perfil se ha configurado anteriormente, y esto puede distorsionar los resultados del ejemplo. Realizar en la consola:

MySQL\u003e Utilice Perfil_Sampling; MySQL\u003e Seleccionar * de los usuarios donde id \u003d 1;

Nuestra solicitud utiliza el índice de clave principal de la tabla. La solicitud funcionó muy rápidamente utilizando el índice, por lo que en el registro no debe reflexionar. Tenga en cuenta que no se debe crear el archivo de registro.

Ahora haz lo siguiente:

MySQL\u003e Seleccionar * de los usuarios donde Nombre \u003d "Jesse";

Aquí no usamos índices. Ahora tenemos que ver esta consulta en el registro:

Sudo cat /var/log/mysql/localhost-slow.log # Time: 140322 13:54:58 # [Correo electrónico protegido]: root @ localhost # query_time: 0.000303 Lock_time: 0.000090 Rows_Sent: 1 Rows_examined: 10 Use Profile_Sampling; Establecer timestamp \u003d 1395521698; Seleccione * de los usuarios donde Nombre \u003d "Jesse";

Considera otro ejemplo. Levante el número de filas en respuesta y siga la siguiente solicitud:

Mysql\u003e establecer min_examined_row_limit \u003d 100; MySQL\u003e Seleccione * de los usuarios donde Nombre \u003d "Walter";

La solicitud no afectará el registro, ya que no excedimos las 100 líneas en respuesta a la solicitud.

La nota: Si los datos no se muestran en el registro, primero debe considerar los siguientes factores. El primero es el derecho al directorio donde se almacena el archivo de registro. El grupo y el usuario deben coincidir con el usuario de MySQLD, los derechos deben ser - Chmod 755. El segundo: es posible perfilar, se configuró previamente. Quitar todo valores existentes Perfile las variables del archivo de configuración y reinicie el servidor o establezca las variables dinámicamente. Si usaste método dinámico, saldrás y volverás a la consola MySQL.

Análisis de datos de perfiles de consulta

Considere el ejemplo anterior:

# Tiempo: 140322 13:54:58 # [Correo electrónico protegido]: root @ localhost # query_time: 0.000303 Lock_time: 0.000090 Rows_Sent: 1 Rows_examined: 10 Use Profile_Sampling; Establecer timestamp \u003d 1395521698; Seleccione * de los usuarios donde Nombre \u003d "Jesse";

Aquí vemos:

  • El momento en que se lanzó la solicitud
  • El usuario que ejecutó la solicitud.
  • Horario de apertura
  • Duración de bloqueo
  • Número de cadenas seleccionadas
  • Número de cadena analizada

Estos datos son muy útiles, ya que con su ayuda podemos encontrar y eliminar la causa de la desaceleración del sistema. Además, el desarrollador o administrador de MySQL siempre puede ver solicitudes de problemas y desea observar que los encuentran mucho más rápidos aquí que estudiar código de programa Aplicaciones. Con un perfil largo, puede realizar un seguimiento de las condiciones de operación a baja velocidad.

Usando mysqldumppslow

Registro constantemente registra datos, por regla general, escribe mucho más de lo que leía. Con un tamaño de registro grande, se vuelve problemático leerlo. El MySQL incluye la herramienta MySqldumpslow, que ayuda a mantener la integridad del registro. El programa en sí se combina con MySQL (en sistemas Linux). Para usarlo, ejecute el comando necesario y pase la ruta al archivo de registro:

Sudo mysqldumpslow -t 5 -s en /var/log/mysql/localhost-slow.log

Hay una serie de parámetros para ayudar a configurar la salida del comando. En el siguiente ejemplo, veremos las últimas cinco solicitudes ordenadas por duración media. Como resultado, leer el registro se vuelve mucho más conveniente. (La salida se cambia para mostrar los valores reales en el registro):

Cuente: 2 veces \u003d 68.34s (136s) Bloqueo \u003d 0.00s (0s) Filas \u003d 39892974.5 (79785949), [Correo electrónico protegido] Seleccione PL.PL_TITLE, P.PAGE_TITLE DE PAG INTERNE ÚNETE PAGELINKS PL en PL.PL_NAMESPACE \u003d P.Page_NAMESPACE \u003d N ...

Lo que vemos son:

  • CUENTA - El número de solicitudes en el registro
  • Tiempo - tiempo promedio y total de consulta
  • Bloqueo - Tiempo de bloqueo de la tabla
  • Filas - Número de líneas seleccionadas

El comando elimina los datos numéricos y de cadena de la solicitud, es decir, las consultas con la misma condición se considerarán las mismas. Gracias a este instrumento, no tiene que navegar constantemente el registro. Debido a gran número Los parámetros de comando, puede ordenar la salida ya que es conveniente para usted. También hay desarrollos. desarrolladores de terceros Con una funcionalidad similar, como PT-QUERY-DIGEST.

Solicitudes del conductor

Debe pagarse a otra herramienta que le permita romper consultas complejas. La mayoría de las veces, debe tomar una solicitud del registro y luego ejecútelo directamente en la consola MySQL. Primero necesitas encender perfiles, y luego ejecutar la consulta:

MySQL\u003e Set Session Perfiling \u003d 1; MySQL\u003e Utilice Perfil_Sampling; MySQL\u003e Seleccionar * de los usuarios donde Nombre \u003d "Jesse"; MySQL\u003e Mostrar perfiles;

Después de encender perfiles, mostrar los perfiles mostrará la pantalla de enlace de la tabla, la expresión de SQL. Encuentre la Query_ID correspondiente y siga la siguiente solicitud (Reemplace # a su Query_ID):

Mysql\u003e seleccione * desde la información_schema.profilado donde Query_ID \u003d #;

Un ejemplo de salida:

SEQ Estado Duración 1 Comenzando 0.000046 2 Permisos de control 0.000005 3 Tablas de apertura 0.000036

Expresar - Paso en el proceso de ejecución de la consulta, Duración - Duración de inicio en segundos. Esta herramienta no se usa tan a menudo, pero a veces puede ser extremadamente útil para determinar la razón para reducir la velocidad de la solicitud.

Descripción detallada de la columna:

Una descripción detallada de los pasos:

La nota: Esta herramienta no debe utilizarse en el modo de operación del servidor, con la excepción del análisis de consultas específicas.

Velocidad de velocidad de velocidad

La última pregunta es cómo se ve afectado el perfil por la velocidad del servidor en su conjunto. En el modo de producto del servidor, es posible utilizar de manera segura dicha tala, no debe afectar la CPU en la E / S. Sin embargo, vale la pena prestar atención al tamaño del archivo de registro, no debe ser prohibitivamente grande. También de la experiencia, me gustaría notar que establecer el valor de los costos de Long_Query_Time variable igual a 1 segundo y más alto.

Importante: No debe usar la herramienta de perfilado: establecer perfiles \u003d 1 - Para grabar todas las solicitudes, es decir, No se recomienda la variable general_log en el producto y en las grandes cargas.

Conclusión

El perfil de la consulta puede ayudarlo mucho en resaltar una solicitud de problema y en la evaluación general de desempeño. El desarrollador también puede explorar cómo las solicitudes de MYSQL trabajan sus aplicaciones. La herramienta MySqldumpSlow ayuda a ver y procesar el registro de solicitud. Después de definir las solicitudes de problemas, deberá configurarlas para el máximo rendimiento.

El perfil de consultas MySQL es un método útil para analizar el rendimiento general de las aplicaciones según la base de datos. Al desarrollar aplicaciones medianas y grandes, por regla general, cientos de solicitudes se distribuyen a través de una base de código grande, y la base de datos procesa muchas solicitudes por segundo. Sin consultas de perfilado, se vuelve muy difícil determinar el hallazgo y las razones para la ocurrencia de aplicaciones estrechas. Algunos métodos de perfil de consulta útiles se describen en este manual utilizando las herramientas MySQL incorporadas.

Registro de consultas lentas MYSQL

El registro de solicitud lento de MySQL (o el registro de consulta lento) es un registro en el que MySQL envía solicitudes lentas y potencialmente problemáticas.

Esta función viene con MySQL, pero el valor predeterminado está deshabilitado. MySQL determina qué solicitudes se agregarán a este registro utilizando variables especiales que le permiten perfilar una solicitud basada en los requisitos de rendimiento de la aplicación. Por lo general, las consultas se realizan a este registro, el procesamiento de las cuales toma más tiempo y las consultas que son índices incorrectos.

Perfil de variables

Las variables básicas del servidor para configurar el registro de solicitudes de MySQL lento son:

llow_query_log global
Llow_query_log_file global
Long_query_time global / session
log_queries_not_using_indexes global
min_examined_row_limit global / session

slow_Query_log es una variable lógica para activar y desactivar las solicitudes lentas.

slow_Query_Log_File es la ruta absoluta del archivo de registro de consulta. El directorio de archivos debe pertenecer al usuario MySQLD y tener derechos de lectura y escritura adecuados. El demonio MySQL probablemente se lanzará como MySQL, pero para asegurarse de que inicie el comando en el terminal de Linux:

pS -F | GREP BIN / MYSQLDLD | CUT -D "" -f1

La salida mostrará el usuario actual y el usuario mysqld.

cD / VAR / LOG
mkdir mysql
Chmod 755 MySQL
Chown MySQL: MySQL MySQL

  • long_query_time - Tiempo en segundos para verificar la longitud de la consulta. Si 5 en el registro registrará todas las solicitudes, el procesamiento de las cuales toma más de 5 segundos.
  • log_queries_not_using_indexes: un valor lógico que determina si necesita registrar solicitudes que no usan índices. Al analizar, dichas solicitudes son importantes.
  • min_examined_row_limit: define el número mínimo de filas para su análisis. Con el valor de 1000, todas las solicitudes que analizan menos de 1000 líneas se ignorarán.

Las variables del servidor MySQL se pueden instalar en el archivo de configuración MYSQL o en el uso dinámico interfaz de usuario o línea de comandos mysql. Si las variables se instalan en el archivo de configuración, se guardarán cuando se reinicie el servidor, pero para activarlos, debe reiniciar el servidor. El archivo de configuración de MySQL generalmente está en /etc/my.cnf o /etc/mysql/my.cnf. Para encontrar un archivo de configuración, ingrese (quizás necesite expandir la búsqueda de otros directorios raíz):

encontrar / etc -name my.cnf
Encontrar / usr -name my.cnf

Habiendo encontrado un archivo de configuración, agregue las variables requeridas a la sección:


….
LAST-DEERY-LOG \u003d 1
Archivo lento-log-file \u003d /var/log/mysql/localhost-slog.log
Long_query_time \u003d 1.
LOG-QUERIES: índices no usando

Para cambiar los cambios, debe reiniciar el servidor. Si los cambios deben activarse de inmediato, establezca las variables dinámicamente:

mySQL\u003e Set Global Slow_Query_log \u003d "ON";
Mysql\u003e set global slow_query_log_file \u003d "/var/log/mysql/localhost-slow.log";
MySQL\u003e set global log_queries_not_using_indexes \u003d "ON";
MySQL\u003e Set Session long_query_time \u003d 1;
MySQL\u003e Set Session Min_examined_row_limit \u003d 100;

Para comprobar los valores de las variables:

mySQL\u003e Mostrar variables globales como "Slow_Query_Log";
MySQL\u003e Mostrar variables de sesión como "long_query_time";

Una de las deficiencias del cambio dinámico de variables MySQL es que las variables se perderán cuando se reinicie el servidor. Por lo tanto, todas las variables importantes que deben guardarse deben agregarse al archivo.

Solicitud de generación para perfiles.

Ahora está familiarizado con la configuración de los registros de solicitudes lentas. Trate de generar los datos de solicitud para perfilar.

Nota: El ejemplo aquí se ejecuta en la instancia en ejecución de MySQL sin configurar los registros de solicitudes lentas. Estas consultas de prueba se pueden realizar a través de interfaz gráfica o línea de comandos mysql.

Al monitorear un registro de consulta lento, es útil abrir dos ventanas de terminal: una conexión para enviar a los operadores MySQL y el segundo para ver el registro de solicitudes.

Ir servidor mysql Uso de la consola como usuario con privilegios Super Admin. Para empezar, cree una base de datos de pruebas y una tabla, agregue datos ficticios y encienda el registro de solicitud de ranura.

Nota: Idealmente, este ejemplo es mejor actuar en un medio sin ninguna otra aplicación utilizando MySQL para evitar que el interruptor de solicitud.

$\u003e Mysql -u -p
mySQL\u003e Crear perfil de base de datos_sampling;

MySQL\u003e Utilice Perfil_Sampling;


MySQL\u003e Crear usuarios de la tabla (ID Tinyint Primary Key Auto_Inscrement, nombre Varchar (255));


MySQL\u003e Insertar en los valores de los usuarios ("Nombre) (" Walter "), (" Skyler "), (" Jesse "), (" Hank "), (" Walter Jr. "), (" Marie "), ( "Saúl"), ("Gustavo"), ("Héctor"), ("Mike");


MySQL\u003e Set Global Slow_Query_log \u003d 1;


Mysql\u003e set global slow_query_log_file \u003d "/var/log/mysql/localhost-slow.log";


mysql\u003e set global log_queries_not_using_indexes \u003d 1;


Mysql\u003e set long_query_time \u003d 10;


mysql\u003e establecer min_examined_row_limit \u003d 0;

Ahora tienes una base de datos de pruebas y tabla con pequeña cantidad datos. Registrar las solicitudes lentas incluidas. Estamos instalados deliberadamente tiempo alto Pedir procesamiento y desconectado Comprobación de la cantidad de filas. Para ver el registro, ingrese:

cD / VAR / LOG / MYSQL
Ls -l

Hasta ahora en la carpeta no debe ser el registro de solicitudes lentas, ya que este momento No hubo solicitudes. Si un registro de este tipo ya está allí, significa que la base de datos ya ha encontrado solicitudes lentas, ya que ha incluido el soporte para el registro de las solicitudes lentas. Esto puede distorsionar los resultados de este ejemplo. Vuelva a la pestaña MySQL y su lanzamiento:

mySQL\u003e Utilice Perfil_Sampling;
MySQL\u003e Seleccionar * de los usuarios donde id \u003d 1;

La solicitud ejecutada simplemente recupera los datos y utiliza el primer índice clave de la tabla. Esta solicitud fue rápida y utilizó el índice, por lo que no está registrado en el registro de solicitud de ranura. Vuelva al directorio y asegúrese de que no se creó el registro de solicitud. Ahora vuelve a la ventana MySQL y ejecute:

mysql\u003e

Esta consulta no usa el índice. Ahora en el /var/log/mysql/localhost-Slow.log Log, debe aparecer aproximadamente una entrada:

# Tiempo: 140322 13:54:58

usar perfil_sampling;
Establecer timestamp \u003d 1395521698;

Un ejemplo más. Aumente el número mínimo de filas para su análisis y envíe dicha solicitud:

mysql\u003e establecer min_examined_row_limit \u003d 100;
MySQL\u003e Seleccione * de los usuarios donde Nombre \u003d "Walter";

Los datos no se agregarán al registro, ya que se analizaron menos de 100 líneas al solicitar.

Nota: Si los datos no se han agregado al registro, debe verificar varios factores. Primero, verifique los derechos del directorio en los que se crea el registro. Debe pertenecer al usuario / grupo MySQLD y tener privilegios de Chmod 755. Luego, debe verificar si no hay solicitudes lentas en el servidor, que anule sus parámetros. Restablecer los valores predeterminados para eliminar todas las variables de consultas lentas del archivo de configuración y reinicie el servidor. También puede establecer dinámicamente las variables globales a sus valores estándar. Si realiza cambios dinámicamente, salga del sistema e inicie sesión en MySQL para actualizar los parámetros.

Solicitar análisis de datos de perfiles

Considere dichos datos:

# Tiempo: 140322 13:54:58
# [Correo electrónico protegido]: root @ localhost
# Query_time: 0.000303 Lock_time: 0.000090 Rows_sent: 1 Rows_examined: 10
usar perfil_sampling;
Establecer timestamp \u003d 1395521698;
Seleccione * de los usuarios donde Nombre \u003d "Jesse";

Esta entrada muestra:

  • Pedir tiempo de ejecución
  • Quien lo envió
  • Cuánto tiempo se procesó la solicitud
  • Largo
  • Cuantas filas fueron devueltas
  • ¿Cuántas filas fueron analizadas?

Esto es útil porque cualquier solicitud que viole los requisitos de rendimiento especificados en las variables cae en el registro. Esto permite al desarrollador o administrador monitorear rápidamente las solicitudes que no funcionan. Además, los datos de perfil de solicitud lo ayudarán a determinar qué circunstancias reducen el rendimiento de la aplicación.

Usando mysqldumppslow

Los perfiles se pueden incluir en las aplicaciones basadas en BD para proporcionar un flujo de datos moderado.

A medida que aumenta el tamaño del registro, se vuelve difícil desmontar todos los datos, y las solicitudes de problemas se pierden fácilmente en ella. MySQL ofrece la herramienta MySQLDLLDUMPLOW que ayuda a evitar este problema al separar la sociedad de las solicitudes lentas. El archivo binario está asociado con MySQL (en Linux), por lo que simplemente puede ejecutar el comando:

mysqldumpslow -t 5 -s en /var/log/mysql/localhost-slow.log

Para configurar la salida, el comando puede recibir varios parámetros. En el ejemplo anterior, las primeras 5 solicitudes ordenadas por medio se mostrarán el tiempo de consulta. Tales líneas son más legibles, así como agrupadas a petición.

Cuente: 2 veces \u003d 68.34s (136s) Bloqueo \u003d 0.00s (0s) Filas \u003d 39892974.5 (79785949), [Correo electrónico protegido]
Seleccione pl.pl_title, p.page_title
De la página P.
Únete interno Pagelinks pl
En pl.pl_namespace \u003d p.page_namespace
Donde p .page_namespace \u003d n

La salida refleja tales datos:

  • Cuenta: ¿Cuántas veces se ingresó la solicitud en el registro?
  • Tiempo: Tiempo de consulta promedio y total (entre paréntesis).
  • Cerradura: Tiempo de bloqueo de tabla.
  • Filas: el número de filas devueltas.

El comando elimina los valores numéricos y de cadena, ya que las mismas solicitudes con diferentes condiciones se perciben como las mismas. MySqldumpSlow Herramienta elimina la necesidad de ver constantemente el registro de solicitudes lentas, en su lugar, lo que le permite realizar regular cheques automáticos. Los parámetros de comando mysqldumpslow le permiten realizar expresiones complejas.

Solicitudes del conductor

Otra herramienta de perfiles sobre las cuales debe recordarse es una herramienta para un desglose complejo de las solicitudes. Le permite identificar las solicitudes de problemas en un registro de consulta lentas y ejecútelo en MySQL. Primero, debe habilitar el perfilado, y luego ejecutar la consulta:

mySQL\u003e Set Session Perfiling \u003d 1;
MySQL\u003e Utilice Perfil_Sampling;
MySQL\u003e Seleccionar * de los usuarios donde Nombre \u003d "Jesse";
MySQL\u003e Mostrar perfiles;

Después de encender, mostrar perfiles mostrará una tabla que une a Query_ID con una expresión SQL. Encuentre Query_ID que cumpla con la consulta iniciada e inicie la siguiente solicitud (reemplace # su Query_ID):

mysql\u003e seleccione * desde la información_schema.profilado donde Query_ID \u003d #;

El equipo devolverá la tabla:

SEC. Expresar Duración
1 a partir de. 0.000046
2 permisos de control 0.000005
3 mesas de apertura 0.000036

El estado es un paso en el proceso de ejecutar una consulta, y la duración es el tiempo requerido para completar este paso en segundos. No es tan herramienta útilPero puede ayudar a determinar qué parte de la ejecución de la consulta causa el mayor retraso.

Nota: Esta herramienta no debe utilizarse en el entorno de producción.

Rendimiento de registro de solicitud actual

Sólo sigue siendo averiguar cómo el resbalón de solicitudes lentas afecta la productividad. En general, para ejecutar el registro de las consultas lentas en el entorno de producción es seguro; Ni la CPU, ni la E / S debería sufrir. Sin embargo, debe tener una estrategia para monitorear el tamaño del registro para que el registro sea demasiado grande para sistema de archivos. Además, al iniciar una sociedad de solicitudes lentas en el entorno de producción, se establece LONG_QUERY_TIME VALOR 1 o superior.

Conclusión

El registro de las solicitudes lentas puede ayudar a identificar las solicitudes de problemas y evaluar el rendimiento general de las solicitudes. Al mismo tiempo, el desarrollador puede obtener una idea detallada de cómo se ejecutan las consultas de MySQL en la solicitud. La herramienta MySqldumpSlow le permite controlar los registros de solicitudes lentas y incluirlas fácilmente en el proceso de desarrollo. Decidir las solicitudes de problemas, puede optimizar el procesamiento de solicitudes para aumentar la productividad.

Etiquetas:

Concepto

Registros de servidores (registro del servidor, registro del servidor) - Falsed almacenados en el servidor que contienen información de información del sistema, así como todos los datos posibles sobre el visitante de recursos web.

Los registros son utilizados por los administradores del sistema para analizar los visitantes., Estudiando los patrones del comportamiento de ciertos grupos de usuarios, así como la recepción de diversas información sobre ellos, tales como: navegador usado, dirección IP, datos sobre la posición geográfica del cliente y mucho más. Mediante el análisis, de esta manera, puede aprender sobre el acceso no autorizado al sitio, más precisamente, para averiguar quién se produjo exactamente, y transmitir los datos sobre este caso a las autoridades pertinentes.

Los datos en el archivo de registro, en su forma pura, no estarán claros a los usuarios ordinarios que se verán en todo esto, solo un conjunto de caracteres en un pedido incomprensible. Pero para administradores del sistema y los desarrolladores web, es un texto bastante legible, y bonita información útil.


Secuencia de eventos

Con el acceso de cada cliente al recurso web, se activan varios eventos de inmediato, la secuencia de la que hablaremos.

1. Solicitud de página. Al ingresar la dirección en la línea del navegador, o cuando vaya en un enlace web activo, digamos de la página resultados de la búsquedaEl navegador busca y se conecta al servidor en el que se encuentra la página, e implementa su solicitud. Al mismo tiempo, transmite dicha información al servidor:
- la dirección IP de la computadora del cliente, que solicita la página (en caso de usar un servidor proxy, la dirección IP de su proxy);
- Dirección solicitada por el usuario de la página de Internet (dirección IP);
- Tiempo y fecha exactos cuando se realizó una solicitud;
- datos sobre la ubicación real del cliente (si se usa un servidor proxy, luego la dirección proxy real);
- información sobre el navegador utilizado por el cliente (nombre, versión, etc.);
- Datos en una página web con la que se realizó la transición del cliente.

2. Transferencia de datos solicitados. La transmisión de los datos solicitados está ocurriendo (página de Internet, archivos, cooki, etc.) del servidor a la computadora del usuario.

3. Grabar en el registro del servidor. Después de todo, se registra el registro, lo que indica todos los datos que aparecieron en los últimos dos eventos. Esta es toda la información enviada en el primer párrafo, así como información sobre los datos transmitidos.

Cómo ver registros del servidor

Archivos de registro almacenados en el archivo access.log. Independientemente de cómo el tipo de servidor web use (Apache, Nginx, Squid Proxy Server, etc.) Este archivo Es un documento de texto, en cada línea de los cuales, se registra por un manejo. Formatos de grabación B. Access.log. Mucho, pero el más popular se combina, en el que la grabación tiene la siguiente forma y secuencia:

Código:% H% L% u% t \\ "% r \\"%\u003e s% b \\ "% (referente) I \\" \\ "% (usuario-agente) I \\"
Dónde:

% H. - la dirección Host / IP desde la cual se realizó la solicitud;
% T. - Pedir tiempo para servidor y servidor de zona horaria;
% R. - versión, contenido y tipo de consulta;
% S. - Código de estado HTTP;
% B. - el número de bytes atendidos por el servidor;
% (Referente) - Fuente de consulta URL;
% (Agente de usuario) - título HTTP, con información de solicitud (aplicación de cliente, idioma, etc.);
% (ANFITRIÓN) - El nombre del host virtual, al que hay una apelación.

en el video terminado esta línea Tiene sobre el siguiente tipo:

127.0.0.1 - "Obtener /index.php http / 1..0 (compatible; msie 7.0; Windows NT 5.1)"

Para leer registros de lectura en Manual, tomará bastante tiempo y fuerza. Por lo tanto, los webmasters experimentados usan software especial que llame "archivos de registro". Analizan todos los datos que son bastante complejos para leer por la persona y emitir datos estructurados. Estos son tales programas como: Analógico, WebAnalizer, Webalizador, Awstats, WebTRENDS, etc. Especies especiales software bastante, entre ellos hay como programas pagadosy gratis. Por lo tanto, estoy seguro de que todos encontrarán algo así.

Dónde encontrar registros del sitio

Si tiene un alojamiento ordinario, lo más probable es que tenga que escribir en su host y solicitar registros. Lo mismo, con bastante frecuencia, puede solicitarlos a través del panel HOSTER. En diferentes hosters, de diferentes maneras. Por ejemplo, para solicitar de mi sustituto, es suficiente para hacer un clic en pagina principal Paneles:


Si tienes acceso a carpetas del sistema Servidores, puedes encontrar registros para / etc / httpd / logs / access_log En 99 casos de 100.

Error de error de registro. LOG.

Registro de errores. - El archivo en el que los registros también están en marcha. Pero no los visitantes, sino que surgen en los errores del servidor. Como en el caso de access.log.Cada fila de archivos es responsable de un error. El registro se lleva a cabo teniendo en cuenta dicha información como: la fecha y la hora exactas de la aparición de errores, la dirección IP de la que se emitió un error, el tipo de error, así como la razón de su aparición.

Conclusión

Los registros son una herramienta bastante poderosa e informativa con la que es necesario trabajar. Pero en nuestro tiempo, son reemplazados por tales herramientas como Yandex.metrica, Google Analytics, etc., logrando así nuestra vida. Sin embargo, si planea desarrollar, crecer y saber algo nuevo, sin duda, sin duda, le recomiende que pueda familiarizarse con este tema más cerca.

Los registros de eventos son la primera herramienta y más simples para determinar el estado del sistema e identificar errores. Registros principales en MySQL Four:

  • Registro de errores. - Registros de errores estándar que se recopilan durante la operación del servidor (incluido el inicio y la parada);
  • Registro binario. - El registro de todos los comandos del cambio de BD, se necesitan para la replicación y las copias de seguridad;
  • Registro general de consultas. - El principal registro de solicitudes;
  • Registro de consulta lenta. - Registro de solicitudes lentas.

Error de registro

Esta revista contiene todos los errores que se produjeron durante la operación del servidor, incluidos los errores críticos, así como detenerse, habilitar servidores y advertencias (advertencias). Debe comenzar en caso de un fallo del sistema. De forma predeterminada, todos los errores se muestran en la consola (STDERR), también puede registrar errores en SYSLOG (predeterminado en Debian) o un archivo de registro separado:

Log_error \u003d / var / log / mysql / mysql_error.log

# Los errores se escribirán en mysql_error.log

Recomendamos mantener esta revista habilitada para definir rápidamente errores. Y para entender cuál es el error que significa uno u otro, la utilidad PERROR está presente en MySQL:

Shell\u003e Perror 13 64 Código de error del sistema operativo 13: PERMISO DE PERMISO NEGADO OS Código de error 64: La máquina no está en la red

# Explica los valores de los códigos de error

Registro binario (un binario)

Todos los comandos de cambio de la base de datos se registran en el registro binario, es útil para replicación y recuperación.

Enciende esto:

Log_bin \u003d /var/log/mysql/mysql-bin.log expire_logs_days \u003d 5 max_binlog_size \u003d 500m

# Indica la ubicación, la vida útil y talla máxima Archivo

Tenga en cuenta que si no va a escalar el sistema e implementar la tolerancia de fallas, entonces el registro binario no debe incluir. Es exigente de recursos y reduce el rendimiento del sistema.

Solicitudes de registro

Este registro contiene todas las consultas SQL recibidas, información sobre conexiones de clientes. Puede ser útil para analizar índices y optimización, así como identificar solicitudes erróneas:

General_log_File \u003d /var/log/mysql/mysql.log. general_log \u003d 1.

# Enciende el registro e indica la ubicación del archivo

También puede habilitarlo / deshabilitarlo durante la operación del servidor MySQL:

Set Global General_log \u003d "ON"; Establecer GLOBAL GENERAL_LOG \u003d "OFF";

# Para usarlo, no necesita reiniciar el servidor

Registro de solicitudes lentas

La revista es útil para determinar lentamente, es decir, solicitudes ineficientes. Lee mas este artículo.

Ver los registros

Para ver registros en Debian (Ubuntu), debe realizar:

# ERRORES DE REGISTRO TAIL -F / VAR / LOG / SYSLOG # TAIL -F /VAR/LOG/MYSQL/MYSQL.LOG # Registro de solicitudes lentascola -f /var/log/mysql/mysql-slow.log.

# Si los registros no se especifican por separado, entonces está EN / VAR / LIB / MYSQL

Rotación de registros

No olvide comprimir (archivar, rotar) archivos de registro para que ocupen menos espacio en el servidor. Para hacer esto, use la utilidad. logrotate.Editando el archivo de configuración. /etc/logrotate.d/mysql-server:

# - Puse todo en una cuadra y agregué escritos compartidos, para que MySQL obtenga # Flush-Logs "d solo una vez. # Otra cosa, los registros binarios aumentarían automáticamente por n veces todos los días. # - El registro de errores es obsoleto, los mensajes van a syslog ahora./var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log. (Gire Daily 7 Missingok Cree 640 MySQL ADM COMPRINGS COMPRIPTOS POSTRATEATE TEST -X / USR / BIN / MYSQLADMIN || SALIDA 0 # Si esto falla, compruebe a Debian.conf! MyAdmin \u003d "/ usr / bin / mysqladmin --defaults-file \u003d / etc / mysql / debian.cnf" si [-z "` $ MyAdmin Ping 2\u003e / dev / null`]; Luego. # ¿Realmente no hay msqld o más bien un usuario defensivo de Debian-SYS-MANTE? # Si esto ocurre y no es un error, por favor reporte un error. #if PS CAX | grep -q mysqld; Luego. Si Killall -Q -s0 -umysql mysqld; Luego, salga 1 FI MEDIO $ MYADMIN FLUSH-LOGS FI TINTSCRIP)

# Comprime y archiva los registros deseados, borra archivos

Registro DDL.

MySQL también lleva un registro de idioma de descripción de datos. Drop_table y alter_table se recogen en él. El registro se utiliza para restaurar después de fallas que ocurrieron durante la ejecución de dichas operaciones. DDL Log es un archivo binario que no está dedicado al usuario, por lo que no modifique y no lo elimine.

La cosa más importante

Siempre encienda el registro de errores, use el registro de solicitud para verificar la conexión de la aplicación con la base de datos, las verificaciones y las verificaciones de trabajo. El resbalón de solicitudes lentas es útil para optimizar el trabajo de MySQL.



¿Te gustó el artículo? Compártelo