Los Workers PHP procesan el código PHP de un sitio. Esto incluye la creación de páginas, el procesamiento de tareas en segundo plano, la consulta a la base de datos, etc.

Una forma de pensar en los workers PHP es como los empleados de una tienda. Cada trabajador sólo puede atender una petición a la vez. Si hay más clientes que trabajadores, esos clientes (procesos) tienen que hacer cola y esperar al siguiente trabajador disponible para atender su petición.

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

WordPress y los Workers PHP

Una petición sin caché en un sitio de 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 más tiempo y recursos consume (CPU y RAM). Un sitio bien optimizado, con un código PHP y consultas a la base de datos eficientes, procesará ese paso con bastante rapidez.

En cambio, un código PHP mal escrito o no optimizado y/o con muchas consultas ineficientes a la base de datos tardará mucho más en procesar el Paso 4. Las peticiones que tardan más en procesarse acaparan durante más tiempo a los workers PHP.

Estimación del Número de Workers PHP Necesarios

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

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

Workers PHP, CPU y RAM

Al añadir workers PHP, hay que tener en cuenta los recursos de CPU y RAM. Si aumentas los workers PHP, pero el servidor no tiene suficiente CPU y RAM para soportar esos workers, se creará un cuello de botella porque las peticiones no se gestionarán de forma eficiente.

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

Identificar los Problemas de Rendimiento Relacionados con los Workers PHP

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

El uso de herramientas como Kinsta APM y el plugin Query Monitor puede ayudarte a identificar problemas de rendimiento y consultas lentas. También recomendamos trabajar con un experto en rendimiento cualificado para diagnosticar los problemas.

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

El gráfico de límite de workers PHP en las analíticas de MyKinsta te muestra cuántas veces se ha alcanzado el número máximo de trabajadores asignados en tu sitio. Esto puede ayudarte a determinar si tu sitio está utilizando continuamente sus trabajadores PHP y también puede mostrarte cómo puede ayudar la actualización a una versión más reciente del motor PHP.

Límite de workers PHP
Límite de workers PHP

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

Caché - gráfico de componentes de caché
Caché – gráfico de componentes de caché
Caché - top cache bypasses
Caché – top cache bypasses

Reducir y Optimizar el Uso del Workers de PHP

Almacenamiento en Caché

Almacenamiento en Caché de Páginas

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 en caché, así que cachea todo lo que puedas. 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 súper rá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 el almacenamiento en 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 la memoria RAM para que PHP pueda tomar esos resultados sin tener que ejecutar la consulta de nuevo. La eliminación de la necesidad de consultas repetitivas a la base de datos permite a los trabajadores de PHP conservar los 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é de 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 del plugin. 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 algún fragmento de código personalizado en plugins o en tu tema, asegúrate de que es realmente necesario y está bien escrito.

Plugins

Echa un 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 ser 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 con buen rendimiento. Evita los temas que contengan funcionalidades que se implementan mejor a través de 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 el PHP

Utiliza la última versión de PHP para obtener un mayor rendimiento. Los benchmarks 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. Kinsta CDN es nuestra CDN HTTP/3 de alto rendimiento impulsada por Cloudflare, sin coste adicional. Con ella activada, tu sitio podrá servir activos estáticos desde lugares de todo el mundo.

Consulta con un Experto en Rendimiento

Si estás familiarizado con la optimización del sitio, 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.