HTTP/3
Habilitar HTTP/3 para Apache
Apache actualmente no cuenta con un módulo HTTP/3 nativo y, por lo tanto, no cuenta con soporte nativo. Apache aún puede aprovechar HTTP/3 si NGINX se configura como proxy inverso una vez que se habilite la compatibilidad con HTTP/3 en NGINX.
Nota: Apache se puede emparejar con el balanceador de carga HAProxy para habilitar la compatibilidad con HTTP/3 en servidores Apache (HAProxy tiene compatibilidad nativa con HTTP/3).
Habilitar HTTP/3 para NGINX
https://codedamn.com/news/backend/leveraging-http3-with-nginx
Breve tutorial sobre cómo habilitar HTTP/3 para NGINX.
Habilitar HTTP/3 para OpenLiteSpeed
https://azdigi.com/blog/en/linux-server-en/web-server/enable-quic-http-3-on-openlitespeed
Artículo sobre cómo habilitar HTTP/3 para OpenLiteSpeed.
HTTP/2 y HTTP/3 Server Push (Gratis)
Plugin gratuito de inserción de servidores
Optimización del rendimiento de SSL (gratis)
Hay varias áreas que se pueden mejorar en la conexión SSL (y la latencia general del tráfico SSL). Algunas de ellas pueden afectar la seguridad, ya sea de forma leve o significativa.
(Éstos son para ssl.conf usando Apache)
Deshabilite la búsqueda de dominio y permita que los no SNI accedan al dominio principal
- SSLStrictSNIVHostCheck desactivado
En lugar de hosts nombrados, utilice la dirección IP para la entrada VHOST :443
Sesiones SSL en caché
- Caché de sesión SSL shmcb:/run/httpd/sslcache(512000)
- Tiempo de espera de caché de sesión SSL 300
Permitir un orden más rápido del protocolo SSL, compatibilidad general, seguridad media:
- Protocolo SSL todo -SSLv3
- SSLCipherSuite TODO:+ALTO:+TLSv1:!ADH:!EXP:!SSLv2:!MEDIO:!BAJO:!NULL:!aNULL
- Orden de cifrado de honor SSL en
Grapado OCSP (acelera SSL)
- SSLUseStapling activado
- Tiempo de espera de respuesta de grapado SSL 5
- Errores de respuesta de retorno de grapado SSL desactivados
- Caché de grapado SSL shmcb:/run/ocsp(128000)
HSTS (puede realizar una precarga para que las solicitudes http:// se conviertan en solicitudes https:// en el navegador)
- El encabezado siempre establece Strict-Transport-Security «max-age=63072000; includeSubdomains; preload»
Considere las siguientes implementaciones más avanzadas :
- HTTP/2 con HPACK
- Compresión de brotli
Otros problemas no relacionados con SSL que pueden ayudar a acelerar la conexión
Otra directiva para Apache en httpd.conf
- Búsquedas de nombres de host desactivadas
Ajustes de rendimiento de HAProxy SSL
https://www.suse.com/c/speeding-ssl-need-know-haproxy
Optimizaciones adicionales del rendimiento de SSL
- Elija el conjunto de cifrado adecuado
- Habilitar la reanudación de sesión
- Ajustar los parámetros TCP
Hilo de superusuario
https://superuser.com/questions/1066477/how-to-speed-up-ssl-connection-establecimiento
Optimización de la velocidad de conexión SSL de Nginx
Artículo del blog oficial de Nginx
https://www.nginx.com/blog/improve-seo-https-nginx/
Optimización de TTFB/latencia de SSL de Nginx
https://linuxblog.io/nginx-tuning-tips-tls-ssl-https-ttfb-latency/
Hilo de desbordamiento de pila
https://stackoverflow.com/questions/36672261/how-to-reduce-ssl-time-of-website
- El almacenamiento en caché SSL debe estar activado
- HTTP Keep-Alive debe estar activado para que la conexión no se interrumpa después de cada solicitud HTTP
- Utilice la versión más reciente de TLS
- El grapado de OCSP ahorra el viaje a la red para verificar que el certificado sea válido, mediante OCSP o CRL
- Cadena de certificados. Necesitará una cadena de certificados corta (idealmente, de 3 certificados): su servidor, el intermediario y el certificado raíz de la CA.
- Cifrados utilizados. Hay cifrados antiguos y más lentos, y otros más rápidos y nuevos. Esto puede complicarse rápidamente, pero generalmente debería buscar cifrados ECDHE para la mayoría de los clientes (y preferiblemente ECDHE…GCM) y especificar que se use el orden del servidor para poder elegir el cifrado utilizado en lugar del cliente.
Reducir el tiempo de protocolo de enlace TLS
Artículo de Raaz Kumar
https://raazkumar.com/tutorials/nginx/improve-ssl-rendimiento
Tutorial de optimización de sobrecarga de SSL de Baeldung
https://www.baeldung.com/cs/ssl-overhead-causes-countermeasures
Precarga de SSL HSTS
PRECAUCIÓN: Si su sitio no tiene un certificado SSL válido después de agregarlo a la lista de precarga, DEBE tener un certificado SSL válido para seguir siendo accesible. Un sitio será inaccesible si no tiene un certificado SSL válido.
Requisitos de presentación
Si un sitio envía la directiva de precarga en un encabezado HSTS, se considera que solicita inclusión en la lista de precarga y puede enviarse a través del formulario de este sitio.
Para ser aceptado en la lista de precarga de HSTS a través de este formulario, su sitio debe cumplir el siguiente conjunto de requisitos:
- Entregar un certificado válido.
- Redirigir de HTTP a HTTPS en el mismo host, si está escuchando en el puerto 80.
- Servir todos los subdominios a través de HTTPS.
- En particular, debe admitir HTTPS para el subdominio www si existe un registro DNS para ese subdominio.
- Nota: La precarga de HSTS se aplica a todos los subdominios, incluidos los subdominios internos que no son accesibles públicamente.
- Sirva un encabezado HSTS en el dominio base para solicitudes HTTPS:
- La edad máxima debe ser al menos 31536000 segundos (1 año).
- Se debe especificar la directiva includeSubDomains.
- Se debe especificar la directiva de precarga.
- Si está ofreciendo una redirección adicional desde su sitio HTTPS, esa redirección aún debe tener el encabezado HSTS (en lugar de la página a la que redirige).
Configuración de PHP (gratuita)
Si PHP 8 no presenta incompatibilidades con los plugins que usa, debería usar la versión 8-8.3. Use siempre la versión más actualizada de PHP. Utilice también la versión más reciente de MariaDB o MySQL.
El tiempo de ejecución de PHP debe aumentarse a 300 segundos, el tiempo de entrada a 300 segundos, las variables de entrada a 20 000 y el límite de memoria debe establecerse entre 256 MB y 768 MB de RAM. No se recomienda asignar toda la RAM asignada a su VPS, ya que esto podría causar problemas de rendimiento o el bloqueo del servidor.
Habilitar la compresión de salida Zlib en PHP.ini
Caché de operaciones de PHP
Aumente la memoria caché de OP a al menos 512 MB, preferiblemente a 1024 o 2048 si su servidor tiene más RAM. El límite máximo de archivos acelerados debe aumentarse tanto como lo permitan los recursos de su servidor (el límite es de 100 000).
Mover los datos de la sesión PHP a /dev/shm para mejorar el rendimiento
¡Comprime tu sitio de WordPress moviendo los datos de sesión de PHP a /dev/shm! Esto te proporcionará velocidades de carga más rápidas y una excelente experiencia de usuario. Aquí te explicamos cómo:
- Busque el archivo php.ini en el directorio /etc.
- Edite el archivo con un editor de texto.
- Busque la línea que comienza con «session.save_path».
- Reemplace el valor actual con «/dev/shm».
Mejora del rendimiento: Al mover los datos de sesión de PHP a /dev/shm, se almacenan en RAM. Esto puede acelerar significativamente las operaciones de lectura y escritura de datos de sesión, lo cual puede ser beneficioso para sitios de WordPress con mucho tráfico y uso intensivo de sesiones.
Consideraciones y compensaciones:
Uso de RAM
Dado que /dev/shm usa RAM, es importante asegurarse de que el servidor tenga suficiente memoria. Almacenar datos de sesión en RAM consumirá más memoria, lo que podría ser un problema si el servidor ya tiene limitaciones de memoria.
Persistencia
Los datos almacenados en /dev/shm son temporales y se perderán al reiniciar. Esto suele ser adecuado para los datos de sesión, que son temporales por naturaleza, pero es algo que hay que tener en cuenta.
Escalabilidad
Si su sitio de WordPress se gestiona desde varios servidores en un entorno con equilibrio de carga, este enfoque puede no ser adecuado a menos que tenga una forma de compartir datos de sesión entre servidores.
Seguridad
Asegúrese de que su partición /dev/shm esté protegida adecuadamente, ya que almacenar datos de sesión en un espacio de memoria compartida puede tener implicaciones de seguridad.
Extender la vida útil de PHP aumentando la configuración de “Tiempo máximo de inactividad”
Localice el archivo de configuración de PHP (php.ini). Edítelo y modifique el parámetro «maxIdleTime». Aumente su valor para que PHP tenga un tiempo de inactividad mayor. Tras actualizar el valor de «maxIdleTime», guarde los cambios y aplíquelos al servidor.
Rendimiento de la prueba
Monitorea el rendimiento del sitio web tras extender la vida útil de PHP. Comprueba si los tiempos de respuesta y el rendimiento del sitio son mejores.
Mejore el rendimiento del frontend con solo una línea de PHP
https://www.spacedmonkey.com/2023/06/29/improve-front-end-dance-with-just-one-line-of-php
Caché de StashPHP
WP Stash (Gratis)
https://github.com/inpsyde/WP-Stash
https://inpsyde.com/en/wordpress-caching-system-wpstash
Administrador de OPCache (gratis)
Estadísticas y gestión de OPcache directamente en el panel de administración de WordPress.
Cree múltiples procesos PHP asincrónicos para acelerar el tiempo de procesamiento
Artículo de Torque Mag
Optimizaciones de rendimiento de MySQL (gratis)
Reducir los datos cargados automáticamente
La mayoría de los complementos configuran muchas de las opciones de su base de datos para que se carguen automáticamente en todo momento, lo que perjudica su rendimiento y, además, consume más recursos del servidor. Reducir al máximo los datos cargados automáticamente sin afectar la funcionalidad mejorará el rendimiento de su base de datos.
Pruebe a deshabilitar cualquier opción de base de datos en un servidor de pruebas, ya que esto podría afectar su sitio durante la optimización y las pruebas. Siempre pruebe en un servidor de pruebas al modificar las opciones de carga automática de la base de datos.
Limpiador de bases de datos avanzado (gratuito y profesional)
Muchos plugins de optimización de bases de datos pueden modificar las opciones de carga automática. Yo uso el plugin Advanced Database Cleaner, pero hay muchas opciones disponibles.
Limpiador de bases de datos (gratis)
Otra opción gratuita para administrar el estado de carga automática de las opciones de la base de datos.
Ajuste automático de la base de datos
Sintonizador de MySQL (gratuito)
https://github.com/major/MySQLTuner-perl
MySQLTuner es un script escrito en Perl que permite revisar y evaluar rápidamente una instalación de MySQL y realizar ajustes para mejorar el rendimiento y la estabilidad. Las variables de configuración actuales y los datos de estado se recuperan y presentan de forma breve, junto con algunas sugerencias básicas de rendimiento.
Releem (Pagado)
Releem es un servicio de optimización MySQL de pago que ajusta dinámicamente la configuración de MySQL para que coincida con los recursos del servidor y establece los valores correspondientes. Mide activamente la carga de la base de datos y ajusta la configuración en consecuencia. MySQL Tuner no monitoriza ni ajusta dinámicamente la configuración en función de la carga de la base de datos, como sí lo hace Releem.
Habilitar la caché de consultas MySQL
https://mariadb.com/kb/en/query-cache
https://www.freecodecamp.org/news/the-ultimate-guide-to-high-performance-wordpress
(Ctrl+f para caché de consultas en la página de código gratuito)
Establecer límites de tamaño de tabla en memoria
Establecer límites de tamaño de tabla en memoria: Las consultas complejas harán que el servidor SQL cree tablas temporales. El servidor SQL intentará crear tablas en memoria hasta un tamaño determinado para mejorar el rendimiento. Es importante establecer el tamaño máximo en un valor adecuado para evitar la creación de tablas temporales en disco.
Las variables que controlan este comportamiento son tmp_table_size y max_heap_table_size. Puede comparar el número de tablas temporales internas en disco creadas con el número total de tablas temporales internas creadas comparando los valores de Created_tmp_disk_tables y Created_tmp_tables.
Establecer el tamaño del grupo de búfer
https://www.freecodecamp.org/news/the-ultimate-guide-to-high-performance-wordpress
El grupo de búferes es el área de memoria que MariaDB utiliza para almacenar en caché datos e índices. Es importante configurar el tamaño del grupo de búferes adecuadamente según la cantidad de memoria disponible y el tamaño de la base de datos. Una buena regla general es establecer el tamaño del grupo de búferes en aproximadamente el 40 % de la memoria disponible, pero tenga en cuenta que este porcentaje suele aplicarse solo en servidores de bases de datos independientes. El tamaño del grupo de búferes se puede controlar mediante la variable innodb_buffer_pool_size. Consulte https://mariadb.com/kb/en/innodb-buffer-pool/ para obtener más información.
Una forma de analizar el rendimiento del pool de búferes es observar la variable de estado innodb_buffer_pool_wait_free. Si aumenta, significa que no hay suficiente pool de búferes (o que el vaciado no se realiza con la frecuencia suficiente). En este caso, debería establecer la variable innodb_buffer_pool_size en un valor mayor si los recursos de su sistema lo permiten.
Consulte estos enlaces para obtener más información:
https://mariadb.com/kb/en/server-system-variables/#tmp_table_size
https://mariadb.com/kb/en/server-system-variables/#max_heap_table_size
Optimización manual y recursos de aprendizaje
https://www.percona.com/blog/mysql-101-parameters-to-tune-for-mysql-performance
https://dev.mysql.com/doc/refman/8.0/en/optimization.html
https://www.turing.com/kb/best-practices-for-mysql-rendimiento-tuning
https://www.infoworld.com/article/3675552/10-more-essential-mysql-performance-tuning-tips.html
https://tecadmin.net/mysql-rendimiento-tuning-tips
https://dev.mysql.com/doc/mysql-perfschema-excerpt/8.0/en/rendimiento-schema.html
https://phoenixnap.com/kb/improve-mysql-rendimiento-tuning-optimización
https://medium.com/releem/optimizing-mysql-for-peak-performance-a-comprehensive-guide-881ba1ad3ee1
Construyendo el mejor ÍNDICE para un SELECT determinado
https://mysql.rjweb.org/doc.php/index_cookbook_mysql
Tienes una función SELECT y quieres crear el mejor ÍNDICE para ella. Este blog es un «receta» que te explica cómo hacerlo.
Cómo solucionar consultas MySQL lentas
https://www.kevinleary.net/blog/fixing-slow-queries-wordpress-database
Tablas de particionamiento
La partición de tablas divide tablas grandes en partes más pequeñas y manejables, lo que facilita la consulta y la gestión de datos. Esto puede mejorar el rendimiento de las consultas al reducir la cantidad de datos analizados durante ellas.
Partición por rango/lista/hash/clave
Puede particionar tablas por rango, lista, hash o clave, según sus datos y patrones de consulta. Por ejemplo, particionar por rango de fechas puede ser útil para tablas que almacenan datos históricos.
Índices en particiones
Asegúrese de que cada partición esté indexada correctamente para maximizar las ganancias de rendimiento.
La partición puede reducir significativamente los tiempos de consulta para tablas grandes al limitar la cantidad de datos que deben escanearse.
Tablas temporales y tablas de memoria
Las tablas temporales y de memoria se pueden usar para cálculos intermedios o para almacenar datos transitorios que no requieren persistencia en disco. Las tablas de memoria, en particular, se almacenan en la RAM y son muy rápidas.
Motor de memoria
Utilice el motor de almacenamiento MEMORIA para tablas que almacenan pequeñas cantidades de datos de acceso frecuente. Estas tablas residen en memoria, lo que permite un acceso muy rápido.
Tablas temporales
Utilice tablas temporales para consultas complejas que requieren varios pasos. Las tablas temporales se crean sobre la marcha y se eliminan al finalizar la sesión, lo que reduce la necesidad de consultar repetidamente los mismos datos.
Estas técnicas pueden descargar operaciones complejas de sus tablas principales y acelerar el procesamiento de consultas.
Leer réplicas
Configure réplicas de lectura de MySQL para manejar consultas de solo lectura, lo que puede reducir la carga en su servidor de base de datos principal.
Documentación oficial de MySQL
https://dev.mysql.com/doc/refman/8.4/en/replication-solutions-rendimiento.html
Explicación de la replicación
https://dev.mysql.com/doc/refman/8.4/en/replication.html
Artículo de PlanetScale
https://planetscale.com/blog/what-is-mysql-replication-and-when-should-you-use-it
Artículo mediano
Artículo sólido con ejemplos de configuración.
Investigación adicional
Los chatbots de IA pueden transmitir una gran cantidad de información sobre el tema de las réplicas de lectura y también ayudar con la implementación.
Procesamiento asincrónico para operaciones de lectura
Artículo mediano
Tarantool (Gratis)
https://www.tarantool.io/en/doc/latest/platform/ddl_dml/sql/improving_mysql
Tarantool es una forma interesante de mejorar el rendimiento de MySQL y también ayuda con el rendimiento de escalamiento de la base de datos.
Conector MySQL para Tarantool
https://github.com/tarantool/mysql
Fragmentación de bases de datos
Divida sus datos en varias bases de datos (fragmentos) según una clave de fragmento. Esto puede reducir el tamaño de cada base de datos, agilizando las consultas y reduciendo la carga en cualquier servidor.
Estos enfoques permiten el escalamiento horizontal, lo cual es esencial para gestionar grandes cantidades de tráfico y datos.
Artículo de PlanetScale
https://planetscale.com/blog/how-to-scale-your-database-and-when-to-shard-mysql
Vitess (Gratis)
https://github.com/vitessio/vitess
Vitess es un sistema de agrupamiento de bases de datos para el escalamiento horizontal de MySQL a través de fragmentación generalizada.
Al encapsular la lógica de enrutamiento de fragmentos, Vitess permite que el código de la aplicación y las consultas a la base de datos sean independientes de la distribución de datos en múltiples fragmentos. Con Vitess, incluso puede dividir y fusionar fragmentos a medida que aumentan sus necesidades, con una transición rápida que solo toma unos segundos.
Hoja de referencia de rendimiento de MySQL
División de instancias del grupo de búfer de InnoDB
Artículo de Percona
https://www.percona.com/blog/how-many-innodb_buffer_pool_instances-do-you-need-in-mysql-8
Si tiene una carga de trabajo alta y un sistema multinúcleo, considere dividir el pool de búfer de InnoDB en varias instancias. Esto puede ayudar a reducir la contención de las estructuras de memoria dentro de InnoDB. Para ello, ajuste el parámetro innodb_buffer_pool_instances según los núcleos y la carga de trabajo de su sistema.
Ajuste del tamaño del archivo de registro de InnoDB
Releem Artículo
https://releem.com/docs/mysql-performance-tuning/innodb_log_file_size
El tamaño de los archivos de registro de InnoDB (innodb_log_file_size) tiene un impacto significativo en el rendimiento. Un tamaño mayor de los archivos de registro puede reducir la E/S del disco en cargas de trabajo con escritura intensiva, pero podría aumentar el tiempo de recuperación tras un fallo. Equilibrar el tamaño de los archivos de registro según la naturaleza de la carga de trabajo puede mejorar el rendimiento.
Utilización del grupo de subprocesos
Para servidores que gestionan muchas conexiones y consultas, usar un grupo de subprocesos puede mejorar el rendimiento. En lugar de un subproceso por conexión, MySQL puede gestionar un grupo de subprocesos y gestionar numerosas conexiones de forma eficiente.
Optimizar los búferes de unión
Releem Artículo
https://releem.com/docs/mysql-performance-tuning/join_buffer_size
Cuando MySQL realiza uniones, utiliza un búfer de unión. El tamaño de este búfer (join_buffer_size) determina la cantidad de datos que MySQL puede procesar simultáneamente durante una operación de unión. Aumentar el tamaño del búfer de unión puede mejorar el rendimiento de las uniones no indexadas.
Manual de referencia de MySQL
https://dev.mysql.com/doc/refman/8.0/en/buffering-caching.html
Tamaño y uso de la caché de consultas
Manual de referencia de caché de consultas MySQL
https://dev.mysql.com/doc/refman/5.7/en/query-cache.html
En las versiones de MySQL donde aún se admite la caché de consultas, dimensionarla correctamente (query_cache_size) y configurarla puede mejorar el rendimiento en cargas de trabajo con gran volumen de lectura. Sin embargo, tenga en cuenta que la caché de consultas está obsoleta en versiones posteriores de MySQL y se eliminó en MySQL 8.0.
Ajuste fino de los buffers de ordenación y lectura
Artículo sobre el tamaño del búfer de ordenación de Releem
https://releem.com/docs/mysql-performance-tuning/sort_buffer_size
MySQL utiliza búferes de ordenación (sort_buffer_size) y de lectura (read_buffer_size) durante diversas operaciones. Ajustar estos búferes puede mejorar el rendimiento, especialmente en operaciones complejas de ordenación y lectura.
Compresión MySQL
Artículo del manual de referencia de MySQL
https://dev.mysql.com/doc/refman/8.0/en/innodb-page-compression.html
Para tablas con grandes cantidades de texto o datos blob, considere usar las capacidades de compresión de MySQL para reducir el espacio en disco y mejorar la eficiencia de E/S.
Uso de índices de cobertura
Artículo de Toadworld
Los índices de cobertura incluyen todos los campos requeridos por una consulta. Pueden mejorar drásticamente el rendimiento de las consultas, ya que la base de datos puede recuperar todos los datos necesarios del índice sin acceder a los datos de la tabla.
Optimización de subconsultas
Artículo del Manual de referencia de MySQL
https://dev.mysql.com/doc/refman/8.0/en/subquery-optimization.html
Artículo del tutorial de MySQL
En MySQL, las subconsultas a veces pueden ser ineficientes. Reescribir las consultas para evitarlas o transformarlas en uniones puede mejorar el rendimiento.
Particionar tablas grandes
Artículo de Sling Academy
https://www.slingacademy.com/article/table-partitioning-in-mysql-8-a-practical-guide
Para tablas muy grandes, considere usar particionamiento de tablas. Esto divide una tabla en partes y puede mejorar el rendimiento de las consultas, especialmente las basadas en rangos.
Artículo de Data Geek Lab
Optimización de tablas temporales e intercambios de discos
Artículo del Manual de referencia de MySQL
https://dev.mysql.com/doc/refman/8.0/en/optimize-table.html
Vigile el uso de tablas temporales basadas en disco. Si es posible, ajuste su servidor para que la mayoría de las tablas temporales se creen en memoria (tmp_table_size y max_heap_table_size).
Deshabilitar el esquema de rendimiento
Artículo del manual de referencia de MySQL
https://dev.mysql.com/doc/refman/8.0/en/rendimiento-schema-startup-configuration.html
Si no utiliza el esquema de rendimiento de MySQL, considere deshabilitarlo para ahorrar recursos. Esto es especialmente útil para sistemas con recursos limitados.
Confirmación del grupo de registro binario
Artículo del Manual de referencia de MySQL
https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html
Para las configuraciones de replicación, optimizar la configuración de confirmación del grupo de registro binario puede reducir significativamente el retraso de replicación y mejorar el rendimiento general del servidor maestro.
Grupos de recursos para el ajuste de prioridades
Artículo del Manual de referencia de MySQL sobre optimización del grupo de recursos
https://dev.mysql.com/doc/refman/8.0/en/resource-groups.html
Utilice la función Grupos de recursos de MySQL 8.0 para asignar consultas de alta prioridad a procesadores o núcleos de procesador específicos, lo que mejora el rendimiento de las consultas críticas.
Artículo sobre optimización del rendimiento de MySQL en el blog de Linux
Artículo muy extenso con algunas estrategias de optimización únicas.
Análisis de optimización de consultas de bases de datos
Mejore el rendimiento de las consultas de WP al usar la caché de objetos externos
https://www.spacedmonkey.com/2023/01/17/improve-wp_query-performance-if-using-external-object-cache
Redash (Gratis)
https://github.com/getredash/redash
Los usuarios de SQL utilizan Redash para explorar, consultar, visualizar y compartir datos de cualquier fuente. Su trabajo, a su vez, permite que cualquier persona de su organización utilice los datos. Redash admite más de 35 fuentes de datos SQL y NoSQL. También se puede ampliar para admitir más.
- Basado en navegador : todo en su navegador, con una URL para compartir.
- Facilidad de uso : sea inmediatamente productivo con los datos sin la necesidad de dominar un software complejo.
- Editor de consultas : redacte rápidamente consultas SQL y NoSQL con un explorador de esquemas y autocompletado.
- Visualización y paneles : cree hermosas visualizaciones con solo arrastrar y soltar, y combínelas en un solo panel.
- Compartir : colabore fácilmente compartiendo visualizaciones y sus consultas asociadas, lo que permite la revisión por pares de informes y consultas.
- Actualizaciones programadas : actualice automáticamente sus gráficos y paneles a intervalos regulares que usted defina.
- Alertas : define condiciones y recibe alertas instantáneas cuando tus datos cambien.
- API REST : Todo lo que se puede hacer en la interfaz de usuario también está disponible a través de la API REST.
- Amplio soporte para fuentes de datos : API de fuente de datos extensible con soporte nativo para una larga lista de bases de datos y plataformas comunes.
Vientos solares
Analizador de rendimiento de bases de datos (de pago)
https://www.solarwinds.com/database-performance-analyzer
Analizar el rendimiento de SQL Server y de las consultas, identificar problemas y brindar asesoramiento sobre optimización y ajuste.
SQL Sentry (de pago)
https://www.solarwinds.com/sql-sentry
Supervisión del rendimiento de bases de datos de SQL Server y Azure SQL, con análisis rápido de la causa raíz y visibilidad en todo el patrimonio de datos
Observabilidad de bases de datos (de pago)
https://www.solarwinds.com/solutions/solarwinds-observability/database-observability
Visualizar la salud de la base de datos
Explorador de planes (gratis)
https://www.solarwinds.com/free-tools/plan-explorer
Llegue rápidamente a la raíz de los problemas de consultas con una herramienta de análisis de consultas gratuita
Barniz (Gratis)
Mi configuración personalizada de Varnish VCL
https://github.com/jazir555/Varnish-VCL-Config
Complete los marcadores de posición con la información de su sitio y actualice su archivo de configuración Varnish Default.vcl actual.
Ejemplos de configuración
https://gist.github.com/fevangelou/84d2ce05896cab5f730a
Impresionante barniz
https://github.com/huayra/awesome-varnish
Aumente su tasa de aciertos en caché de barniz
https://varnish-cache.org/docs/trunk/users-guide/increasing-your-hitrate.html
Artículo mediano
Almacenamiento en caché fragmentado
Resolución dinámica de backend
Solicitudes Ajax en caché
Reunión de barniz
https://github.com/varnish/varnishgather
Varnish Gather es un script simple diseñado para recopilar la mayor cantidad de información relevante posible en una configuración de Varnish Cache.
Módulos de barniz adicionales
https://github.com/varnish/varnish-modules
Esta es una colección de módulos («vmods») que extienden Varnish VCL y se utilizan para describir políticas de solicitud/respuesta HTTP con capacidades adicionales.
Compresión de texto Gzip, Brotli y Zstandard (gratuita)
La compresión Gzip, Brotli y Zstandard son métodos de compresión de texto que funcionan a nivel de servidor web . Esto significa que necesita compatibilidad con la compresión Gzip/Brotli/Zstandard habilitada a través de NGINX, Apache o LiteSpeed y configurarlas correctamente para que muestren contenido comprimido.
Artículo sobre interruptores rojos
https://www.redswitches.com/blog/brotli-vs-gzip
Fantástico artículo en profundidad que explica los métodos de compresión Brotli y Gzip.
Artículos de WP Rocket
Niveles de compresión de Gzip, Brotli y Zstandard
Los artículos anteriores ofrecen una buena explicación de los niveles de compresión, sus beneficios, los posibles inconvenientes de aumentarlos, etc. Sin embargo, la explicación rápida es que niveles de compresión más altos producen archivos más pequeños, pero aumentan el tiempo de procesamiento del servidor. Aumentar los niveles de compresión tiene rendimientos decrecientes, y se necesita un servidor potente para usar el nivel máximo de compresión para Brotli y Gzip.
El nivel de compresión predeterminado para Brotli y Gzip debería ser 6. Los niveles más altos son mejores hasta cierto punto. Un nivel muy alto de compresión de gzip y brotli puede perjudicar el rendimiento y afectar la velocidad de la página, por lo que se recomienda realizar pruebas de velocidad después de ajustar estas opciones de configuración para medir su impacto en el rendimiento y determinar si se necesitan ajustes adicionales.
Recomiendo aumentar el nivel poco a poco hasta llegar al punto en el que vea una pérdida de rendimiento en lugar de un beneficio en las pruebas.
Cómo habilitar Brotli o Gzip para Apache
WP Rocket tiene una sección en este artículo sobre cómo implementar la compresión Gzip/Brotli a través de .htaccess solo para Apache
Cómo habilitar Brotli con respaldo Gzip en NGINX
Compresión Zstandard
Artículo sobre compresión Gzip, Brotli y Zstandard
Si bien la compresión Zstandard es el mejor y más rápido algoritmo de compresión de los tres, actualmente solo es compatible con Chrome a partir de mayo de 2024. Firefox y otros navegadores pronto agregarán soporte para la compresión Zstandard; actualmente, el soporte para la compresión Zstandard se encuentra en prueba beta para Firefox.
Sin embargo, debido a lo nuevo que es Zstandard, cuando se implementa, siempre se debe tener una alternativa configurada para servir contenido comprimido con Gzip/Brotli a navegadores que no admiten la compresión Zstandard (cualquier dispositivo con un navegador más antiguo, es decir, la mayoría de los navegadores en los dispositivos del usuario).
Módulo experimental NGINX Zstandard
https://github.com/tokers/zstd-nginx-module
Equilibrio de carga
Haproxy (Gratis)
Almacenamiento en caché de HAProxy
Artículo de LoadForge
https://loadforge.com/guides/advanced-haproxy-caching-strategies
Excelente artículo sobre cómo configurar el almacenamiento en caché de HAProxy, así como estrategias avanzadas de configuración de almacenamiento en caché.
Artículo oficial de HAProxy
https://www.haproxy.com/blog/acelerar-tus-apis-by-using-the-haproxy-cache
Artículo sobre el almacenamiento en caché de HAProxy directamente del blog de HAProxy.
Recursos
https://www.cloudbees.com/blog/rendimiento-tuning-haproxy
https://delta.blue/blog/haproxy-timeouts
https://www.papertrail.com/solution/tips/haproxy-logging-how-to-tune-timeouts-for-performance
https://www.suse.com/c/speeding-ssl-need-know-haproxy
Recomendaciones de configuración/Qué evitar
Roxy WI
Interfaz gráfica de usuario (GUI) para la configuración automática de HAProxy y otras infraestructuras de servidores. Disponible en versiones gratuita y de pago.
Configuraciones de HAProxy predefinidas
https://github.com/HariSekhon/HAProxy-configs
MPTCP
(Más información próximamente)
Artículo de Red Hat
https://www.redhat.com/en/blog/understanding-multipath-tcp-networking-highway-future
Pila de alojamiento de AWS
Artículo de Ars Technica
https://arstechnica.com/information-technology/2023/07/ars-on-aws-01
Balanceo de carga elástico (de pago)
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html
Elastic Load Balancing distribuye automáticamente el tráfico entrante entre múltiples destinos, como instancias EC2, contenedores y direcciones IP, en una o más zonas de disponibilidad. Supervisa el estado de los destinos registrados y dirige el tráfico únicamente a los destinos en buen estado. Elastic Load Balancing escala el balanceador de carga a medida que el tráfico entrante cambia con el tiempo. Puede escalar automáticamente a la gran mayoría de las cargas de trabajo.
Elastic Load Balancing es compatible con los siguientes balanceadores de carga: de aplicaciones, de red, de puerta de enlace y clásicos. Puede seleccionar el tipo de balanceador que mejor se adapte a sus necesidades.
AWS Fargate (de pago)
https://aws.amazon.com/fargate
AWS Fargate es un motor de cómputo sin servidor y de pago por uso que le permite concentrarse en crear aplicaciones sin administrar servidores.
AWS Lambda (de pago)
AWS Lambda es un servicio computacional que ejecuta su código en respuesta a eventos y administra automáticamente los recursos computacionales (escalamiento automático), lo que lo convierte en la forma más rápida de convertir una idea en una aplicación moderna, de producción y sin servidor.
Amazon Aurora (Pago)
https://aws.amazon.com/rds/aurora
Amazon Aurora ofrece un alto rendimiento y una disponibilidad sin precedentes a escala global, con compatibilidad total con MySQL y PostgreSQL, a una décima parte del costo de las bases de datos comerciales. Aurora tiene un rendimiento 5 veces superior al de MySQL y 3 veces superior al de PostgreSQL.
Sistema de archivos elásticos de Amazon (de pago)
Almacenamiento de archivos totalmente elástico y sin servidor. Amazon Elastic File System (Amazon EFS) crece y se reduce automáticamente a medida que se añaden y eliminan archivos, sin necesidad de administración ni aprovisionamiento.
Servicio de contenedores elásticos de Amazon (de pago)
Amazon Elastic Container Service (ECS) es un servicio de orquestación de contenedores completamente administrado que lo ayuda a implementar, administrar y escalar aplicaciones en contenedores de manera más eficiente.
Amazon OpenSearch (de pago)
https://aws.amazon.com/opensearch-service
Amazon OpenSearch Service facilita el análisis interactivo de registros, la monitorización de aplicaciones en tiempo real, la búsqueda en sitios web y mucho más. OpenSearch es una suite de búsqueda y análisis distribuida de código abierto derivada de Elasticsearch. Amazon OpenSearch Service ofrece las últimas versiones de OpenSearch, compatibilidad con 19 versiones de Elasticsearch (de la 1.5 a la 7.10), así como funciones de visualización basadas en OpenSearch Dashboards y Kibana (de la 1.5 a la 7.10).
Amazon ElastiCache (de pago)
https://aws.amazon.com/elasticache
Amazon ElastiCache es un servicio totalmente administrado, compatible con Redis y Memcached, que ofrece un rendimiento en tiempo real y rentable, y una alta disponibilidad de hasta el 99,99 % para aplicaciones modernas. ElastiCache es ideal para casos de uso de alto rendimiento, como almacenamiento en caché de datos, aplicaciones web, móviles, sanitarias y financieras, juegos, tecnología publicitaria, IoT, streaming multimedia, almacenes de sesiones, tablas de clasificación, aprendizaje automático (ML) y aplicaciones basadas en microservicios.
ElastiCache acelera el rendimiento de bases de datos y aplicaciones, escalando a cientos de millones de operaciones por segundo con tiempos de respuesta de microsegundos. Entre sus ventajas se incluyen mayor seguridad, fiabilidad, escalabilidad y rendimiento en comparación con alternativas de código abierto. También permite ahorrar costes en cargas de trabajo con uso intensivo de memoria y ofrece funciones de optimización de costes, como la organización de datos en niveles para cargas de trabajo con uso intensivo de memoria.
Con Amazon ElastiCache Serverless, puede crear una caché de alta disponibilidad en menos de un minuto, sin necesidad de aprovisionar ni configurar la infraestructura. Puede crear una caché de ElastiCache Serverless en pocos pasos especificando un nombre de caché en la Consola de administración de AWS, el Kit de desarrollo de software (SDK) de AWS o la Interfaz de línea de comandos (CLI) de AWS.
Optimizaciones de VPS (gratis)
Optimización de Linux
Deshabilitar THP
ADM sintonizado
https://manpages.ubuntu.com/manpages/jammy/man7/tuned-profiles.7.html
Cambiar el nivel de inicialización a 3
Establezca el nivel de inicialización en 3 si el valor predeterminado es 5. Use el comando «init 3» para establecer el nivel de inicialización en 3 y luego reinicie para que los cambios surtan efecto. Puede hacer clic en el enlace a continuación para obtener instrucciones sobre cómo hacerlo.
https://www.cyberciti.biz/howto/question/linux/changing-run-levels-3-5.php
Más información sobre esto aquí
Este enlace explica cómo hacer lo contrario, cambiando de 5 a 3 si el comando «init 3» no funciona. Si su nivel de ejecución está configurado en 5, cámbielo a 3.
Optimización de Github para Linux
https://github.com/sn99/Optimizing-linux
Excelente repositorio sobre cómo optimizar el rendimiento de Linux.
Stacer
https://www.site24x7.com/learn/linux/linux-rendimiento-optimización.html
Stacer es una herramienta para optimizar Linux que elimina la caché no deseada y ordena los procesos analizando el uso de memoria y CPU. Stacer revela el rendimiento de los servicios y procesos, y qué usuario los ejecuta.
Herramientas y técnicas de optimización del rendimiento
https://linuxconfig.org/linux-rendimiento-optimización-herramientas-y-tecnicas
Habilitar Z-Swap
https://blog.jacobstoner.com/zswap-improve-memory-performance-on-linux
sudo perl -pi -e ‘s/^(GRUB_CMDLINE_LINUX_DEFAULT.*)»$/$1 zswap.enabled=1
zswap.compressor=lz4 zswap.zpool=z3fold zswap.max_pool_percent=25″/’ /etc/default/grub
sudo update-grub
sudo echo -e ‘lz4\nlz4_compress\nz3fold’ >> /etc/initramfs-tools/modules
sudo update-initramfs -u
sudo reboot
Ajuste el sistema de archivos de Linux para un mayor rendimiento
Artículo de Foss Linux
https://www.fosslinux.com/111937/consejos-y-trucos-para-optimizar-linux-device-rendimiento.htm
Nivel semisuperficial, pero con información ligeramente diferente a la del artículo de linux.com. Es mejor utilizar ambas técnicas enumeradas juntas.
Utilice un kernel personalizado
https://www.fosslinux.com/111937/consejos-y-trucos-para-optimizar-linux-device-rendimiento.htm
Deshabilitar servicios innecesarios de Linux
Para enumerar todos los servicios, puede utilizar este comando:
systemctl lista-unidad-archivos –tipo=servicio
Luego, para deshabilitar un servicio, utilice:
sudo systemctl deshabilitar NOMBRE_DE_SERVICIO
Marcos gigantes
Habilitación de tramas gigantes:
- Compruebe si su adaptador de red admite tramas gigantes: ethtool eth0
- Habilite las tramas gigantes configurando una MTU (unidad máxima de transmisión) más grande, normalmente 9000 bytes para Ethernet: ifconfig eth0 mtu 9000 o ip link set dev eth0 mtu 9000
- Verifique los cambios: ifconfig eth0 o ip addr show eth0
- Recuerde configurar Jumbo Frames en todos los dispositivos de su red para evitar la fragmentación de paquetes.
Las tramas jumbo pueden ayudar a reducir la carga de la CPU al disminuir la cantidad de paquetes procesados, pero es fundamental garantizar que todos los equipos de red las admitan para evitar posibles problemas de red. Contacte con su proveedor de alojamiento para asegurarse de que esta función esté disponible.
TCP BBR
Aumente la velocidad de Internet en Linux con el control de congestión TCP BBR
https://github.com/systemd/systemd/issues/9725#issuecomment-413369212
https://djangocas.dev/blog/huge-improve-network-performance-by-change-tcp-congestion-control-to-bbr
Parámetros de rendimiento de la red Linux
https://github.com/leandromoreira/linux-network-rendimiento-parametros
Guía de ajuste de VPS de WordPress de Intel para sistemas Xeon
Sugerencias de optimización de Linux para Steam Deck
Estas son optimizaciones de Linux para Steam Deck, pero también son aplicables a la optimización de VPS Linux. A continuación, se muestra el artículo de Medium del que extraje estos comandos, así como comandos de reversión para cada una de estas funciones de optimización, en caso de que desee revertirlas por cualquier motivo.
Pegue todos estos comandos como un solo bloque de código, no líneas individuales. Los comandos de reversión no deben ejecutarse junto con los comandos para habilitar estas funciones, solo si desea deshabilitarlas y volver a la configuración original.
Artículo mediano
Cambiar al regulador de CPU de “rendimiento” al iniciar
(pegue esto en su terminal como un bloque de código gigante, no ejecute los comandos individualmente)
gato << EOF | sudo tee /etc/systemd/system/cpu_performance.service
[Unidad]
Descripción=Regulador de rendimiento de la CPU
[Servicio]
Tipo=one-shot
ExecStart=/usr/bin/cpupower frecuencia-set -g rendimiento
[Instalar]
WantedBy=multi-usuario.objetivo
EOF
sudo systemctl daemon-reload
sudo systemctl enable cpu_performance.service
Para deshacer o revertir este cambio, ejecute:
sudo systemctl deshabilitar cpu_performance.service
MGLRU (Multi-Gen. Menos Usado Recientemente)
Esta es una de las adiciones más recientes al kernel original de Linux, recién incorporada para la versión 6.1 LTS (Soporte a Largo Plazo). Sin embargo, el kernel original aún no habilita esta funcionalidad por defecto.
(pegue esto en su terminal como un bloque de código gigante, no ejecute los comandos individualmente)
Para habilitar esta función, ejecute el comando de terminal:
gato << EOF | sudo tee /etc/tmpfiles.d/mglru.conf
con /sys/kernel/mm/lru_gen/enabled – – – – 7
con /sys/kernel/mm/lru_gen/min_ttl_ms – – – – 0
EOF
Comando de reversión:
sudo rm /etc/tmpfiles.d/mglru.conf
Desbloqueo del bloqueo de memoria
De forma predeterminada, el kernel de Linux establece este valor en tan solo 64 KiB, que es la cantidad máxima de memoria que el kernel bloqueará en una sola operación. Esta es una recomendación antigua.
Este comando establecerá este valor en 2 GB, ajústelo según sea necesario dependiendo de la capacidad de RAM de su servidor:
(pegue esto en su terminal como un bloque de código gigante, no ejecute los comandos individualmente)
gato << EOF | sudo tee /etc/security/limits.d/memlock.conf
* bloqueo de memoria duro 2147484
* bloqueo de memoria suave 2147484
EOF
Este sitio le ayudará a convertir los valores para que pueda reemplazar el valor anterior “2147484” con un valor apropiado para la memoria de su VPS.
http://www.csgnetwork.com/memconv.html
Para revertir el cambio, ejecute:
sudo rm /etc/security/limits.d/memlock.conf
Cambiar el programador de E/S (entrada/salida)
Vamos a cambiar permanentemente el programador de E/S a Kyber con el siguiente bloque (tenga en cuenta que esto funcionará con todos los casos, es decir, SSD NVMe, eMMC y microSD):
(pegue esto en su terminal como un bloque de código gigante, no ejecute los comandos individualmente)
gato << EOF | sudo tee /etc/udev/rules.d/64-ioschedulers.rules
ACCIÓN==»agregar|cambiar», KERNEL==»nvme[0-9]*», ATTR{cola/programador}=»kyber»
ACCIÓN==»añadir|cambiar», NÚCLEO==»sd[az]|mmcblk[0-9]*», ATTR{cola/rotacional}==»0″, ATTR{cola/programador}=»kyber»
EOF
Para deshacer/revertir este cambio:
sudo rm /etc/udev/rules.d/64-ioschedulers.rules
Optimización de la pila de red TCP
TCP Keepalive
Ajusta el tiempo que TCP debe esperar antes de enviar mensajes de mantenimiento de conexión para confirmar que una conexión inactiva sigue activa. Esto puede ayudar a gestionar las sobrecargas de conexión.
(Ajuste los valores del comando según sea necesario)
sysctl -w net.ipv4.tcp_keepalive_time=600
sysctl -w net.ipv4.tcp_keepalive_probes=5
sysctl -w net.ipv4.tcp_keepalive_intvl=60
Escalado de ventana TCP
Permite ajustes del tamaño de la ventana TCP, permitiendo buffers más grandes, lo que puede mejorar el rendimiento de datos para las conexiones.
(Ajuste el valor del comando según sea necesario)
sysctl -w net.ipv4.tcp_window_scaling=1
TCP SACK
La función de reconocimiento selectivo (SACK) permite que los dispositivos informen a los remitentes sobre paquetes perdidos, lo que facilita retransmisiones más eficientes.
(Ajuste el valor del comando según sea necesario)
sysctl -w net.ipv4.tcp_sack=1
Tiempo de espera de TCP FIN
Ajusta el tiempo de espera para cerrar una conexión, liberando recursos antes.
(Ajuste el valor del comando según sea necesario)
sysctl -w net.ipv4.tcp_fin_timeout=30
Aumentar el backlog de sincronización máxima de TCP
Determina la cantidad de conexiones entrantes que se pueden poner en cola para su procesamiento.
(Ajuste el valor del comando según sea necesario)
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
Aumentar el máximo de contenedores Tw de TCP
Controla el número máximo de sockets TCP en estado TIME_WAIT, administrando el uso de la memoria.
(Ajuste el valor del comando según sea necesario)
sysctl -w net.ipv4.tcp_max_tw_buckets=400000
Apertura rápida TCP
Permite enviar datos durante el protocolo de enlace SYN inicial, lo que reduce la latencia de las conexiones.
(Ajuste el valor del comando según sea necesario)
sysctl -w net.ipv4.tcp_fastopen=3
Comandos de reversión
Para revertir la configuración TCP, necesitará conocer los valores predeterminados, que pueden variar según su distribución y versión de Linux. Aquí tiene comandos para establecer valores predeterminados típicos:
sysctl -w net.ipv4.tcp_keepalive_time=7200
sysctl -w net.ipv4.tcp_keepalive_probes=9
sysctl -w net.ipv4.tcp_keepalive_intvl=75
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.ipv4.tcp_sack=1
sysctl -w net.ipv4.tcp_fin_timeout=60
sysctl -w net.ipv4.tcp_max_syn_backlog=128
sysctl -w net.ipv4.tcp_max_tw_buckets=5000
sysctl -w net.ipv4.tcp_fastopen=0
Habilitar E/S asíncrona (AIO)
Habilite AIO para permitir que múltiples operaciones de E/S se ejecuten simultáneamente, lo que mejora el rendimiento de servidores de bases de datos como MySQL
innodb_use_native_aio = 1
Procesamiento de descarga
Habilite las funciones de descarga en su interfaz de red para reducir la carga de la CPU
ethtool -K eth0 gro en
ethtool -K eth0 gso activado
ethtool -K eth0 tso activado
Aumentar los límites de archivos abiertos
Asegúrese de que su sistema pueda manejar una gran cantidad de archivos abiertos
echo «fs.file-max = 500000» >> /etc/sysctl.conf
ulimit -n 500000
Habilitar el almacenamiento en caché de escritura diferida para E/S de disco
Mejore el rendimiento de escritura al habilitar el almacenamiento en caché de escritura diferida
hdparm -W1 /dev/sda
Almacene archivos temporales en la memoria para acelerar las operaciones de lectura/escritura
montaje -t tmpfs -o tamaño=512M tmpfs /tmp
Optimizar el uso de la memoria
Utilice zram para comprimir los datos de RAM para aumentar la cantidad de memoria disponible
apt-get install zram-config
Optimizar la configuración de la memoria virtual
Ajuste la configuración de la memoria virtual para un mejor rendimiento
sysctl -w vm.proporción_de_fondo_sucio=5
sysctl -w vm.dirty_ratio=10
Utilice el aislamiento de la CPU
Aísle los núcleos de CPU para aplicaciones críticas para garantizar que tengan recursos dedicados
isolcpus=1,2
Configurar páginas HugeTLB
Para aplicaciones que requieren páginas de memoria grandes, configure HugeTLB para reducir las fallas de TLB
echo ‘vm.nr_hugepages=128’ >> /etc/sysctl.conf
Optimizar la resolución de DNS
Utilice una caché DNS local
Instalar y configurar un servidor de almacenamiento en caché DNS local como dnsmasq
apt-get install dnsmasq
Ajustar la configuración de eliminación de memoria insuficiente (OOM)
Evite que el asesino OOM finalice procesos críticos ajustando oom_score_adj
echo ‘-1000’ > /proc/$(pidof proceso_crítico)/oom_score_adj
Utilice discos RAM para almacenamiento temporal de alto rendimiento
Monte una parte de su RAM como disco para operaciones de E/S extremadamente rápidas
montaje -t tmpfs -o tamaño=1G tmpfs /mnt/ramdisk
Optimizar la configuración de intercambio
Utilice zswap
Habilite y configure zswap para un mejor rendimiento del intercambio
echo 1 > /sys/module/zswap/parameters/enabled
echo lz4 > /sys/módulo/zswap/parámetros/compresor
echo 20 > /sys/module/zswap/parameters/max_pool_percent
Optimizar los parámetros de arranque
Modificar los parámetros de arranque para mejorar el rendimiento
GRUB_CMDLINE_LINUX_DEFAULT=»pantalla silenciosa noapic noacpi nosplash irqpoll»
Reducir la latencia del kernel
Habilitar la preempción del kernel y configurar ajustes de baja latencia
echo 1 > /sys/kernel/debug/sched_features
Habilitar y configurar HugeTLBfs
Utilice HugeTLBfs para asignar páginas grandes a aplicaciones que pueden beneficiarse de la reducción de errores de TLB
montaje -t hugetlbfs ninguno /dev/hugepages
Configurar la vinculación de red
Combine múltiples interfaces de red para aumentar el ancho de banda y la redundancia
apt-get install ifenslave
echo «enlace» >> /etc/modules
Ajuste preciso de las cookies TCP SYN
Habilite las cookies SYN para protegerse contra ataques de inundación SYN y permitir el tráfico legítimo.
sysctl -w net.ipv4.tcp_syncookies=1
Optimizar la configuración de caché ARP
Ajuste la configuración de caché ARP para gestionar grandes cantidades de direcciones IP de manera eficiente
sysctl -w net.ipv4.neigh.default.gc_thresh1=1024
sysctl -w net.ipv4.neigh.default.gc_thresh2=2048
sysctl -w net.ipv4.neigh.default.gc_thresh3=4096
Habilitar la protección contra suplantación de IP
Configurar ajustes para evitar la suplantación de IP
sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1
Optimizar los parámetros de memoria compartida del kernel
Ajuste la configuración de memoria compartida para mejorar el rendimiento de las aplicaciones que utilizan IPC (comunicación entre procesos)
sysctl -w kernel.shmmax=68719476736
sysctl -w kernel.shmall=4294967296
Ajustar la configuración de sobreasignación de la máquina virtual
Ajuste el comportamiento de sobreasignación de memoria para una mejor gestión de la memoria
sysctl -w vm.overcommit_memory=1
sysctl -w vm.sobrecompromiso_ratio=50
Habilite y configure el almacenamiento en caché de consultas en MySQL/MariaDB para obtener respuestas de consultas más rápidas
tamaño de caché de consultas = 64M
tipo_caché_consulta = ON
Configurar marcas de tiempo TCP
Habilite o deshabilite las marcas de tiempo TCP según su carga de trabajo para mejorar el rendimiento
sysctl -w net.ipv4.tcp_timestamps=1
Ajustar el tamaño del búfer UDP
Aumente el tamaño del búfer UDP para las aplicaciones que utilizan UDP con frecuencia
sysctl -w net.core.rmem_max=26214400
sysctl -w net.core.wmem_max=26214400
Optimizar la configuración de nf_conntrack
Ajustar la configuración de seguimiento de conexión para tráfico de alto volumen
sysctl -w net.netfilter.nf_conntrack_max=131072
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_establecido=1200
Habilitar el almacenamiento en caché de escritura en disco
Habilite el almacenamiento en caché de escritura en los discos para mejorar el rendimiento de escritura
hdparm -W1 /dev/sda
Optimizar Systemd para el rendimiento
Reducir los valores de tiempo de espera predeterminados de systemd para un arranque y apagado más rápidos
Tiempo de espera predeterminadoInicioSec=10s
Tiempo de espera predeterminado StopSec = 10 s
Optimizar la sincronización NTP
Asegúrese de una sincronización horaria precisa con una sobrecarga mínima utilizando chrony en lugar de ntpd
apt-get install chrony
Habilitar y configurar la descarga de la interfaz de red
Habilite las funciones de descarga en las interfaces de red para reducir el uso de la CPU
ethtool -K eth0 gro en
ethtool -K eth0 gso activado
ethtool -K eth0 tso activado
Implementar la fusión de páginas en el núcleo (KSM)
Habilite KSM para fusionar páginas de memoria idénticas entre máquinas virtuales
echo 1 > /sys/kernel/mm/ksm/run
Utilice temporizadores de alta resolución
Habilite temporizadores de alta resolución para aplicaciones que requieren una sincronización precisa
echo «alta resolución=activada» >> /etc/default/grub
actualización-grub
Optimizar los parámetros de sysctl para el rendimiento de la red
Ajuste varios parámetros de sysctl para mejorar el rendimiento de la red y reducir la latencia
sysctl -w net.ipv4.tcp_rfc1337=1
sysctl -w net.ipv4.tcp_mtu_probing=1
sysctl -w net.ipv4.tcp_base_mss=536
Implementar cuotas de disco para la gestión de usuarios
Habilite y configure cuotas de disco para administrar el uso del disco del usuario de manera eficiente
apt-get install cuota
Utilice las herramientas de administración de caché de páginas
Utilice herramientas como vmtouch para administrar y bloquear archivos a los que se accede con frecuencia en la memoria
apt-get install vmtouch
vmtouch -dl /ruta/a/archivos/importantes
Optimizar el comportamiento de intercambio
Configure vm.dirty_expire_centisecs y vm.dirty_writeback_centisecs para un mejor rendimiento del intercambio
sysctl -w vm.dirty_expire_centisecs=2000
sysctl -w vm.dirty_writeback_centisecs=1000
Implementar RAID de software para mejorar el rendimiento del disco
Utilice RAID de software para mejorar el rendimiento y la redundancia del disco
mdadm –create –verbose /dev/md0 –level=1 –raid-devices=2 /dev/sda1 /dev/sdb1
Optimizar la frecuencia del temporizador del kernel
Ajuste la frecuencia del temporizador del kernel para reducir la sobrecarga
echo 1000 > /proc/sys/kernel/frecuencia_del_temporizador
Habilitar IPv6
Habilite y optimice IPv6 para un mejor rendimiento de la red y protección para el futuro
sysctl -w net.ipv6.conf.all.disable_ipv6=0
Utilice xfs_fsr para la desfragmentación del sistema de archivos XFS
Desfragmentar los sistemas de archivos XFS para mejorar el rendimiento
xfs_fsr /dev/sda1
Optimizar la configuración del backlog de TCP
Aumente la configuración del backlog de TCP para manejar más conexiones simultáneas
sysctl -w net.core.somaxconn=1024
sysctl -w net.core.netdev_max_backlog=5000
Utilice mdadm para la gestión RAID de software
Administrar matrices RAID de software con mdadm
mdadm –create –verbose /dev/md0 –level=1 –raid-devices=2 /dev/sda1 /dev/sdb1
Implementar la sujeción TCP MSS
Ajuste el tamaño máximo de segmento (MSS) de TCP para evitar la fragmentación
iptables -t mangle -A ADELANTE -p tcp –tcp-flags SYN,RST SYN -j TCPMSS –clamp-mss-to-pmtu
Optimizar la protección contra inundaciones TCP SYN
Configurar la protección contra inundaciones TCP SYN para evitar ataques DoS
sysctl -w net.ipv4.tcp_syncookies=1
Habilitar y configurar dnsmasq para el almacenamiento en caché de DNS
Utilice dnsmasq para almacenar en caché las consultas DNS y reducir los tiempos de búsqueda
apt-get install dnsmasq
systemctl habilitar dnsmasq
systemctl iniciar dnsmasq
Habilite tcp_tw_recycle para una reutilización de la conexión más rápida
Habilite tcp_tw_recycle para acelerar la reutilización de la conexión
sysctl -w net.ipv4.tcp_tw_recycle=1
Utilice blktrace para el seguimiento de capas de bloques
Instalar y usar blktrace para rastrear operaciones de E/S de bloques
apt-get install blktrace
blktrace -d /dev/sda
Ajustar la configuración de pánico del kernel
Configurar el sistema para que se reinicie automáticamente después de un pánico del kernel
sysctl -w kernel.panic=10
sysctl -w kernel.panic_on_oops=1
Optimizar los relojes Inotify
Aumente la cantidad de observaciones de inotify para gestionar más eventos de archivos
sysctl -w fs.inotify.max_user_watches=524288
Habilitar el escalado de la ventana TCP
Mejore el rendimiento de TCP al habilitar el escalado de ventanas
sysctl -w net.ipv4.tcp_window_scaling=1
Habilitar sondas Keepalive de TCP
Configurar sondas keepalive de TCP para administrar conexiones inactivas
sysctl -w net.ipv4.tcp_keepalive_time=300
sysctl -w net.ipv4.tcp_keepalive_intvl=60
sysctl -w net.ipv4.tcp_keepalive_probes=5
Optimizar los algoritmos de control de congestión TCP
Experimente con diferentes algoritmos de control de congestión TCP para encontrar el que mejor se adapte a su carga de trabajo
sysctl -w net.ipv4.tcp_congestion_control=bbr
Utilice schedtool para la programación avanzada de CPU
Instalar y usar schedtool para controlar las políticas de programación de la CPU
apt-get install schedtool
herramienta de programación -R -p 20 -e myapp
Habilitar la fusión de páginas del mismo núcleo (KSM)
Utilice KSM para reducir el uso de memoria fusionando páginas de memoria idénticas
echo 1 > /sys/kernel/mm/ksm/run
Optimizar el tamaño del búfer de red
Aumente el tamaño del búfer de red para manejar altos volúmenes de tráfico
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Optimizar el programador del kernel
Ajuste la configuración del programador del kernel para un mejor rendimiento
echo 1 > /proc/sys/kernel/sched_autogroup_enabled
Ajustar la configuración del rcu para sistemas de baja latencia
Ajuste la configuración de actualización de lectura-copia (RCU) para un rendimiento de baja latencia
eco 0 > /sys/kernel/rcu_expedited
Optimizar el registro del sistema de archivos
Elija el modo de registro apropiado para su sistema de archivos (por ejemplo, data=writeback para ext4)
mount -o remount,datos=escritura diferida /dev/sda1
Habilitar y configurar el control de congestión TCP BBRv2
Utilice BBRv2 para un rendimiento de control de congestión TCP aún mejor
echo «net.ipv4.tcp_congestion_control=bbr» >> /etc/sysctl.conf
sysctl -p
Optimice el rendimiento del sistema de archivos con tune2fs
Utilice tune2fs para optimizar los parámetros del sistema de archivos ext4
tune2fs -o escritura de datos de diario /dev/sda1
Utilice ethtool para optimizar la configuración de NIC
Ajuste la configuración de la NIC para un mejor rendimiento de la red
ethtool -K eth0 tso desactivado
Habilitar y configurar la formación de equipos de interfaz de red
Utilice la agrupación de interfaces de red para equilibrar la carga y la conmutación por error
apt-get install ifenslave
Utilice irqbalance para equilibrar interrupciones
Instalar y configurar irqbalance para distribuir interrupciones entre las CPU
apt-get install irqbalance
Ajustar los parámetros del semáforo del kernel
Ajuste la configuración del semáforo para un mejor rendimiento con aplicaciones que utilizan mucho IPC
sysctl -w kernel.sem=»250 32000 100 128″
Configurar y utilizar ethtool para la optimización de la red
Utilice ethtool para optimizar la configuración de la interfaz de red
ethtool -K eth0 rx desactivado tx desactivado
Habilitar colas pequeñas TCP (TSQ)
Optimice la pila TCP habilitando TSQ
sysctl -w net.ipv4.tcp_limit_output_bytes=131072
Habilitar y configurar EarlyOOM
Utilice EarlyOOM para gestionar situaciones de falta de memoria con más elegancia
apt-get install earlyoom
Optimizar la caché de inodos
Ajuste la configuración de caché de inodos para manejar grandes cantidades de archivos
sysctl -w fs.inode-nr
sysctl -w fs.estado-inodo
Optimizar el almacenamiento en caché del disco
Ajuste vm.dirty_ratio y vm.dirty_background_ratio para controlar el comportamiento del almacenamiento en caché del disco
sysctl -w vm.dirty_ratio=20
sysctl -w vm.proporción_de_fondo_sucio=10
Implementar alias de direcciones IP
Utilice alias de direcciones IP para administrar varias direcciones IP en una única interfaz de red, lo que mejora el rendimiento y la administración de la red.
dirección IP agregar 192.168.1.2/24 dev eth0
Habilitar E/S asincrónica para servidores de bases de datos
Habilite la E/S asincrónica (AIO) para servidores de bases de datos como MySQL o PostgreSQL para mejorar el rendimiento de E/S del disco
innodb_use_aio nativo=1
Optimizar la configuración de reensamblaje de TCP
Ajuste la configuración de reensamblaje de TCP para manejar paquetes fragmentados de manera más eficiente
sysctl -w net.ipv4.tcp_reordering=3
Habilitar jemalloc para la asignación de memoria
Utilice jemalloc como asignador de memoria para aplicaciones como Nginx, MySQL o Redis para mejorar el rendimiento de la gestión de memoria.
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
Ajustar los algoritmos del elevador de E/S
Cambie a un algoritmo de elevador de E/S más adecuado, como mq-deadline o none para SSD
echo mq-deadline > /sys/block/sda/queue/scheduler
Utilice fstrim para SSD
Ejecute periódicamente fstrim para informar al SSD de los bloques no utilizados, lo que mejora el rendimiento
fstrim -v /
Optimizar la configuración de Keepalive de TCP
Ajuste la configuración de keepalive de TCP para administrar mejor las conexiones inactivas
sysctl -w net.ipv4.tcp_keepalive_time=120
sysctl -w net.ipv4.tcp_keepalive_intvl=30
sysctl -w net.ipv4.tcp_keepalive_probes=5
Optimizar la sobreasignación de memoria virtual
Ajuste la configuración de sobreasignación de memoria virtual para gestionar mejor la asignación de memoria
sysctl -w vm.overcommit_memory=2
sysctl -w vm.sobrecompromiso_ratio=50
Utilice ethtool para ajustar la interfaz de red
Ajuste la configuración de la interfaz de red para un mejor rendimiento
ethtool -K eth0 rx desactivado tx desactivado
Implementar el control de congestión TCP BBRv2
Utilice BBRv2 para mejorar el rendimiento del control de congestión de TCP
sysctl -w net.ipv4.tcp_congestion_control=bbr
Optimice el rendimiento de E/S con blk-mq (mecanismo de cola de E/S de bloque de múltiples colas)
Habilite y configure blk-mq para un mejor rendimiento de E/S en SSD
echo «mq-deadline» > /sys/block/sda/queue/scheduler
Utilice schedtool para controlar las políticas de programación de la CPU
Instalar y usar schedtool para administrar la programación de la CPU
apt-get install schedtool
herramienta schedtool -R -p 20 -e /usr/bin/myapp
Optimizar el tiempo de espera de retransmisión de TCP (RTO)
Ajuste la configuración de TCP RTO para un mejor rendimiento
sysctl -w net.ipv4.tcp_retries2=5
Optimizar las cookies TCP SYN
Habilite las cookies TCP SYN para protegerse contra ataques de inundación SYN
sysctl -w net.ipv4.tcp_syncookies=1
Optimizar el escalado de la ventana TCP
Habilite el escalado de la ventana TCP para un mejor rendimiento
sysctl -w net.ipv4.tcp_window_scaling=1
Utilice cgroups para la gestión de recursos
Implementar cgroups para limitar, priorizar y aislar el uso de recursos de los procesos
cgcreate -g cpu,memoria:migrupo
cgset -r cpu.shares=512 migrupo
cgset -r memoria.límite_en_bytes=512M migrupo
Optimizar los búferes de memoria TCP
Ajuste la configuración del búfer de memoria TCP para un mejor rendimiento
sysctl -w net.ipv4.tcp_rmem=’4096 87380 16777216′
sysctl -w net.ipv4.tcp_wmem=’4096 65536 16777216′
Optimizar los programadores del kernel
Elija el programador de E/S adecuado para su carga de trabajo (no para SSD)
echo «noop» > /sys/block/sda/queue/scheduler
Optimizar los parámetros de memoria compartida del kernel
Ajuste la configuración de memoria compartida para un mejor rendimiento con aplicaciones que hacen un uso intensivo de IPC
sysctl -w kernel.shmmax=68719476736
sysctl -w kernel.shmall=4294967296
Implementar ZFS para funciones avanzadas del sistema de archivos
Utilice ZFS para obtener una mejor integridad de los datos, instantáneas y rendimiento
apt-get install zfsutils-linux
zpool crea mypool /dev/sda
Habilitar acuses de recibo selectivos de TCP (SACK)
Optimice el rendimiento de TCP con SACK
sysctl -w net.ipv4.tcp_sack=1
Habilitar y configurar zram para intercambio comprimido
Utilice zram para crear un dispositivo de bloque comprimido en RAM
apt-get install zram-config
Implementar el sellado de tiempo TCP
Habilite las marcas de tiempo TCP para un mejor rendimiento y confiabilidad
sysctl -w net.ipv4.tcp_timestamps=1
Utilice zpool para la gestión de grupos ZFS
Administrar grupos de almacenamiento ZFS con zpool
zpool crea mypool /dev/sda
Optimizar el tiempo de acceso al sistema de archivos
Utilice las opciones de montaje noatime y nodiratime para reducir la E/S del disco
mount -o remontar,noatime,nodiratime /
Optimizar el tamaño de la cartera de TCP
Aumente el tamaño del backlog de TCP para manejar más conexiones entrantes
sysctl -w net.core.somaxconn=1024
Optimizar la configuración de la memoria virtual del kernel
Ajuste la configuración de la memoria virtual para un mejor rendimiento y optimice los límites del controlador de archivos del kernel
Aumentar la cantidad de controladores de archivos que el kernel puede administrar
sysctl -w fs.file-max=2097152