Rendimiento PHP
Cuando se trata del rendimiento de WordPress, más hilos de PHP no significan automáticamente un mejor rendimiento; hay una serie de factores que debes tener en cuenta:
- Almacenamiento en caché: Un almacenamiento en caché eficaz puede reducir la carga de trabajo de los hilos de PHP al servir contenido almacenado en caché en lugar de generarlo dinámicamente para cada solicitud. Esto puede mejorar significativamente el rendimiento, especialmente para los recursos a los que se accede con frecuencia.
- Hardware: Los recursos de hardware disponibles en el servidor, como la CPU, la memoria (RAM) y la velocidad del disco, afectan directamente al rendimiento de los hilos de PHP. Unos recursos insuficientes pueden provocar tiempos de procesamiento más lentos y un rendimiento degradado.
- Configuración del servidor web: La configuración del servidor web y su interacción con PHP pueden influir en el rendimiento de los hilos.
- Velocidad de la base de datos: Las aplicaciones PHP suelen recuperar datos de bases de datos MySQL para generar contenido dinámico. La velocidad de recuperación de datos depende de factores como la organización de la base de datos, la optimización de las consultas y el rendimiento del servidor de la base de datos. Estos elementos afectan directamente al rendimiento general de las aplicaciones PHP.
- Versión de PHP: Las versiones más recientes de PHP a menudo pueden dar lugar a un mejor rendimiento de los hilos de PHP debido a las mejoras de rendimiento, las correcciones de errores y las actualizaciones de seguridad.
En Kinsta, valoramos la importancia del rendimiento de tu sitio web. Por eso hemos implementado varias tecnologías destinadas a maximizar el rendimiento PHP y minimizar las peticiones PHP:
- Ofrecemos caché de páginas tanto a nivel de CDN como de servidor, con reglas personalizables para garantizar la máxima eficacia del caché.
- Utilizamos servidores premium en GCP (máquinas virtuales C2 y C3D) equipados con las CPU más rápidas de Google Cloud para ayudar a que los hilos de PHP de tu sitio funcionen de forma más eficiente.
- Nuestra infraestructura escalable garantiza que los hilos de PHP de tu sitio de WordPress tengan suficientes recursos de CPU para funcionar al máximo rendimiento.
- Utilizamos una infraestructura de red premium en Google Cloud Platform (GCP) para minimizar la latencia. Al aprovechar la red premium de GCP, reducimos significativamente el tiempo que tardan los datos en viajar entre los distintos componentes de nuestra infraestructura, incluidos el servidor MySQL y los servidores web.
- Proporcionamos un servidor MySQL altamente optimizado alojado localmente para reducir la latencia de la red y mejorar la velocidad de recuperación y procesamiento de los datos.
- En el servidor MySQL, disponemos de búferes InnoDB para ayudar a mejorar el rendimiento de la base de datos reduciendo las operaciones de I/O del disco. Se puede acceder a los datos más rápidamente desde la memoria que desde el disco, lo que aumenta la eficacia de las operaciones de lectura y escritura y mejora el rendimiento general de la base de datos MySQL.
- Nos aseguramos de que la última versión de PHP esté siempre disponible para incorporar cualquier mejora de rendimiento.
Ver el rendimiento de PHP
Puedes ver tu rendimiento PHP dentro de los sitios de WordPress > nombre del sitio > Información.
Muestra la siguiente información:
- Memoria PHP total: La memoria PHP total distribuida entre los hilos de PHP.
- Threads PHP (Hilos de PHP): Anteriormente conocidos como PHP workers. Es el número de hilos de PHP por sitio. Cada hilos es un proceso PHP que gestiona una petición entrante cada vez, por lo que más hilos permiten más peticiones simultáneas. El contenido en caché evita los hilos de PHP, que sólo son necesarios para consultas a la base de datos o cambios en los datos.
- Memoria por hilo: Este es el límite de memoria PHP por hilo, que es la cantidad máxima de memoria (RAM) que cada hilo PHP puede utilizar mientras procesa una petición.
- Límite de hilos alcanzado: Muestra el número de errores «Límite de hilos de PHP alcanzado» en este entorno en las últimas 24 horas. Cuando se produce este error, significa que el sitio no se ha servido, y los visitantes de tu sitio sólo ven el error 500. Las principales causas de este error son:
- Altos picos de tráfico: Si tu sitio web experimenta un repentino pico de tráfico, como durante una promoción o un evento, todos los hilos de PHP disponibles pueden saturarse, dando lugar a este error.
- Código mal optimizado: Los scripts PHP lentos o que consumen muchos recursos pueden tardar más en ejecutarse, provocando que los hilos permanezcan ocupados durante más tiempo. Si los scripts PHP implican consultas complejas o ineficientes a la base de datos, pueden atascar el proceso de ejecución.
- Plugins o temas ineficientes: Algunos plugins o temas pueden consumir recursos excesivos del servidor, provocando retrasos en el procesamiento de los hilos. Aunque los plugins individualmente no consuman muchos recursos, tener demasiados puede ralentizar acumulativamente el procesamiento de PHP.
- Tareas en segundo plano: Los procesos en segundo plano o cron jobs de larga duración (como las copias de seguridad programadas o las limpiezas de bases de datos) pueden consumir recursos de hilos de PHP, contribuyendo a que se alcance el límite.
- Ataques DDoS o Bots: Un ataque de Denegación de Servicio Distribuido (DDoS) o grandes cantidades de tráfico de bots pueden saturar el servidor y consumir todos los hilos de PHP disponibles, provocando este error.
- Límite de memoria alcanzado: Esta métrica muestra el número de errores «PHP Fatal error: Tamaño de memoria permitido de xxx bytes agotado» en este entorno en las últimas 24 horas. Cuando se produce este error, significa que el sitio no se ha servido, y los visitantes de tu sitio sólo ven el error 500. Las principales causas de este error son:
- Procesamiento de grandes datos: Los scripts que procesan grandes conjuntos de datos, imágenes o archivos (por ejemplo, importaciones de CSV, manipulación de imágenes) pueden consumir mucha memoria, provocando este error.
- Fugas de memoria en el código: La gestión incorrecta de variables, objetos o arrays grandes que no se liberan después de su uso puede provocar una fuga de memoria, lo que conlleva un elevado consumo de memoria.
- Código o algoritmos ineficientes: Almacenar arrays u objetos enormes en memoria, especialmente sin optimizar cómo se manejan, puede agotar la memoria. Los scripts que abren archivos, conexiones de red u otros recursos externos sin cerrarlos correctamente pueden aumentar gradualmente el consumo de memoria.
- Plugins o temas mal diseñados: Algunos plugins o temas pueden consumir demasiada memoria debido a un código ineficiente o a una mala optimización. Aunque cada plugin individualmente no consuma mucha memoria, tener muchos plugins instalados y activos puede desbordar colectivamente tus límites de memoria.
- Tareas en segundo plano: Los Cron jobs, tareas programadas o scripts en segundo plano que se ejecutan durante largos periodos o manejan grandes cantidades de datos pueden provocar este error, especialmente si no están optimizados.
Cambiar el rendimiento de PHP
Puedes cambiar el rendimiento PHP de cada sitio dentro de los sitios de WordPress > nombre del sitio > Información > Rendimiento PHP > Cambiar.
Esto muestra tu pool de memoria total en tu plan actual. El pool de memoria es la memoria PHP total distribuida entre tus hilos de PHP. Por ejemplo, si tienes 4 hilos de PHP y un pool de memoria total de 2GB, el límite de memoria PHP para cada hilo de PHP sería de 512MB.
Puedes cambiar el Pool de memoria total para aumentar la cantidad total de memoria distribuida entre los hilos de PHP. También puedes utilizar el control deslizante para añadir:
- Más hilos: Puedes mover el deslizador hacia este lado para aumentar el número de hilos de PHP de tu sitio. Cuando aumentas el número de hilos, la memoria PHP se distribuye automáticamente entre el mayor número de hilos; esto puede significar que tengas menos memoria por hilo. Por ejemplo, si tienes 16 hilos con un pool de memoria total de 2 GB, el límite de memoria PHP para cada hilos es de 128 MB. Si aumentas los hilos a 32 pero mantienes el mismo pool de memoria, el límite de memoria PHP para cada hilo será de 64MB.
Un mayor número de hilos permite a tu sitio web gestionar varias peticiones entrantes simultáneamente. Sin embargo, con menos memoria por subproceso, las tareas que requieren mucha memoria, como las consultas a grandes bases de datos o la carga de archivos multimedia, pueden exceder la memoria disponible y provocar errores. Es importante tener esto en cuenta al configurar tu sitio.
Los sitios dinámicos que generan contenido en tiempo real, como las plataformas de comercio electrónico, los sitios web basados en CMS o los foros, tienen más probabilidades de beneficiarse de tener más hilos. Los sitios estáticos que muestran contenido fijo, como blogs, documentación o sitios web de estilo folleto, no suelen beneficiarse de hilos de PHP adicionales, ya que su contenido rara vez cambia y requiere un procesamiento mínimo del servidor.
Puedes reducir el uso de hilos activando el almacenamiento en caché y optimizando tu código. Para más detalles sobre cómo minimizar el uso de hilos, consulta Reducir y optimizar el uso de hilos de PHP. - Más memoria: Puedes mover el deslizador hacia aquí para aumentar el límite de memoria PHP por hilo; sin embargo, si no aumentas el pool de memoria PHP, se reducirá el número de hilos de PHP disponibles. El límite máximo de memoria por hilo es de 1024MB. Por ejemplo, si tienes 16 hilos con un pool de memoria total de 2 GB, el límite de memoria PHP para cada hilo es de 128MB. Si aumentas el límite de memoria pero mantienes igual el pool de memoria, se reducirán los hilos de PHP a 2, y el límite de memoria PHP por hilo será de 1024MB.
Asignar más memoria por subproceso permite a tu sitio gestionar más eficazmente las tareas que requieren mucha memoria, como la subida de contenidos. Los sitios con numerosos plugins o los que realizan muchas peticiones a la base de datos pueden beneficiarse de una mayor memoria por subproceso para mantener un rendimiento óptimo. Sin embargo, si tienes menos hilos, esto reduce el número de peticiones entrantes que tu sitio puede gestionar simultáneamente.
A medida que cambias los valores, la imagen bajo el control deslizante muestra los valores actualizados y cómo se distribuyen entre los hilos y la memoria.
Cuando estés satisfecho con la asignación de hilos y memoria, haz clic en Continuar. Si has aumentado el pool de memoria, se crea un add-on de rendimiento PHP; los detalles del precio se muestran en la siguiente pantalla. La suscripción aparecerá en tu próximo ciclo de facturación y se prorrateará automáticamente para tu periodo de facturación actual.
Nota: Como este add-on se prorratea, puedes aumentar temporalmente el pool de memoria total, los hilos o la memoria si prevés un tráfico elevado para eventos como el Black Friday o el Cyber Monday. Después del evento, puedes volver a la configuración original, y sólo se te cobrará por los días en que el add-on estuvo activo.
Si reduces el pool de memoria para eliminar el add-on de rendimiento PHP y estás en los primeros 30 días de tu plan de alojamiento de WordPress, se añadirá a tu próxima factura una tarifa prorrateada por el add-on durante el periodo de tiempo en que estuvo activado. Si tu plan de alojamiento de WordPress lleva activo más de 30 días, recibirás un crédito prorrateado por las tarifas del add-on en el saldo de tu cuenta por los días restantes del periodo de facturación actual. El crédito se utiliza automáticamente para compensar el dinero adeudado a Kinsta en tu próxima factura. Para más información, consulta nuestra Garantía de Devolución del Dinero del Alojamiento WordPress.
Entornos staging
Sólo puedes modificar el Pool de memoria total en el entorno real. Si lo ajustas en el entorno en producción, el nuevo valor se aplica a todos los entornos staging estándar y premium.
Cuando cambias el pool de memoria o el número de hilos en el entorno en producción, la asignación de memoria por hilo para el entorno staging estándar se ajusta en consecuencia; sin embargo, el número máximo de hilos para un entorno staging estándar está limitado a 2. Por ejemplo, si el entorno en producción tiene un pool de memoria de 2 GB con 4 hilos de PHP, cada hilo tendría un límite de memoria de 512 MB. En el entorno staging estándar, serían 2 hilos de PHP, cada uno con un límite de memoria de 512 MB.
En los entornos staging premium, tienes la flexibilidad de ajustar el número de hilos y la memoria independientemente del entorno en producción.
Valores de distribución de pool, hilos y memoria
Las siguientes tablas muestran las opciones de distribución disponibles para la memoria y los hilos en función del valor del pool de memoria total:
512MB pool de memoria
Hilos de PHP | Memoria por hilo |
---|---|
2 | 256MB |
4 | 128MB |
8 | 64MB |
1GB pool de memoria
Hilos de PHP | Memoria por hilo |
---|---|
2 | 512MB |
4 | 256MB |
8 | 128MB |
16 | 64MB |
1.5GB pool de memoria
Hilos de PHP | Memoria por hilo |
---|---|
3 | 512MB |
6 | 256MB |
12 | 128MB |
24 | 64MB |
2GB pool de memoria
Hilos de PHP | Memoria por hilo |
---|---|
2 | 1024MB |
4 | 512MB |
8 | 256MB |
16 | 128MB |
32 | 64MB |
2.5GB pool de memoria
Hilos de PHP | Memoria por hilo |
---|---|
2 | 1024MB |
5 | 512MB |
10 | 256MB |
20 | 128MB |
3GB pool de memoria
Hilos de PHP | Memoria por hilo |
---|---|
3 | 1024MB |
6 | 512MB |
12 | 256MB |
24 | 128MB |
4GB pool de memoria
Hilos de PHP | Memoria por hilo |
---|---|
2 | 2048MB |
4 | 1024MB |
8 | 512MB |
16 | 256MB |
32 | 128MB |
Si necesitas más hilos de PHP o un mayor límite de memoria por hilo, te recomendamos que utilices un servidor dedicado.
Eliminar el add-on de rendimiento PHP
Para eliminar el add-on de rendimiento PHP de todos los sitios, ve a tu nombre de usuario > Configuración de la empresa > Mi plan, y haz clic en Eliminar dentro de Rendimiento PHP.
Esto restablece todos los sitios a la memoria e hilos PHP originales incluidos en tu plan. La ventana de confirmación muestra de qué sitios se eliminará el add-on y a qué nivel se restablecerá el pool de memoria. Para confirmar la eliminación, haz clic en Eliminar add-on de rendimiento PHP.
Para eliminar el add-on de rendimiento PHP de un sitio individual, puedes cambiar el rendimiento PHP y reducir el pool de memoria Total al valor por defecto incluido en tu plan. También puedes eliminar el add-on para todos los sitios que lo tengan activado dentro de tu nombre de usuario > Configuración de la empresa y en la sección Rendimiento PHP, haz clic en Eliminar.
La ventana de confirmación muestra de qué sitios se eliminará el add-on y a qué valores se restablecerán el pool de memoria PHP, el recuento de hilos y la memoria por hilo. Para confirmar la eliminación, haz clic en Eliminar add-on de rendimiento PHP.
Si estás en los primeros 30 días de tu plan de Alojamiento de WordPress, se añadirá a tu próxima factura un cargo prorrateado por el add-on correspondiente al periodo de tiempo en que estuvo activado. Si tu plan de Alojamiento de WordPress lleva activo más de 30 días, recibirás un abono prorrateado de los cargos del add-on en el saldo de tu cuenta por los días restantes del periodo de facturación actual. El crédito se utiliza automáticamente para compensar el dinero adeudado a Kinsta en tu próxima factura. Para más información, consulta nuestra Garantía de devolución del dinero del Alojamiento de WordPress.
Add-on de límite de memoria PHP
Este add-on aumenta el límite de memoria de 256MB a 512MB con un coste de 50$ por sitio al mes. Para ver el add-on dentro de MyKinsta, ve a Sitios de WordPress > nombre del sitio > Add-ons > Memoria PHP.
Si eliminas el add-on de límite de memoria PHP y estás en los primeros 30 días de tu plan de Alojamiento de WordPress, se añadirá a tu próxima factura un cargo prorrateado por el add-on correspondiente al periodo de tiempo en que estuvo activado. Si tu plan de Alojamiento de WordPress lleva activo más de 30 días, recibirás un abono prorrateado de las tarifas del add-on en el saldo de tu cuenta por los días restantes del periodo de facturación actual. El crédito se utiliza automáticamente para compensar el dinero adeudado a Kinsta en tu próxima factura. Para más información, consulta nuestra Garantía de devolución del dinero del Alojamiento de WordPress.
Identificar problemas de rendimiento de PHP
Herramienta APM de Kinsta
Utilizar herramientas como la herramienta APM de Kinsta y el plugin Query Monitor puede ayudarte a identificar problemas de rendimiento y consultas lentas. También recomendamos trabajar con un experto cualificado en rendimiento para diagnosticar los problemas.
Límite de hilos de PHP
Puedes acceder al gráfico de límite de hilos de PHP en MyKinsta > Sitios WordPress > nombre del sitio > Analíticas > Rendimiento > Límite de hilos PHP.
Si un hilo de PHP no tiene nada que hacer durante 10 segundos continuos, el proceso del hilo PHP terminará automáticamente. En cuanto se vuelva a necesitar, el proceso de hilos se recreará instantáneamente. Este gráfico te muestra cuántas veces se ha alcanzado el número máximo de hilos asignados en tu sitio.
Por ejemplo, si tienes un plan WP 5, éste permite un máximo de 4 procesos de hilos PHP. Si 3 hilos de PHP están en uso y se hace otra petición a tu sitio que requiere un hilo de PHP, cuando se crea el hilo de PHP, alcanza el número máximo de 4 hilos de PHP y se registra como un incidente en el que se alcanza el límite de hilos de PHP.
Esto sólo puede darte una imagen parcial de tu actividad de hilos de PHP, ya que sólo registra el número de veces que se alcanza el límite de hilos de PHP y no cuánto tiempo estuvieron en uso todos los hilos de PHP.
Por ejemplo, si tu sitio experimenta un aumento de tráfico, puede que todos los hilos de PHP permanezcan constantemente ocupados durante una hora entera sin tiempo de inactividad y, por lo tanto, no terminen en absoluto durante esa hora. Esto sólo se registraría como un caso en el que se alcanza el límite de hilos de PHP y, por tanto, puede parecer que los hilos de PHP no estuvieron ocupados durante esa hora cuando, en realidad, estuvieron todos activos todo el tiempo. Transcurridos 30 minutos, si se produce una disminución del tráfico que permita que un hilo de PHP esté inactivo durante 10 segundos, éste terminará automáticamente. Sin embargo, si el hilo de PHP se necesita de nuevo en otro minuto, se alcanzaría de nuevo el número máximo de hilos de PHP, lo que provocaría que se registrara otro límite de hilos de PHP.
Si quieres aumentar el número de hilos de PHP para tu sitio, puedes hacerlo dentro de los sitios de WordPress > nombre del sitio > Información > Rendimiento PHP > Cambiar.
Si estás investigando el rendimiento del sitio web y determinando si tu sitio está utilizando continuamente sus hilos de PHP, puedes monitorizar la actividad de los hilos de PHP utilizando herramientas en una sesión SSH. Por ejemplo, el siguiente comando personalizado monitoriza el número de hilos de PHP activos cada 0,3 segundos:
watch -n 0.3 "ps aux | awk '$(NF-2) ~ /php-fpm/ && $(NF-1) ~ /pool/ && $8 ~ /R/ { print $0 }' | wc -l"
Para salir de este comando, pulsa CMD + C o CTRL + C y luego suelta ambas teclas.
Límite de memoria PHP alcanzado
Puedes acceder al gráfico de límite de memoria PHP alcanzado en MyKinsta > Sitios WordPress > nombre del sitio > Analíticas > Rendimiento > Límite de memoria PHP alcanzado.
Este gráfico muestra el número de veces que se ha alcanzado el Límite de memoria PHP fue alcanzado. Por defecto en Kinsta, el límite de memoria PHP es de 256 MB, que es más que suficiente para la mayoría de plugins y sitios de WordPress. Este límite existe para evitar que los scripts PHP consuman demasiada memoria. Si estableces un límite demasiado alto, un script mal configurado o roto puede causar serios problemas al consumir demasiada memoria.
Esto sólo proporciona una visión parcial de tu uso de memoria PHP, ya que registra el número de veces que se alcanza el límite de memoria, pero no la duración de esas ocurrencias.
Si tu sitio está configurado correctamente en Kinsta, no deberías alcanzar el límite de memoria PHP. Si lo haces, te recomendamos reducir y optimizar tu uso de hilos de PHP.
Puedes cambiar el límite de memoria PHP de un sitio dentro de los sitios de WordPress > nombre del sitio > Información > Rendimiento PHP > Cambiar.
Analíticas de caché
La sección de analíticas de caché de MyKinsta se puede utilizar para ver el total de peticiones de caché de tu sitio y las principales desviaciones de caché.
Reducir y optimizar el uso de hilos de PHP
Caché
El almacenamiento en caché es tu mejor amigo cuando se trata de optimizar tu sitio y reducir el número de hilos de PHP necesarios. Recuerda que los hilos de PHP no son necesarios para el contenido almacenado en caché, así que almacena en caché todo lo que puedas.
Caché de página
En Kinsta, nos ocupamos del caché de páginas por ti; todos los sitios utilizan el módulo de caché FastCGI de Nginx para un rendimiento superrápido.
Edge caching
Edge caching almacena el caché de tu sitio o página Kinsta (normalmente guardado sólo en el centro de datos de tu sitio) en la red global de Cloudflare de más de 260 centros de datos. Cuando los visitantes acceden a tu sitio, el contenido almacenado en caché se sirve desde la ubicación más cercana, aumentando significativamente el rendimiento y la velocidad del sitio web hasta en un 40%.
Caché de objetos
Añadir un caché de objetos persistente como Redis a tu base de datos puede aumentar el rendimiento y reducir la necesidad de hilos de PHP. Sin caché de objetos, las consultas a la base de datos MySQL se ejecutan para cada solicitud, incluso cuando se trata de la misma consulta y los mismos resultados.
Redis almacena los resultados de las consultas a la base de datos en RAM para que PHP pueda obtener esos resultados sin tener que ejecutar la consulta de nuevo. Eliminar la necesidad de consultas repetitivas a la base de datos permite a los hilos de PHP conservar recursos y satisfacer las peticiones de forma más eficiente.
Puedes añadir caché Redis a tu sitio con nuestro add-on de caché Redis.
Optimización del código
Asegúrate de que el código de tu sitio está optimizado para que sea lo más eficiente posible. Esto se aplica al código personalizado, al código del tema y al código de los plugins. Si no estás seguro, te recomendamos que pidas a un desarrollador que revise el código de tu sitio.
Código personalizado
Si tu sitio web contiene fragmentos de código personalizado en plugins o en tu tema, asegúrate de que sean realmente necesarios y estén bien escritos.
Plugins
Echa un buen vistazo a los plugins utilizados en el sitio y asegúrate de que son realmente necesarios, no duplican funciones y son la mejor opción para la necesidad que satisfacen. Si algún plugin no es compatible con la última versión de WordPress y PHP, puede que sea el momento de considerar otras opciones. Si tienes plugins en tu sitio que no se utilizan, se recomienda eliminarlos.
Tema
Utiliza un tema ligero y eficaz. Evita los temas que contengan funcionalidades que se implementan mejor mediante plugins independientes (por ejemplo, SEO, filtros de búsqueda, campos personalizados, sliders/presentaciones de imágenes, etc.) o que no sean necesarios para tu sitio.
Actualiza PHP
Utiliza la última versión de PHP para un rendimiento más rápido. Las pruebas de rendimiento de PHP muestran que cada versión de PHP es más rápida que la anterior.
Habilitar la CDN de Kinsta
Activar la CDN de Kinsta proporciona otro impulso de eficiencia y optimización para tu sitio. La CDN de Kinsta es nuestra CDN HTTP/3 de alto rendimiento impulsada por Cloudflare, que se te proporciona sin coste adicional. Con ella activada, tu sitio puede servir activos estáticos desde ubicaciones de todo el mundo.
Consulta con un experto en rendimiento
Si estás familiarizado con la optimización de sitios, este es un paso opcional. Un experto puede ayudarte a analizar todos los aspectos de tus sitios, identificar los cuellos de botella e implementar soluciones.