Workers PHP

Los workers PHP procesan el código PHP de un sitio. Esto incluye construir páginas, procesar tareas en segundo plano, consultar la base de datos, etc.

Una forma de pensar en los workers PHP es como en los empleados de una tienda. Cada trabajador sólo puede gestionar una petición a la vez. Si hay más clientes que trabajadores, esos clientes (procesos) tienen que ponerse en fila y esperar a que el siguiente trabajador disponible atienda su solicitud.

Los workers PHP entran realmente en juego cuando un sitio no almacena o no puede almacenar en caché la mayor parte de su contenido. Cuanto más dinámico sea un sitio web, más workers PHP necesitará. El contenido almacenado en caché no requiere workers PHP; en realidad sólo son necesarios cuando el sitio necesita consultar la base de datos para obtener o modificar información.

Cuando se trata del rendimiento de WordPress, más PHP workers 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 PHP workers 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, influyen directamente en el rendimiento de los PHP workers. 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 del Worker.
  • Velocidad de la Base de Datos: Las aplicaciones PHP recuperan con frecuencia datos de bases de datos MySQL para renderizar contenidos dinámicos. La velocidad a la que se recuperan los datos está influida por aspectos 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. Esto influye directamente en el funcionamiento de las aplicaciones PHP.
  • Versión de PHP: Las nuevas versiones de PHP a menudo pueden dar lugar a un mejor rendimiento del PHP worker debido a mejoras en el rendimiento, correcciones de errores y actualizaciones de seguridad.

En Kinsta, valoramos la importancia del rendimiento de tu sitio. Por eso hemos implementado varias tecnologías destinadas a maximizar el rendimiento de PHP y minimizar las peticiones de PHP:

  • Ofrecemos caché de páginas tanto a nivel de CDN como de servidor, con reglas personalizables para garantizar la máxima eficacia de la 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 PHP Worker de tu sitio funcionen de forma más eficiente.
  • Nuestra infraestructura escalable garantiza que los PHP Workers de tu sitio de WordPress tengan suficientes recursos de CPU para funcionar al máximo rendimiento.
  • Utilizamos una infraestructura de red de nivel 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 buffers 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.

WordPress y Workers PHP

Una petición sin caché en un sitio WordPress suele ser algo así:

  1. Un visitante visita una página o realiza una acción en una página (por ejemplo, añadir algo a un carrito, enviar un formulario, etc.).
  2. El servidor web (Nginx aquí en Kinsta) recibe esa petición.
  3. Nginx pasa la solicitud a PHP.
  4. PHP consulta la base de datos MySQL y obtiene la información que necesita o realiza las actualizaciones necesarias.
  5. A continuación, PHP utiliza los archivos PHP de tu tema (y los archivos de cualquier plugin, si procede) para generar una página HTML.
  6. PHP devuelve la página HTML generada al servidor web.
  7. La página se sirve al visitante.

En el proceso descrito anteriormente, el paso 4 es el que consume más tiempo y recursos (CPU y RAM). Un sitio bien optimizado con código PHP y consultas a la base de datos eficientes procesará ese paso con bastante rapidez.

Por otro lado, un código PHP mal escrito o no optimizado y/o muchas consultas ineficaces a la base de datos tardarán mucho más en procesar el Paso 4. Las peticiones que tardan más en procesarse acaparan workers PHP durante periodos de tiempo más largos.

Estimación del Número de Workers PHP Necesarios

El número de workers que necesita un sitio depende de varios factores, como: lo dinámico que sea el sitio, lo optimizado que esté el código del sitio (la rapidez con la que se pueden procesar las peticiones) y el tipo de tráfico que reciba el sitio. Un sitio optimizado gestiona las peticiones rápidamente, liberando workers PHP para la siguiente petición de la cola.

Los sitios dinámicos, como las tiendas de comercio electrónico, los foros, los sitios de aprendizaje y los sitios de afiliación, suelen necesitar más workers PHP que los sitios más estáticos, de tipo informativo. Además, cuanto más ocupado esté un sitio, más workers PHP necesitará.

Planes Kinsta y PHP Workers

La siguiente tabla muestra cuántos PHP workers se incluyen en cada plan de Kinsta:

Plan PHP workers
Starter 2 PHP workers
Pro 2 PHP workers/sitio
Business 1 4 PHP workers/sitio
Business 2 4 PHP workers/sitio
Business 3 6 PHP workers/sitio
Business 4 6 PHP workers/sitio
Enterprise A partir de 8 PHP workers/sitio
Plan de Sitio Único 6 PHP workers
Plan de Agencia 6 PHP workers/sitio

También ofrecemos planes personalizados en los que puedes indicar cuántos PHP workers necesitas. Para más información, ponte en contacto con nuestro equipo de ventas.

Workers PHP, CPU y RAM

Al añadir workers PHP, hay que tener en cuenta los recursos de CPU y RAM. Si aumentas los PHP workers, pero el servidor necesita más CPU y RAM para soportarlos, se creará un cuello de botella porque las peticiones no se gestionarán con eficacia.

En Kinsta, nuestros contenedores LXD personalizados están configurados con abundantes recursos de CPU y RAM. Además, al utilizar máquinas virtuales C2 y C3D optimizadas computacionalmente y equipadas con las CPU más rápidas de Google Cloud, ayudamos a que los workers PHP de tu sitio web funcionen de forma más eficiente. Nuestra infraestructura escalable garantiza que los workers PHP de tu sitio WordPress tengan suficientes recursos de CPU para funcionar al máximo rendimiento.

Identificar Problemas de Rendimiento Relacionados con los Workers PHP

Si se acumulan demasiadas peticiones en la cola debido a una gran afluencia de peticiones, procesos de larga duración o una combinación de ambos, el sitio puede experimentar problemas de rendimiento que pueden dar lugar a errores 502 o 504.

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.

Haz clic en el botón Activar APM para activarlo en MyKinsta.
Haz clic en el botón Activar APM para activarlo en MyKinsta.

Límite de PHP Worker

Puedes acceder al gráfico de límite de PHP workers en MyKinsta > Sitios de WordPress > nombre del sitio > Analíticas > Rendimiento > Límite de PHP workers. Si un PHP worker no tiene nada que hacer durante 10 segundos seguidos, el proceso PHP worker terminará automáticamente. En cuanto se vuelva a necesitar, el proceso worker se volverá a crear al instante. Este gráfico te muestra cuántas veces se ha alcanzado el número máximo de workers asignados en tu sitio.

Por ejemplo, si tienes un plan Business 1, éste permite un máximo de 4 procesos PHP worker. Si se están utilizando 3 PHP workers y se realiza otra petición a tu sitio que requiere un PHP worker, cuando se crea el PHP worker, alcanza el número máximo de 4 PHP workers y se registra como un incidente en el que se alcanza el límite de PHP workers.

Esto sólo puede darte una imagen parcial de tu actividad de PHP workers, ya que sólo registra el número de veces que se alcanza el límite de PHP workers y no cuánto tiempo estuvieron en uso todos los PHP workers.

Por ejemplo, si tu sitio experimenta un aumento de tráfico, es posible que todos los PHP workers 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 PHP workers y, por tanto, puede parecer que los PHP workers 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 PHP worker esté inactivo durante 10 segundos, éste terminará automáticamente. Sin embargo, si se vuelve a necesitar el PHP worker en otro minuto, se alcanzaría de nuevo el número máximo de PHP workers, lo que daría lugar a que se registrara otro límite de PHP workers.

Si estás investigando el rendimiento de un sitio web y quieres determinar si tu sitio está utilizando continuamente sus PHP workers, puedes monitorizar la actividad de los PHP workers utilizando herramientas en una sesión SSH. Por ejemplo, el siguiente comando personalizado monitoriza el número de PHP workers 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 workers PHP
Límite de workers PHP

Análisis de Caché

La sección de análisis de caché en las analíticas de caché de MyKinsta se puede utilizar para ver el total de peticiones en caché de tu sitio y las principales desviaciones de caché.

Caché — gráfico de componentes de caché
Caché — gráfico de componentes de caché
Caché — principales bypasses de caché
Caché — principales bypasses de caché

Reducir y Optimizar el uso de Worker PHP

Caché

El almacenamiento en caché es tu mejor amigo cuando se trata de optimizar tu sitio y reducir el número de workers PHP necesarios. Recuerda que los workers 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 almacenamiento en caché de las páginas por ti; todos los sitios utilizan el módulo de caché FastCGI de Nginx para un rendimiento superrápido.

Caché de Objetos

Añadir una caché de objetos persistente como Redis delante de tu base de datos puede aumentar el rendimiento y reducir la necesidad de workers PHP. Sin la 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 ejecutar la consulta de nuevo. Eliminar la necesidad de consultas repetitivas a la base de datos permite a los workers PHP conservar recursos y satisfacer las peticiones de forma más eficiente.

Consulta nuestros add-ons premium para saber más sobre cómo añadir la caché Redis a tu sitio.

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 son 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 obtener 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

Habilitar 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 te proporcionamos sin coste adicional. Con ella activada, tu sitio podrá 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.

Reinicia PHP

En Kinsta, tenemos una función impresionante que llamamos PHP autorreparable. Esto es muy útil si se produce un error 502 o si algo va mal. Si PHP se cae por cualquier motivo, nuestro sistema intenta automáticamente reiniciarlo. En muchos casos, esto es todo lo que se necesita, ¡y ya está!

En raras ocasiones, puede tratarse de un problema mayor. Nuestro sistema lo registra automáticamente para que nuestro equipo de Administración de Sistemas (sysadmin) lo compruebe. De lo contrario, puedes reiniciar PHP para cualquiera de tus sitios web individualmente con un simple clic de un botón desde MyKinsta.

Cómo Reiniciar Manualmente PHP

Para reiniciar PHP en tu sitio WordPress, sigue los pasos que se indican a continuación.

  1. Inicia sesión en MyKinsta.
  2. Ve a Sitios WordPress y selecciona el sitio en el que deseas reiniciar PHP.
  3. Ve a la pestaña Herramientas y busca la sección Reiniciar PHP.
  4. Haz clic en el botón Reiniciar PHP.
Reinicia PHP en MyKinsta.
Reinicia PHP en MyKinsta.

Ten en cuenta que reiniciar PHP tardará unos 5-10 segundos. Recibirás una notificación en la parte inferior de la pantalla cuando se haya completado.

Nota: También tendrás que borrar la caché de tu sitio para ver los cambios.

Límites PHP de Kinsta

Como servicio de WordPress Administrado, tenemos configurados los ajustes PHP óptimos para trabajar mejor con sitios de WordPress. Si tienes requisitos específicos de PHP, no dudes en ponerte en contacto con nuestro Equipo de Soporte para hablar de tus necesidades.

Kinsta ofrece PHP 8.0, 8.1, 8.2 y 8.3. Estos son los ajustes por defecto para PHP:

  • memory_limit = 256M
  • post_max_size = 128M
  • upload_max_filesize = 128M
  • max_input_vars = 10000
  • max_execution_time = 300

Dependiendo de tu plan de WordPress, es posible que puedas aumentar estos valores si es necesario. Ponte en contacto con nuestro Equipo de Soporte para saber qué opciones tienes a tu disposición.

Límite de Memoria PHP de Kinsta

El límite de memoria PHP por defecto de Kinsta 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.

Si tu sitio está configurado correctamente en Kinsta, no deberías encontrarte con un error de límite de memoria. Si ves este error, te recomendamos que compruebes la configuración de WordPress para asegurarte de que no se ha establecido accidentalmente a un nivel demasiado bajo.

Si tienes uno de los planes Business de Kinsta y quieres aumentar el límite de memoria PHP de un sitio, puedes comprar un add-on de límite de memoria PHP. El add-on de límite de memoria PHP aumenta el límite de memoria de 256MB a 512MB a un coste de 50$ por sitio al mes.

Para adquirir este add-on, ponte en contacto con el equipo de Gestión de Cuentas a través del chat en directo del Panel de MyKinsta o envíanos un correo electrónico a [email protected]. Actualmente, el add-on sólo está disponible para los clientes del plan Business; si estás en el plan Starter o Pro, necesitarás actualizar a un plan Business para comprar el add-on.

Comprobar y Cambiar tu Límite de Memoria PHP

Para comprobar tu límite actual de memoria PHP para WordPress, accede al panel de WordPress de tu sitio y ve a Herramientas > Salud del sitio.

Ve a la pestaña Información y haz clic en el icono de la flecha situado junto a la sección Servidor para ampliar esta sección y ver tu límite de memoria PHP.

Si el límite de memoria es inferior a 256M, comprueba tu archivo wp-config.php para ver si se ha modificado el WP_MEMORY_LIMIT y ajústalo si es necesario.

Si el límite de memoria es de 256M, pero tienes problemas con la memoria PHP, te recomendamos que compruebes y pruebes plugins y temas. Puedes utilizar un entorno de staging para desactivar y reactivar plugins y temas de forma segura para identificar el origen del uso de memoria.

Si el error persiste y no puedes identificar el origen, puedes abrir un nuevo chat con nuestro equipo de Soporte para comprobar los registros y descartar cualquier problema en el lado del servidor.

Actualizar PHP

Hemos hecho que actualizar la versión PHP de tu sitio sea lo más fácil posible en MyKinsta.

Si tu sitio está listo para actualizar PHP, inicia sesión en MyKinsta y ve a Sitios WordPress > nombre del sitio > Herramientas.

En Motor PHP, haz clic en el desplegable y selecciona la versión de PHP a la que quieres actualizar tu sitio.

Modifica el botón del motor PHP en MyKinsta.
Modifica el botón del motor PHP en MyKinsta.

En el modal/pop-up Modificar versión PHP que aparece, haz clic en el botón Modificar versión PHP para confirmar el cambio.

Modificar versión PHP.
Modificar versión PHP.

Al final de la actualización, tu motor PHP se reiniciará, y el backend (panel de WordPress) de tu sitio puede estar inactivo durante un par de segundos. El front del sitio permanecerá activo, y los visitantes no experimentarán ningún tiempo de inactividad.

Mientras se ejecuta el proceso de actualización, puedes navegar por otras partes de MyKinsta, pero algunas acciones, como la gestión de la caché, no estarán disponibles hasta que se reinicie el motor PHP.

Una vez completada la actualización (normalmente en 3 minutos o menos), recibirás una notificación en MyKinsta indicando que ha finalizado.

Módulos PHP

Los siguientes módulos PHP están instalados por defecto en tu sitio WordPress en Kinsta:

  • bcmath
  • bz2
  • calendar
  • Cor
  • ctype
  • curl
  • date
  • dom
  • exif
  • FFI
  • fileinfo
  • filtro
  • ftp
  • gd
  • gettext
  • hash
  • iconv
  • igbinario
  • imagick
  • imap
  • intl
  • json
  • libxml
  • mbstring
  • mysqli
  • mysqlnd
  • openssl
  • pcntl
  • pcre
  • PDO
  • pdo_mysql
  • Phar
  • posix
  • readline
  • redis
  • Reflection
  • session
  • shmop
  • SimpleXML
  • soap
  • sockets
  • sodium
  • SPL
  • standard
  • sysvmsg
  • sysvsem
  • sysvshm
  • tokenizer
  • xml
  • xmlreader
  • xmlwriter
  • xsl
  • Zend OPcache
  • zip zlib

ionCube no está instalado por defecto, pero puede activarse si tu sitio ejecuta PHP 8.1 en MyKinsta > Sitios WordPress > nombre del sitio > Herramientas > Cargador ion Cube > Activar.

Si tienes preguntas sobre un módulo PHP específico no incluido en la lista anterior, ponte en contacto con el Equipo de Soporte de Kinsta.