Virtualización de servidores: sistemas para la optimización de costos, compre cualquier configuración, selección de parámetros y selección de costos por precio y cálculo. Optimización del rendimiento de los equipos Soluciones de optimización técnica para servidores

Recientemente, se recibió una solicitud de ayuda para configurar un servidor dedicado para el funcionamiento de una tienda en línea en 1C-Bitrix. El motivo de la apelación es el lento funcionamiento del sitio.
Miramos el sitio; de hecho, ¡algunas páginas se cargan durante más de un minuto! Lo primero que me vino a la mente al mirar el sitio fue el funcionamiento subóptimo de los componentes desarrollados por otro desarrollador. Pero no tanto..

Datos iniciales: Servidor en Xeon - 2 GB de memoria, RAID. SO - FreeBSD. AUTOBÚS - Negocios.

Bueno, intentemos arreglar la situación de alguna manera ...
Haré una reserva de inmediato de que este artículo no es una instrucción para trabajar con el módulo, solo un caso real de la vida del uso del módulo. Tal vez alguien sea útil.

Después de la auditoría, se identificaron los siguientes problemas principales:
1. Necesitas instalar un acelerador de PHP en el servidor
2. En la página /price/, el componente "nvisions:menu.sections" tiene grandes problemas: se genera una solicitud a la base de datos que se procesa durante casi un minuto; esta es también la razón principal de la carga prolongada de la página. como una carga pesada en el servidor.
3. La base de datos funciona lentamente (687 solicitudes de escritura por segundo es muy pequeña), el problema puede estar en la configuración del servidor. Necesita convertir tablas a InnoDB y configurar InnoDB
4. El sistema de archivos no es muy rápido, pueden ser las características del hardware del servidor (por ejemplo, RAID), pero en principio, el sitio debería funcionar bien con esa velocidad
5. El problema en la plantilla del sitio (hay enlaces que no existen (a)) debe eliminarse; esto requiere muchos recursos.
6. Es necesario configurar una arquitectura de dos niveles en el servidor (servir contenido estático a través de nginx), esto reducirá significativamente la carga en el servidor Apache, estabilizará el consumo de memoria en las cargas y, por lo tanto, acelerará el trabajo y aumentará la confiabilidad. del proyecto en su conjunto.

Analicemos la información del módulo de rendimiento 1C-Bitrix:

La figura muestra claramente problemas con el servidor de la base de datos, lo más probable es que la configuración no sea la óptima, porque. servidor dedicado.
También sospechosamente bajo número de operaciones de archivos.


Problemas obvios con código o componentes en la página /price/index.php
Tiempo de generación de /bitrix/urlrewrite.php sospechosamente largo - busque más:

Sí, esa es la fuente del problema: la plantilla contiene un enlace a una imagen inexistente, esto genera un error 404 y obliga a Apache a procesar este error y generar una página completa.

El mismo problema afecta a todas las páginas del sitio asociadas con la plantilla problemática:


Y aquí están los componentes problemáticos en la página:


El componente de menú tiene el almacenamiento en caché deshabilitado.
Resumen de la página:

Bueno, aquí un breve análisis. Qué convenientemente el módulo de rendimiento le dice "dónde están los problemas". Comencemos a solucionar problemas:

Agregaron una imagen a la que había un enlace, agregaron una imagen y no eliminaron los enlaces, porque había muchos enlaces, incluso en componentes de terceros. También en esta página, se deshabilitó el componente problemático de terceros (nsvision:menu.sections). su propósito no está claro. (después del cierre, nada ha cambiado externamente)
Resultado:


Urlrewrite.php ahora no se llama en cada hit



Como puede ver, la velocidad de trabajo ha aumentado 2 veces (!).

Vamos más allá:
Instalar eacelerador. Aquí no describo cómo se instala el acelerador, porque. esta información, si es necesaria, siempre se puede encontrar en Internet.







Resultado después de instalar eAccelerator: Otro doble aumento en el rendimiento.

Vamos más allá: Optimizando la base de datos(transferir a InnoDB y optimizar la configuración)


Como puede ver en la prueba del módulo de rendimiento, la velocidad de la base de datos ha aumentado significativamente
En general, el rendimiento general después de optimizar la base de datos se mantuvo sin cambios, posiblemente debido a la lentitud del trabajo. sistema de archivos.

ACTUALIZAR:
Recomendaciones del módulo de rendimiento.
Escuchando las recomendaciones del módulo, deshabilite el parámetro "open_basedir", porque el servidor está asignado solo para nuestro proyecto, queremos decir que la seguridad en general no será violada.

Resultado:


El resultado, como dicen, está DISPONIBLE

Queda por reescribir los componentes "torcidos" y el proyecto volará.

También instalé y configuré nginx como servidor proxy para Apache. No doy fotos porque Los números no han cambiado mucho. Pero según la evaluación subjetiva, las páginas comenzaron a cargarse un par de veces más rápido.

La plantilla aún se genera durante mucho tiempo (el tiempo de generación es casi el mismo que el del núcleo del sistema); aparentemente, el desarrollador anterior no escribió el código de manera óptima. Para desmontar el código de otro no hay tiempo, ni presupuesto, ni ganas. Es más fácil, rápido y económico escribir su código desde cero.

En general: El módulo Performance es una herramienta muy útil y conveniente para depurar el trabajo del proyecto y el servidor. Por lo que gracias a sus desarrolladores.

PD Personalmente, tengo poca experiencia con Linux. Con FreeBSD se familiarizó de cerca en el primero. Me sorprendió que después de instalar algún software, los archivos de configuración generalmente están vacíos (por ejemplo, MySQL). Estaba satisfecho con la facilidad de instalar software desde los "puertos".

Optimización de la infraestructura de bases de datos y entornos virtuales

Mejore el rendimiento de su infraestructura de base de datos actual y obtenga recomendaciones para una mayor optimización con los servicios en la nube.

El proyecto de Optimización del Servidor es relevante en los siguientes casos:

  • falta de un sistema centralizado de almacenamiento y recuperación de datos;
  • problemas de rendimiento del servidor SQL;
  • problemas en la aplicación;
  • falta de un sistema para garantizar la tolerancia a fallas del centro de datos;
  • evaluar la preparación y viabilidad de la migración de la infraestructura de TI a las nubes;
  • falta de una comprensión común del estado de la infraestructura de la base de datos y el entorno virtual.
    Administre su entorno de servidor de manera más eficiente:
    Auditoría técnica de la infraestructura de la base de datos SQL
    Detectar problemas de configuración del servidor Poner a punto un servidor SQL no es una tarea fácil, incluso para un administrador de base de datos con suficiente experiencia. Realizaremos un análisis exhaustivo de la configuración a nivel del sistema, como la configuración de memoria predeterminada, partición, sesiones paralelas, almacenamiento en caché, discos, configuración Copia de reserva y etc.

    Optimización de memoria y almacenamiento en disco El principal factor que afecta el rendimiento de cualquier base de datos moderna es el subsistema de E/S. Analizaremos la naturaleza de la carga en la base de datos y brindaremos recomendaciones para optimizar el almacenamiento y la RAM en términos de velocidad y confiabilidad del almacenamiento de información.

    Optimización del rendimiento de la base de datos Cada desarrollador de base de datos tiene sus propias recomendaciones para optimizar el rendimiento de un servidor o clúster. Los especialistas de nuestra empresa realizaron varias opciones para configurar la base de datos para diferentes tipos de carga de trabajo y pueden ofrecer configuraciones de rendimiento óptimas. Estas recomendaciones siempre están respaldadas con enlaces a la documentación y las mejores prácticas del proveedor para implementar software.

    Análisis de logs de errores y detección de problemas críticos Los registros de errores son la principal fuente de información sobre el funcionamiento de la base de datos y los problemas en las aplicaciones que utilizan esta base de datos. Nuestros especialistas han desarrollado sus propias herramientas para analizar problemas y encontrar métodos para eliminarlos. Como regla, cualquier proyecto necesariamente contiene un análisis de los registros del servidor de la base de datos, en base a los cuales se dan recomendaciones para la optimización.

    Optimización de base de datos(disparadores, índices, mensajes de seguimiento) Todas las bases de datos modernas recopilan información sobre su propio rendimiento en forma de un conjunto de segmentos de datos que le permiten determinar la eficiencia con la que funciona la base de datos con el subsistema de disco, caché de consultas, suficiencia de índices en tablas, etc. Analizaremos esta información y proporcionaremos recomendaciones sobre cómo realizar cambios en la configuración.

    Construcción de una arquitectura tolerante a fallas El desarrollo de una arquitectura base con un modo de operación 24x7 con un tiempo de inactividad de no más de 2 horas por año implica un aumento en la cantidad de servidores, un estudio detallado de la parte de software y la eliminación de un punto único de falla. Lo ayudaremos a resolver este problema y, además, recibirá una política para realizar copias de seguridad y restaurar tanto el código ejecutable de la base de datos como todos los datos.

    Aprovisionamiento de una base de datos de alta disponibilidad con un tiempo de respuesta mínimo Nuestros expertos te ayudarán a optimizar tus bases de datos para obtener la máxima velocidad de tu servidor. Se realiza el análisis de retrasos, la eficiencia del caché, índices, "consultas pesadas", el trabajo del optimizador de consultas y se dan recomendaciones para mejorar la eficiencia del trabajo.

    Optimización de bases de datos para aplicaciones específicas Optimizamos y ajustamos las bases de datos MS SQL y Oracle para aplicaciones comerciales, como sistemas de gestión de documentos, sistemas de contabilidad de gestión, soluciones de portal, etc. Al realizar el trabajo, nos guiamos por las recomendaciones de los proveedores de software para configurar el software, así como por nuestro propia experiencia de optimización DB para varios tipos de carga de usuario.

    Elección de una plataforma de hardware para implementar software de base de datos Los proveedores de bases de datos modernas tienen listas de hardware que son óptimos para ejecutar una base de datos. Podemos analizar sus preferencias de proveedores, encontrar servidores en los que pueda implementar software de base de datos o preparar una especificación para la compra de equipos de base de datos.

    Análisis y optimización del entorno de base de datos virtual Los problemas de rendimiento de cualquier software en un entorno virtualizado suelen estar relacionados con las peculiaridades de cada hipervisor específico y el hardware en el que se ejecutan los servidores virtuales. Nuestros expertos lo ayudarán a identificar las causas de las ralentizaciones y optimizarán la ubicación del software de la base de datos en los servidores virtuales de su centro de datos.

    Obtenga una estimación precisa del proyecto de nuestro equipo o aprenda cómo realizar una encuesta sin costo para usted con el soporte del proveedor.

  • Por qué es necesaria la optimización del servidor

    5 (100%) 2 voto[s]

    El mundo moderno de los negocios ha conquistado durante mucho tiempo la inmensidad de Internet. Pero construir un sitio web rentable no es todo lo que se necesita para administrar un negocio exitoso. Si ya tiene un sitio de este tipo, entonces debería pensar en optimizar el servidor.

    ¿Por qué necesitamos la optimización del servidor?

    El hecho es que con un aumento en el número de clientes de su sitio, definitivamente se requiere su servicio cómodo y rápido (después de todo, esta es la única forma de desarrollar con éxito su negocio). Es en tales situaciones que comienzan a surgir los siguientes problemas:

    • Las páginas del sitio web se cargan lentamente
    • el acceso a él puede estar completamente ausente.

    Son estos problemas los que indicarán que el servidor está sobrecargado y no puede realizar sus funciones directas.

    Por supuesto, en este caso, existe el riesgo de perder incluso a sus clientes habituales. Incluso los más pacientes pueden cambiar a un sitio de la competencia cuando se cansan de esperar para acceder al tuyo.

    Los expertos recomiendan: prestar atención al rendimiento del servidor lo antes posible y comenzar a optimizarlo. Tal paso permitirá que todos los clientes se sientan cómodos en su sitio, lo que, en consecuencia, afectará el desarrollo de su negocio.

    ¿Qué es la optimización del servidor?

    Como ves, el funcionamiento óptimo de cualquier sitio web está directamente relacionado con . Si el cliente visita la página del sitio, la solicitud se envía al servidor, donde se procesa y se genera una respuesta. La velocidad de dicho procedimiento de respuesta depende del servidor, es decir, de sus características de rendimiento. A la velocidad mínima, el servidor debe acelerarse para aumentar la velocidad de respuesta.

    Muchos usuarios dan el paso de reemplazar el hardware con funciones más potentes para acelerar los servidores. Pero tal salida no siempre se justifica y no permite resolver los problemas que han surgido.

    Nuestros expertos sugieren ir por el otro lado:

    1. identificar el problema en sí mismo (¿qué impide que el servidor funcione rápidamente?),
    2. afinar apache;
    3. instalar y configurar un servidor web nginx de almacenamiento en caché para una configuración de servidor específica;
    4. configurar el servidor de base de datos mysql:
    • tamaños de búfer,
    • almacenamiento en caché de consultas,
    • trabajando con tablas
    1. instalar y configurar el módulo de almacenamiento en caché para php (XCache, EAccelerator, etc.);
    2. optimizar los ajustes necesarios sistema operativo.

    Este enfoque ayudará a acelerar el rendimiento del servidor.

    Hay varias formas de mejorar el rendimiento del servidor, pero la optimización es la mejor.

    Optimización del sistema operativo (FreeBSD)

    • Cambiar a 7.x es útil para sistemas multinúcleo ya que se pueden usar el nuevo Programador ULE 3.0 y jemalloc. Si está utilizando un sistema heredado 6.x y no puede manejar la carga, entonces es hora de actualizar a 7.x.
    • Actualizando a 7.2 aumentará KVA, optimizará sysctl por defecto y aplicará superpáginas. Ya se está preparando un nuevo FreeBSD 8.0, que ayudará a aumentar significativamente el rendimiento.
    • Cambiando a amd64 permite aumentar los volúmenes de KVA y Shared Mem más de 2Gb. Es necesario crear condiciones para el desarrollo del servidor, porque las bases de datos están en constante crecimiento y requieren de grandes tamaños.
    • Descarga del subsistema de red en FreeBSD ayudará a optimizar el servidor. Este proceso se puede realizar en dos pasos: ajustar las opciones de ifconfig y la configuración de sysctl.conf/loader.conf. En la etapa de preparación, debe verificar las capacidades de la tarjeta de red. Los controladores de Yandex ayudarán a aumentar la velocidad mediante el uso de múltiples subprocesos, a menudo se usan para procesos de múltiples núcleos. Para una tarjeta de red de tercera categoría, el sondeo es la mejor solución. La última versión actualizada del ajuste de FreeBSD 7 ayudará a resolver el problema.
    • FreeBSD y una gran cantidad de archivos funciona muy bien gracias al almacenamiento en caché de nombres de archivo en el directorio. Una búsqueda en la tabla hash lo ayudará a encontrar rápidamente el archivo que necesita. Aunque la cantidad máxima de memoria es de unos 2 MB, puede aumentarla siempre que vfs.ufs.dirhash_mem lo permita.
    • Actualizaciones suaves, diarioymontar opciones- Estos son nuevos tornillos de terabyte que tienen un excelente rendimiento. En un corte de energía, fsck tardará mucho tiempo en hacerlo, por lo que puede usar actualizaciones de software o iniciar sesión a través de gjournal.

    Optimización front-end (nginx)

    Este tipo se puede atribuir a una optimización prematura, aunque ayudará a aumentar el tiempo de respuesta general del sitio. Entre las optimizaciones estándar, debe prestar atención a reset_timedout_connection; enviar archivo; tcp_nopush y tcp_nodelay.

    • Aceptar filtros es una tecnología que hace posible transferir información desde el kernel al proceso en caso de nuevos datos o una solicitud http válida. Estos filtros ayudarán a descargar el servidor con una gran cantidad de conexiones.
    • almacenamiento en caché en nginx se caracteriza por la flexibilidad y se deriva de fastcgi o de servidores proxy. Todo el mundo podrá utilizar el almacenamiento en caché de forma inteligente en su proyecto.
    • todo en uno es muy útil para algunas cargas de trabajo específicas del servidor, ya que ahorra tiempo de respuesta y reduce la cantidad de trabajadores. Las nuevas versiones de nginx permiten usar aio junto con sendfile.

    Optimización de back-end

    • APC es un marco que le permite reducir la carga al almacenar en caché el código compilado en el OP. El bloqueo de APC debe actualizarse, ya que puede ralentizarse y, en lugar de APC, muchas personas comienzan a usar eAccelerator. Vale la pena reemplazar el bloqueo con spinlock o pthread mutex. El valor de las sugerencias de APC debe aumentar cuando hay una gran cantidad de archivos .php o cuando el almacenamiento en caché en el caché de usuario de APC es frecuente. La fragmentación de APC es una señal de que está haciendo un mal uso de APC. No puede ocuparse de forma independiente de la eliminación de registros por parte de TTL o LRU.
    • PHP 5.3 ayudará a aumentar el rendimiento, por lo que vale la pena actualizar su versión de PHP, aunque la lista de funciones obsoletas puede asustar a muchos.

    Optimización de base de datos

    Hay muchas ideas sobre cómo mejorar el rendimiento de MySQL en Internet, porque todo proyecto web, tarde o temprano, se enfrenta a limitaciones de memoria, disco o procesador. Por lo tanto, las soluciones simples no ayudarán a resolver el problema, vale la pena dedicar más tiempo a los generadores de perfiles (dtrace, systemtap y oprofile), así como usar una gran cantidad de software adicional. Es necesario no solo poder usar perfectamente los índices, ordenarlos y agruparlos, sino también saber cómo funciona todo dentro de MySQL. También debe conocer las ventajas y desventajas de los diferentes motores de almacenamiento, comprender la caché de consulta y EXPLAIN.

    Hay varias formas de optimizar MySQL, incluso sin cambiar los códigos, porque la mitad de la optimización del servidor se puede realizar de forma semiautomática utilizando las utilidades tuningprimer, mysqltuner y mysqlsla.

    • Transición a 5.1 ofrece muchas ventajas, entre las que cabe destacar la optimización del optimizador, el particionamiento, el complemento InnoDB y la replicación basada en filas. Para acelerar el sitio, algunos extremos ya están probando la versión 5.4.
    • Pasando a InnoDB proporciona muchos beneficios. Es compatible con ACID, por lo que cualquier operación se realiza con una sola transacción. Tiene bloqueo de nivel de fila, lo que hace posible leer y escribir simultáneamente muchos subprocesos de forma aislada entre sí.
    • Caché incorporada de MySQL - Caché de consultas es bastante difícil de entender, por lo que muchos usuarios lo usan irracionalmente o lo deshabilitan. Para él, más no significa mejor, por lo que no debes llevar al máximo este subsistema. Query Cache está paralelizado, como resultado, cuando se usan más de ocho procesos, solo ralentizará todo el proceso y no contribuirá a reducir el tiempo de carga del sitio. Los contenidos de este subsistema que pertenecen a una tabla en particular se invalidan cuando se realizan cambios en esa tabla. Esto significa que Query Cache solo funciona si usa tablas bien diseñadas.
    • Los índices pueden ser dañinos tanto para SELECT (si están ausentes) como para INSERT/UPDATE (si hay más). Un índice que ya no está en uso sigue ocupando memoria y, por lo tanto, ralentiza los cambios de datos. Para lidiar con este problema, debe usar una consulta SQL simple.

    postgresql

    El sistema Postgres es bastante versátil, porque pertenece a la clase Enterprise y Skype funciona bien en él, pero al mismo tiempo se puede instalar incluso en teléfono móvil. Entre los 200 parámetros disponibles, 45 de ellos son básicos y son responsables de la sintonización.

    En Internet puede encontrar mucha información útil sobre cómo ajustar Postgres. Pero algunos artículos ya están desactualizados, por lo que debe comenzar desde la fecha de publicación y prestar atención a la información donde se usa la clave vacuum_mem, o en nuevas versiones de maintenance_mem. Los programadores avanzados podrán encontrar muchos tratados de calidad, a continuación enumeramos solo aquellos conceptos básicos que ayudarán al usuario promedio a mejorar su proyecto.

    • Índices PostgreSQL siempre está en el primer lugar, mientras que en MySQL siempre están en la última posición, y esto se puede explicar por el hecho de que los índices de PostgreSQL tienen capacidades tremendas. El programador debe estar bien versado en dichos índices y saber cuándo y cuál usar, como GiST, GIN, hash y B-tree, así como expresiones parciales, multicolumna y on.
    • pgBouncer y sus alternativas deben instalarse primero en el servidor de la base de datos. Sin un agrupador de conexiones, cada solicitud crea un proceso separado que se utiliza RAM. Parece estar bien, pero cuando se crean más de 200 conexiones, incluso un servidor muy potente difícilmente puede hacer frente al procesamiento de la información. pgBouncer ayuda con este problema.
    • pgFouine es un programa indispensable, ya que puede llamarse con seguridad un análogo de mysqlsla en php. Junto con Playr, puede realizar la optimización de consultas en condiciones difíciles en servidores de prueba.

    Descarga de base de datos

    Para optimizar el funcionamiento de la base de datos y aumentar su rendimiento, debe utilizarla lo menos posible.

    • EsfingeQL puede ser utilizado como un servidor MySQL. Para hacer esto, solo necesita crear sphinx.conf, así como entradas para el indexador en cron y cambiar a otra base de datos. Con estas acciones, ni siquiera hay necesidad de cambiar el código. Cambiar a SphinxQL ayudará a mejorar la velocidad y la calidad de la búsqueda, además de olvidarse de MyISAM y FTS.
    • Almacenamiento no RDBMS permite no utilizar una base de datos relacional. Puede optar por Hive u Oracle. La base de datos clave-valor, debido a su velocidad, utiliza selecciones de bases de datos relacionales para un almacenamiento en caché adicional. Los propietarios de grandes proyectos PHP pueden usar la excelente función de caché de código de operación para almacenar todos los datos personalizados. Con él, puede guardar de manera confiable incluso cambios de valor global, ya que ocupan poco espacio y prácticamente no ocupan memoria, y la velocidad de muestreo también aumentará significativamente. Si para un proyecto grande se escribe un bloque de cambios globales en una sola máquina, entonces el tráfico crece y comienza a ralentizarse mucho. Para resolver este problema, es necesario almacenar variables globales en el caché de código de operación o clonar variables en todos los servidores y escribir excepciones en el algoritmo hash de consistencia.
    • Codificaciones se encuentran entre los métodos efectivos para descargar una base de datos. Vale la pena señalar que UTF-8 es una excelente opción, pero en ruso ocupa mucho espacio, por lo que para un contingente monolingüe, primero debe pensar en el uso racional de la codificación.
    • La asincronía ayudará a reducir el tiempo de respuesta de una aplicación o sitio, así como a reducir significativamente la carga en el propio servidor. Las solicitudes por lotes se realizan mucho más rápido que las habituales. Para proyectos grandes, puede usar mensajes RabbitMQ, ApacheMQ o ZeroMQ, y para proyectos pequeños, puede usar solo cron.

    Aplicaciones adicionales para la optimización

    • SSHGuard o alternativa es una práctica estándar para ssh. La fuerza bruta ayuda a crear una protección confiable del servidor contra los ataques de bots.
    • Xtrabackup by Percona es una excelente herramienta de respaldo de MySQL con muchas opciones de personalización. Pero solución ideal sin embargo, vale la pena nombrar clones en ZFS, porque se crean muy rápidamente y para restaurar la base de datos, basta con cambiar las rutas a los archivos en la configuración del músculo. Los clones le permiten restaurar el sistema desde cero.
    • Mover correo a otro host ahorrará tráfico e IOP si su servidor es bombardeado con spam.
    • Integración de terceros software ayudará a optimizar el servidor mysql. Por ejemplo, para la mensajería, puede usar el paquete smtp/imap, que no ocupará mucha memoria. Para crear un chat, basta con utilizar la base del servidor jabber con un cliente javascript. Estos sistemas, que se basan en adaptadores de productos listos para usar, son altamente escalables.
    • El monitoreo es un componente muy importante, porque es imposible optimizar algo sin un análisis detallado. Es necesario monitorear métricas de rendimiento, recursos libres y retrasos, Zabbix, Cacti, Nagios y otras herramientas ayudarán con esto. Web Performance Test te permite calcular la velocidad de carga de un sitio o proyecto, por lo que ayuda mucho en el seguimiento. Al configurar un servidor de rendimiento, recuerde que solo un análisis exhaustivo ayudará a eliminar todos los problemas y optimizar.

    No entienda la mitad de lo que está escrito, no importa.