{"id":20986,"date":"2026-08-25T11:50:02","date_gmt":"2026-08-25T09:50:02","guid":{"rendered":"https:\/\/webhosting.de\/php-fpm-slowlog-richtig-auswerten-performance-optimierung-debugging-analyse\/"},"modified":"2026-08-25T11:50:02","modified_gmt":"2026-08-25T09:50:02","slug":"como-interpretar-correctamente-el-archivo-slowlog-de-php-fpm-optimizacion-del-rendimiento-depuracion-y-analisis","status":"publish","type":"post","link":"https:\/\/webhosting.de\/es\/php-fpm-slowlog-richtig-auswerten-performance-optimierung-debugging-analyse\/","title":{"rendered":"C\u00f3mo analizar correctamente el \u00abslowlog\u00bb de PHP-FPM: c\u00f3mo detectar con seguridad los cuellos de botella en el rendimiento"},"content":{"rendered":"<p>Te voy a ense\u00f1ar c\u00f3mo... <strong>Registro de operaciones lentas de PHP-FPM<\/strong> analizas de forma espec\u00edfica, interpretas correctamente los backtraces y deduces a partir de ellos pasos claros para reducir la latencia. De este modo, podr\u00e1s detectar de forma fiable los cuellos de botella en el rendimiento, priorizar las medidas y acelerar de forma perceptible los tiempos de carga para los usuarios.<\/p>\n\n<h2>Puntos centrales<\/h2>\n\n<ul>\n  <li><strong>Backtrace<\/strong> Leer: El marco #0 muestra la pastilla de freno actual.<\/li>\n  <li><strong>Tiempo de espera<\/strong> Opciones: empezar por un nivel alto y luego ir baj\u00e1ndolo poco a poco.<\/li>\n  <li><strong>Correlaci\u00f3n<\/strong> Con el registro de acceso: identificar con seguridad las URL lentas.<\/li>\n  <li><strong>Muestra<\/strong> Contar: dar prioridad a las funciones recurrentes.<\/li>\n  <li><strong>Correcciones en el c\u00f3digo<\/strong> Derivar: abordar de forma espec\u00edfica las bases de datos, las API, los bucles y los complementos.<\/li>\n<\/ul>\n\n<h2>\u00bfQu\u00e9 es el \u00abslowlog\u00bb de PHP-FPM?<\/h2>\n\n<p>El Slowlog registra, para las solicitudes largas, un <strong>Backtrace<\/strong> en un archivo de registro y, de este modo, registra el punto de ejecuci\u00f3n actual sin interrumpir la solicitud. As\u00ed puedo identificar de inmediato qu\u00e9 script, qu\u00e9 URL y qu\u00e9 funci\u00f3n est\u00e1n bloqueando el proceso. Las entradas incluyen la marca de tiempo, el pool, el nombre del archivo del script, la URI de la solicitud y la cadena de llamadas a funciones. Esto diferencia claramente el slowlog de los registros de errores cl\u00e1sicos, ya que documenta el rendimiento, no los errores. En el caso de p\u00e1ginas con gran carga, como los backends de WordPress, proporciona indicaciones r\u00e1pidamente aprovechables sobre consultas costosas, renderizados excesivos u operaciones de E\/S que provocan bloqueos. Quien comprenda estas instant\u00e1neas podr\u00e1 resolver muy r\u00e1pidamente los <strong>Causa principal<\/strong> delimitar y planificar medidas.<\/p>\n\n<h2>As\u00ed funciona el Slowlog en el d\u00eda a d\u00eda<\/h2>\n\n<p>Una vez activado, PHP-FPM registra un <strong>Instant\u00e1nea<\/strong> de la pila en el registro, mientras la solicitud sigue en curso. Cada entrada suele comenzar por \u201e#0\u201c, es decir, en el punto en el que se est\u00e1 perdiendo tiempo. Entre los bloques suelo detectar l\u00edneas en blanco, lo que facilita la separaci\u00f3n de los eventos. Este m\u00e9todo proporciona muestras aleatorias en lugar de perfiles completos, pero a cambio ofrece indicaciones precisas sobre los verdaderos cuellos de botella, como rutas de plantillas complejas, hooks hu\u00e9rfanos o llamadas de red lentas. En fases de gran actividad, relaciono estas indicaciones con los picos de carga y, de este modo, clasifico claramente los fragmentos de c\u00f3digo. En cuanto detecto patrones recurrentes, ajusto, por ejemplo, <strong>pm.max_hijos<\/strong> y utiliza para ello la informaci\u00f3n de <a href=\"https:\/\/webhosting.de\/es\/php-fpm-gestion-de-procesos-pm-max-children-optimizar-nucleo\/\">Configurar correctamente el valor de pm.max_children<\/a>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/php-slowlog-analyse-6392.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Activar y configurar Slowlog<\/h2>\n\n<p>Activo la funci\u00f3n en el pool correspondiente y configuro la ruta, el tiempo de espera y la profundidad del rastreo, para que la <strong>Evaluaci\u00f3n<\/strong> siga siendo manejable. A continuaci\u00f3n, reinicio PHP-FPM y compruebo si el archivo de registro es escribible con los permisos del usuario del pool. Como valor inicial suelo establecer 5 segundos, para detectar primero los picos m\u00e1s evidentes sin saturar el sistema con datos de registro. A continuaci\u00f3n, reduzco el valor gradualmente, una vez que se han solucionado los problemas m\u00e1s graves. Para que los registros sean manejables, limito la profundidad de rastreo a entre 20 y 30 fotogramas, lo que suele ser suficiente en la pr\u00e1ctica. De este modo, mantengo la <strong>Tama\u00f1o del archivo<\/strong> bajo control y no me pierda ning\u00fan detalle relevante.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Configuraci\u00f3n<\/th>\n      <th>Prop\u00f3sito<\/th>\n      <th>valor inicial<\/th>\n      <th>Notas<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><code>slowlog<\/code><\/td>\n      <td>Ruta al archivo de registro<\/td>\n      <td>\/var\/log\/php-fpm\/www-slow.log<\/td>\n      <td>Comprueba las rutas seg\u00fan la distribuci\u00f3n; derechos de escritura para <strong>www-data<\/strong> garantizar<\/td>\n    <\/tr>\n    <tr>\n      <td><code>request_slowlog_timeout<\/code><\/td>\n      <td>Umbral para \u201elento\u201c<\/td>\n      <td>5 s<\/td>\n      <td>Empezar fuerte y luego... <strong>bajar<\/strong> (p. ej., 2-3 s)<\/td>\n    <\/tr>\n    <tr>\n      <td><code>request_slowlog_trace_depth<\/code><\/td>\n      <td>Profundidad m\u00e1xima del backtrace<\/td>\n      <td>20\u201330<\/td>\n      <td>Mant\u00e9n las trazas legibles, sin <strong>Informaci\u00f3n esencial<\/strong> perder<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Encontrar el archivo de registro y revisarlo r\u00e1pidamente<\/h2>\n\n<p>Primero compruebo las rutas configuradas y abro el archivo de registro con <strong>menos<\/strong> o comprueba las \u00faltimas l\u00edneas con <code>tail -40<\/code>. As\u00ed puedo ver de inmediato si llegan entradas y qu\u00e9 scripts se repiten con frecuencia. Para orientarme r\u00e1pidamente, presto atenci\u00f3n a los nombres de los archivos, los pools afectados y las URI que llaman la atenci\u00f3n. Si no encuentro entradas, activo las opciones del grupo, recargo el servicio y compruebo los propietarios y los derechos. En entornos gestionados, adem\u00e1s, consulto el panel o los scripts de inicio para asegurarme de que el slowlog realmente <strong>se mueve al mismo tiempo<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/phpfpm_slowlogs4357.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Reconocer bloques y contar patrones<\/h2>\n\n<p>Cada entrada aparece como un bloque, a menudo separada por una <strong>L\u00ednea en blanco<\/strong>, lo que facilita el recuento. Me gu\u00edo por las l\u00edneas \u201e#0\u201c, ya que marcan el punto de ejecuci\u00f3n actual en el que se pierde tiempo. Mediante sencillas tuber\u00edas de shell, filtro las funciones principales y veo qu\u00e9 puntos ralentizan el proceso con mayor frecuencia. De este modo, priorizo de forma espec\u00edfica las funciones que, en conjunto, consumen m\u00e1s tiempo. A continuaci\u00f3n, compruebo si estos puntos cr\u00edticos solo se producen en picos de carga o si causan problemas de forma constante. Esta clasificaci\u00f3n determina la <strong>Secuencia<\/strong> mis medidas.<\/p>\n\n<h2>Leer entradas: desde el fotograma #0 hasta el inicio<\/h2>\n\n<p>Al leer las entradas, empiezo por la primera, que est\u00e1 arriba, en <strong>#0<\/strong> y voy bajando paso a paso para entender el recorrido desde el punto de entrada hasta la posici\u00f3n actual. Las cadenas largas de plantillas indican un renderizado complejo, muchos hooks apuntan a un exceso de plugins y una alta proporci\u00f3n de SQL sugiere la falta de \u00edndices. Anoto los n\u00fameros de l\u00ednea, los nombres de las funciones y las rutas de los archivos para poder encontrar el c\u00f3digo r\u00e1pidamente. Si la pila parece contener bucles de espera u operaciones repetidas, compruebo la memoria intermedia y el almacenamiento en cach\u00e9. As\u00ed no pierdo tiempo en la <strong>Localizaci\u00f3n<\/strong> del problema en el c\u00f3digo.<\/p>\n\n<h2>Correlacionar el slowlog con los registros de acceso<\/h2>\n\n<p>Vinculo el Slowlog con los registros del servidor web para poder identificar las peticiones lentas de una <strong>URL<\/strong> puedo asignar. Mediante las marcas de tiempo y, opcionalmente, los PID, encuentro las entradas correspondientes en los registros de Nginx o Apache. De este modo, identifico par\u00e1metros, agentes de usuario y tiempos de respuesta fuera de PHP. Si aparecen visitantes recurrentes o cadenas de consulta id\u00e9nticas, inicio una prueba con precisamente esos escenarios. De este modo, encuentro r\u00e1pidamente casos reproducibles y mantengo la <strong>Tiempo de an\u00e1lisis<\/strong> En resumen.<\/p>\n\n<h2>Reducir el valor umbral de forma iterativa<\/h2>\n\n<p>Empiezo con un umbral generoso y, en primer lugar, soluciono los problemas m\u00e1s graves <strong>Valores at\u00edpicos<\/strong> y luego lo reduzco por etapas. Este proceso reduce el volumen de registros y canaliza mi energ\u00eda hacia las correcciones que realmente merecen la pena. Tras cada ronda de optimizaci\u00f3n, elijo un umbral m\u00e1s bajo y vuelvo a recopilar registros. De este modo, voy avanzando desde un ajuste general hasta un ajuste fino, sin perderme en el ruido. El resultado son ajustes espec\u00edficos y una <strong>borrar<\/strong> Visi\u00f3n general de los cuellos de botella restantes.<\/p>\n\n<h2>Del \u00abslowlog\u00bb a la soluci\u00f3n: soluciones t\u00edpicas<\/h2>\n\n<p>Si el marco superior muestra funciones de la base de datos, compruebo las sentencias SQL con <strong>EXPLICAR<\/strong>, a\u00f1ado los \u00edndices que faltan y limito los conjuntos de resultados. En el caso de los servicios remotos, reduzco los tiempos de espera, proceso las respuestas de forma as\u00edncrona o almaceno los resultados en cach\u00e9. Si encuentro bucles que consumen muchos recursos, simplifico la l\u00f3gica, reduzco el n\u00famero de pasadas y utilizo estructuras m\u00e1s eficientes. En WordPress, identifico los hooks recurrentes, sustituyo las extensiones pesadas y opto por un tema m\u00e1s ligero. Si el n\u00famero de procesos PHP bloquea la ejecuci\u00f3n, vigilo los tiempos de espera y, como complemento a <strong>Trazas de retroceso<\/strong> tambi\u00e9n las colas, por ejemplo, a trav\u00e9s de <a href=\"https:\/\/webhosting.de\/es\/php-request-queueing-max-children-processing-limits-performance\/\">Cola de solicitudes de PHP<\/a>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/PHP-FPM-Slowlog-Analyse-4958.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Funcionamiento continuo: gesti\u00f3n eficaz de los registros<\/h2>\n\n<p>No mantengo el registro al m\u00e1ximo de forma permanente, para que el <strong>Carga de E\/S<\/strong> se mantenga bajo control. En su lugar, trabajo por fases: eval\u00fao activamente, optimizo y luego vuelvo a un nivel moderado. Con Logrotate mantengo los archivos ligeros y archivo los datos antiguos comprimidos. Una vez finalizado un an\u00e1lisis, elevo el umbral o desactivo temporalmente el slowlogging. Adem\u00e1s, documento las conclusiones y las correcciones para que las auditor\u00edas posteriores tengan una visi\u00f3n clara <strong>huella<\/strong> encontrar.<\/p>\n\n<h2>Diagn\u00f3stico de alojamiento: diferenciar entre el servidor y la aplicaci\u00f3n<\/h2>\n\n<p>La presencia de muchos fotogramas Slowlog id\u00e9nticos con una elevada carga de la CPU apunta a <strong>C\u00f3digo de aplicaci\u00f3n<\/strong>, mientras que la ausencia de entradas en el lado del servidor suele indicar problemas de E\/S, de red o del servidor de la base de datos. En esos casos, comparo el TTFB, los tiempos de PHP y la latencia de upstream para localizar el cuello de botella. Si observo colas y tiempos de espera elevados antes de la ejecuci\u00f3n, compruebo los l\u00edmites y el n\u00famero de procesos. Para ello, complemento mi diagn\u00f3stico con informaci\u00f3n sobre la tramitaci\u00f3n de las solicitudes y tengo en cuenta los posibles l\u00edmites que ralentizan el procesamiento. Para obtener una valoraci\u00f3n fundamentada, adem\u00e1s de los registros, consulto tambi\u00e9n las indicaciones sobre <a href=\"https:\/\/webhosting.de\/es\/php-fpm-gestion-de-procesos-pm-max-children-optimizar-nucleo\/\">Configurar correctamente el valor de pm.max_children<\/a> o art\u00edculos relacionados con los tiempos de espera, para que pueda... <strong>Capacidad<\/strong> lo coordine de forma adecuada.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/phpfpm_slowlog_analysis_4732.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Ejemplo pr\u00e1ctico: backend de WordPress lento<\/h2>\n\n<p>He puesto <strong>request_slowlog_timeout<\/strong> En primer lugar, lo configuro en 5 segundos, reinicio PHP-FPM y recopilo datos durante entre 30 y 60 minutos bajo carga real. A continuaci\u00f3n, cuento las funciones \u201e#0\u201c m\u00e1s frecuentes y busco hooks recurrentes o llamadas costosas a WP_Query. Si intervienen servicios externos, mido los tiempos de respuesta y almaceno en cach\u00e9 los resultados de forma selectiva. Si las visitas a las p\u00e1ginas se ven ralentizadas por accesos de sesi\u00f3n, compruebo el comportamiento de bloqueo y, si es posible, elimino del camino cr\u00edtico las tareas relacionadas con la sesi\u00f3n. Especialmente en el caso de los inicios de sesi\u00f3n y las acciones de administraci\u00f3n, pruebo la configuraci\u00f3n y desactivo las notificaciones. <a href=\"https:\/\/webhosting.de\/es\/php-bloqueo-de-sesion-wordpress-inicio-de-sesion-lento-optimizacion-serverfix\/\">Bloqueo de sesi\u00f3n PHP<\/a> para que mi <strong>Backend<\/strong> reacciona m\u00e1s r\u00e1pido.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/server-analyse-php-4782.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Dise\u00f1o de la base de datos y derechos: una base s\u00f3lida para obtener \u00abslowlogs\u00bb aprovechables<\/h2>\n<p>Separo las aplicaciones en sus propias <strong>piscinas<\/strong> con nombres claros (por ejemplo, www, admin, api), establece <code>escuchar<\/code>-Z\u00f3calos y personalizados <code>slowlog<\/code>-Rutas. As\u00ed me resulta m\u00e1s f\u00e1cil relacionar las entradas y evito que se mezclen. Es importante que sean coherentes <strong>Derechos de archivo<\/strong>: El usuario del pool (a menudo www-data) necesita permisos de escritura en la ruta de los registros y en el directorio. En configuraciones con contenedores o chroot, compruebo si las rutas existen en el espacio de nombres y si son persistentes; de lo contrario, los registros desaparecer\u00e1n al reiniciar el sistema.<\/p>\n\n<h2>Leer un bloque de Slowlog en detalle y analizarlo autom\u00e1ticamente<\/h2>\n<p>Normalmente, las entradas comienzan con la marca de tiempo, el pool, el nombre del archivo de script y el URI de la solicitud, seguidos de los fotogramas. Cuento las l\u00edneas \u201e#0\u201c y las agrupo por nombre de funci\u00f3n para identificar los puntos cr\u00edticos. Con sencillas tuber\u00edas extraigo los \u00abfrenos\u00bb:<\/p>\n<pre><code>grep -E \"^#0|request.uri|script_filename\" \/var\/log\/php-fpm\/www-slow.log | sed 's\/  *\/ \/g'\n<\/code><\/pre>\n<p>O bien, voy a enumerar los fotogramas m\u00e1s frecuentes:<\/p>\n<pre><code>grep \"^#0\" \/var\/log\/php-fpm\/www-slow.log | awk -F\": \" '{print $2}' | awk '{print $1}' | sort | uniq -c | sort -nr | head\n<\/code><\/pre>\n<p>Si quiero incluir la URL y el archivo, preparo los bloques mediante <code>awk<\/code> y anota las combinaciones m\u00e1s importantes de funci\u00f3n, URI y script. As\u00ed es como priorizo las correcciones que aportan m\u00e1s beneficios.<\/p>\n\n<h2>Mapa de tiempos de espera: c\u00f3mo interact\u00faan Slowlog, PHP y el servidor web<\/h2>\n<p>Para establecer un diagn\u00f3stico preciso, prescribo <strong>todos<\/strong> Tiempos de espera: <code>request_slowlog_timeout<\/code> activa la instant\u00e1nea, <code>tiempo_de_ejecuci\u00f3n_m\u00e1ximo<\/code> limita el tiempo de ejecuci\u00f3n de PHP en el script, <code>request_terminate_timeout<\/code> puede cerrar el FPM-Worker de forma forzada. En el lado del servidor web, se aplican <em>fastcgi<\/em>\u2013 o bien. <em>proxy<\/em>-Tiempos de espera (p. ej.,. <code>fastcgi_read_timeout<\/code>) y los tiempos de espera del cliente. Si configuro el slowlog <em>por encima<\/em> Si se agota el tiempo de espera del servidor, se pierden datos; si se agota <em>entre ellos<\/em>, obtengo instant\u00e1neas \u00fatiles antes de que se interrumpan las solicitudes. Por eso mantengo este orden a prop\u00f3sito: tiempo de espera del servidor web &gt; finalizaci\u00f3n de PHP &gt; slowlog &gt; latencia del destino.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/php-fpm-slow-logs-analysis-7125.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Incorporar el estado de FPM, la cola y la gesti\u00f3n de procesos<\/h2>\n<p>El Slowlog muestra que, <em>donde<\/em> Se est\u00e1 malgastando tiempo: el estado del FPM revela que, <em>por qu\u00e9<\/em> Hay solicitudes en espera. Activo el punto final de estado y observo <strong>inactivo<\/strong>, <strong>activo<\/strong> y <strong>cola de escucha<\/strong> y lo comparo con las marcas de tiempo del slowlog. Si la cola crece mientras muchos trabajadores se quedan atascados en las mismas funciones, el cuello de botella est\u00e1 en el c\u00f3digo; si la cola aumenta sin que crezca el slowlog, es que falta capacidad o hay un obst\u00e1culo en la fase anterior. Partiendo de ah\u00ed, ajusto <code>pm<\/code>-Configuraci\u00f3n (din\u00e1mica\/bajo demanda), <code>pm.max_hijos<\/code> y, si procede,. <code>pm.max_requests<\/code>, para detectar fugas de memoria o fragmentaci\u00f3n.<\/p>\n\n<h2>Caracter\u00edsticas especiales en contenedores y entornos gestionados<\/h2>\n<p>En Docker\/Kubernetes, FPM suele registrar los mensajes en <strong>stdout\/stderr<\/strong> o en rutas que recogen los agregadores de registros. Me decanto deliberadamente por un <em>a<\/em> Eliminarlas, para que no haya entradas duplicadas ni que falten. Con <code>error_log = \/proc\/self\/fd\/2<\/code> y un <code>slowlog<\/code>-En las rutas que apuntan a un volumen persistente, las instant\u00e1neas siguen estando disponibles. En entornos gestionados, compruebo si el proveedor de alojamiento tiene activados o restringidos los registros de actividad (slowlogs) y ajusto los intervalos para no entrar en conflicto con las rotaciones.<\/p>\n\n<h2>Protecci\u00f3n de datos y seguridad: registros sin riesgo<\/h2>\n<p>Los backtraces pueden contener informaci\u00f3n confidencial <strong>Par\u00e1metros<\/strong>, que contengan rutas de archivos o identificadores de sesi\u00f3n. Minimizo los riesgos guardando las cadenas de consulta en los registros de acceso, desactivando las salidas de depuraci\u00f3n en el c\u00f3digo y limitando al m\u00ednimo el n\u00famero de personas con permiso de lectura. Para el intercambio con terceros, anonimizo las rutas y elimino los tokens. En entornos de producci\u00f3n, establezco plazos de conservaci\u00f3n breves y aplico la rotaci\u00f3n y la compresi\u00f3n de registros en todo el sistema.<\/p>\n\n<h2>WordPress: c\u00f3mo detectar r\u00e1pidamente patrones recurrentes<\/h2>\n<ul>\n  <li><strong>WP_Query\/WP_Meta_Query<\/strong>: Faltan \u00edndices en <code>postmeta<\/code> O bien, si se filtra por campos no indexados, el tiempo de ejecuci\u00f3n se dispara. Reduzco las metaconsultas, utilizo taxonom\u00edas o creo \u00edndices espec\u00edficos.<\/li>\n  <li><strong>Transitorios y cach\u00e9 de objetos<\/strong>: Muchos c\u00e1lculos similares apuntan a la falta de una cach\u00e9 persistente. Activo la cach\u00e9 de objetos y optimizo las claves de cach\u00e9 y los TTL.<\/li>\n  <li><strong>Hooks\/Filtros<\/strong>: Las cadenas largas en la pila indican que hay plugins innecesarios. Analizo los hooks m\u00e1s pesados y elimino o sustituyo extensiones.<\/li>\n  <li><strong>Peticiones HTTP<\/strong>: Las llamadas internas a la API (wp_remote_get) deben utilizar tiempos de espera, keep-alive y almacenamiento en cach\u00e9; si es posible, las respuestas no deben bloquear el hilo de la solicitud.<\/li>\n  <li><strong>Representaci\u00f3n de plantillas<\/strong>: Profundidad <code>get_template_part<\/code>- Las cascadas con accesos a archivos se benefician del almacenamiento en cach\u00e9 y de una menor fragmentaci\u00f3n.<\/li>\n<\/ul>\n\n<h2>Evitar malinterpretaciones: lo que el Slowlog no muestra<\/h2>\n<p>La instant\u00e1nea es una <strong>Instant\u00e1nea<\/strong>. No describe toda la duraci\u00f3n de la solicitud, sino su estado en el momento en que se activa. Errores habituales:<\/p>\n<ul>\n  <li><strong>Sesgo de muestreo<\/strong>: Las rutas poco frecuentes, pero extremadamente caras, pueden perderse si el tiempo de espera es demasiado corto o si la fase ha sido breve.<\/li>\n  <li><strong>Llamadas al sistema que bloquean<\/strong>: <code>fopen<\/code>, <code>stat<\/code> o las consultas DNS aparecen como funciones de PHP, pero el tiempo de espera real se produce en el n\u00facleo o en la red.<\/li>\n  <li><strong>Carga autom\u00e1tica<\/strong>: Muchos archivos \u00abinclude\u00bb peque\u00f1os sin Opcache provocan p\u00e9rdidas dispersas que parecen inofensivas en la pila. Echar un vistazo a la tasa de aciertos de Opcache ayuda a valorarlo.<\/li>\n<\/ul>\n\n<h2>No perder de vista CLI, Cron y los webhooks<\/h2>\n<p>No todos los problemas de rendimiento se gestionan a trav\u00e9s de FPM. Los m\u00e1s pesados <strong>Cronjobs<\/strong> (por ejemplo, wp-cron), los procesadores de colas o los webhooks bloquean la CPU, las E\/S o la base de datos y, por lo tanto, empeoran indirectamente los tiempos de respuesta. A\u00edslo esa carga en procesos independientes, la programo fuera de las horas punta y compruebo si se ejecuta a trav\u00e9s de HTTP activado por FPM en lugar de la CLI; de lo contrario, se distorsiona la visi\u00f3n del slowlog.<\/p>\n\n<h2>C\u00f3mo aplicar la rotaci\u00f3n de registros en la pr\u00e1ctica<\/h2>\n<p>Para evitar que los slowlogs se acumulen, los renuevo con frecuencia y comprimo los registros antiguos. Una rotaci\u00f3n t\u00edpica conserva unas pocas generaciones, indica a FPM que vuelva a abrirse y evita que se produzcan lagunas. Importante: tras la rotaci\u00f3n, hay que hacer que FPM se vuelva a abrir (HUP), para que las nuevas entradas no se pierdan en el limbo. Ajusto la configuraci\u00f3n concreta en funci\u00f3n del tr\u00e1fico, el tiempo de espera y la profundidad de rastreo.<\/p>\n\n<h2>Lista de comprobaci\u00f3n para obtener resultados r\u00e1pidos<\/h2>\n<ul>\n  <li>Activar Slowlog por grupo, comprobar rutas y permisos.<\/li>\n  <li>Empezar con 5 s, recopilar entradas y contar los fotogramas m\u00e1s importantes.<\/li>\n  <li>Correlacionar con los registros de acceso: marca de tiempo, URI, agente de usuario.<\/li>\n  <li>Comprueba los tiempos de espera del servidor de origen y del servidor web.<\/li>\n  <li>Supervisar el estado de FPM y la cola, <strong>pm<\/strong>-Ajustar los l\u00edmites.<\/li>\n  <li>Solucionar primero los puntos cr\u00edticos: \u00edndices SQL, almacenamiento en cach\u00e9, hooks costosos, E\/S.<\/li>\n  <li>Reducir el tiempo de espera gradualmente y volver a medir.<\/li>\n  <li>Rotar los registros, documentar los hallazgos y realizar un seguimiento de los cambios.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/phpfpm_slowlogs4357.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>En resumen: tu camino hacia un mejor rendimiento<\/h2>\n\n<p>Activo el Slowlog, leo el <strong>Marcos destacados<\/strong>, lo correlaciono con los registros de acceso y soluciono primero los valores at\u00edpicos m\u00e1s importantes. A continuaci\u00f3n, reduzco el umbral, compruebo los patrones recurrentes y aplico correcciones espec\u00edficas en el c\u00f3digo, la configuraci\u00f3n y el almacenamiento en cach\u00e9. Con la rotaci\u00f3n de registros y tiempos de espera moderados, mantengo baja la carga operativa. En el caso de WordPress, me centro en las consultas costosas, los plugins, los hooks y los posibles bloqueos de sesi\u00f3n. As\u00ed es como identifico de forma fiable los verdaderos <strong>Cuellos de botella<\/strong> y ofrece respuestas notablemente m\u00e1s r\u00e1pidas.<\/p>","protected":false},"excerpt":{"rendered":"<p>Aprende a interpretar correctamente el slowlog de PHP-FPM y a analizar en detalle las solicitudes lentas. Con esta gu\u00eda, podr\u00e1s optimizar de forma espec\u00edfica el rendimiento de tu aplicaci\u00f3n PHP: la introducci\u00f3n perfecta a la depuraci\u00f3n eficiente de PHP.<\/p>","protected":false},"author":1,"featured_media":20979,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[780],"tags":[],"class_list":["post-20986","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"97","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"PHP-FPM Slowlog","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"20979","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/20986","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/comments?post=20986"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/20986\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media\/20979"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media?parent=20986"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/categories?post=20986"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/tags?post=20986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}