En Niche Creator siempre tuvimos el objetivo de que el plugin pudiese ejecutarse incluso en las configuraciones de hosting más modestas, y aunque es cierto que en servidors tipo VPS y dedicados funciona mucho mejor, era un reto que nos habíamos marcado desde el inicio, aunque no exento de problemas.
La forma de conseguir que los procesos pesados como regeneración de categorías, fichas, o escrapeos masivos funciones en servidores compartidos con pocos recursos no es otra que partir todo ese trabajo en tareas más pequeñas que se ejecuten de forma secuencial. De esta forma el tiempo de finalización será mucho mayor, pero a cambio conseguimos una mayor garantía de éxito al utilizar menos recursos a la hora de realizar esos procesos.
Debemos destacar en este punto que una vez terminada la web con sus fichas y categorías creadas realmente no hay ningún proceso que tenga gran exigencia y podemos decir que será igual que cualquier otro sitio web creado en WordPress de forma manual o usando cualquier otra herramienta.
¿Cómo partimos los procesos en Niche Creator?
En general, nos ayudamos de una librería llamada Action Scheduler. Sin entrar en temas técnicos, básicamente partimos un trabajo en pequeños bloques que se ejecutan de fondo en WordPress cuando el servidor tiene recursos para poder hacerlo. Por poner un ejemplo concreto, si lanzamos una regeneración de fichas y tenemos 1000 fichas o negocios, los partimos en bloques de 5 para un total de 200 tareas. En el caso de las categorías, que son procesos incluso más exigentes que las fichas, el lanzamiento es de 2 en 2, por lo que si queremos regenerar 500 categorías estaríamos hablado de 250 tareas de fondo para completar esa regeneración.
VENTAJAS |
INCONVENIENTES |
Menor consumo de recursos |
Gestión más compleja de tareas |
Podemos cerrar WordPress y apagar el ordenador, los procesos se ejecutan en el servidor |
Mayor lentitud de los procesos en ejecución |
Más complicado sufrir bloqueos del servidor |
|
Mayor escalabilidad |
Ahora que entendemos en líneas generales cómo funcionan los procesos de fondo en Niche Creator, es hora de poder ver cómo gestionarlos directamente desde WordPress, de esta forma entenderemos mucho mejor lo que hace el plugin y las posibles soluciones en caso de problemas, que, lamentablemente, siempre pueden existir.
Cómo gestionar las tareas de fondo de Niche Creator
Entramos en harina. Cómo hemos comentado anteriormente, el plugin crea pequeñas tareas cuando lanzamos un proceso. La barra de progreso básicamente nos muestra el avance dichas tareas. Si tenemos un proceso que requiere 5 tareas de fondo, y una de ellas ha terminado, la barra de progreso marcará 20%. No hay más secretos.
Para poder ver las tareas, el propio WordPress dispone de una herramienta estándar llamada Scheduled Actions (Tareas Programadas). Es accesible desde Herramientas -> Scheduled Actions
Bienvenidos a la pantalla principal de las tareas de fondo. Aquí no sólo veremos las creadas por Niche Creator, otros plugins también pueden crear las suyas. En la parte superior, vemos la clasificación principal de las tareas atendiendo a su estado:
- Canceled: tareas canceladas. Son tareas que se habían planificado pero cuya ejecución ni siquera ha comenzado porque se han parado. Es lo que ocurre cuando pinchamos el botón Detener Tareas en cualquier de los procesos de Niche Creator.
- Complete: tareas completadas. Las tareas que han finalizado de forma exitosa. Hay que reseñar que, si por ejemplo lanzamos una regeneración de categorías y en alguna de las partes la llamada a OpenAI u otra API no devuelve resultados, la tarea igualmente se considera completa y no fallida.
- Failed: tareas fallidas. Son las tareas que han dado error. Si, por ejemplo, el servidor se satura y bloquea procesos, las tareas pueden fallar por tiempo máximo de espera. De hecho, esta es la condición más común de fallo.
- Pending: tareas pendientes. Cuando lanzamos un proceso y lo descomponemos en múltiples tareas, estas tareas se van ejecutando de una en una, pero mientras esperan su turno de ejecución están en la sección Pending. Cuando paramos tareas pinchando el botón Detener Tareas en Niche Creator eliminamos todas las que están aquí que automáticamente pasan a Canceled y ya no se ejecutan.
- In Progress: tareas en ejecución. No aparece en la imagen, pero si una tarea se está ejecutando en ese momento aparecerá en la sección In-Progress. La tarea que estuviese en este estado no se cancela automáticamente al pinchar Detener Tareas, hay que esperar a que termine. Por eso en ocasiones parece que al pinchar el botón las tareas no se detienen y el botón no ha hecho nada, pero en realidad lo que ha ocurrido es que todas las tareas pendientes pasan a ser calculadas y ya no se ejecutarán, pero tenemos que esperar a que termine la que está en progreso. En ese momento desaparecerá el botón de detención de tareas. No es recomendable para la tarea en progreso, pero desde esta misma pantalla de WordPress podríamos hacerlo marcando la tarea y seleccionado posteriormente Borrar, con lo que cancelaríamos de forma abrupta y el resultado puede ser inestable.
Errores en la ejecución de procesos
Ya tenemos claro cómo funcionan las tareas de fondo, pero, ¿qué errores nos podemos encontrar?
Debemos tener en cuenta que en un hosting compartido, sobre todo, no tenemos garantía de los recursos disponibles para nuestro sitio web. Puede que en uno de esos servidores haya 5 sitios webs con poco tráfico y movimiento y nuestros procesos se ejecuten muy rápido, pero puede ocurrir que en nuestro sitio compartido haya 15 webs con un gran consumo de recursos por tener mucho tráfico. Incluso puede suceder que otra web de forma puntual consuma recursos porque lanza procesos muy pesados y nuestra asignación sea muy pequeña en ciertos momentos. En un hosting de este tipo no tenemos garantía de CPU o memoria, y aunque los proveedores suelen establecer mecanismos de compartición de esos recursos para evitar su saturación esto es lo que toca. Por eso nosotros siempre recomendamos VPS o servidor dedicado para las webs de Niche Creator, aunque su gestión es algo más compleja y su precio también más caro.
Caso 1: Niche Creator termina pero con errores
Supongamos que hemos lanzado una regeneración que tenía 200 tareas de fondo. Niche Creator llegará al 100% y nos dirá que ha terminado con errores. Si vamos a la herramienta Scheduled Actions podemos ver las tareas que han fallado en la sección Failed (debemos tener cuidado porque puede haber tareas de otros plugins). Si vemos que ha fallado una tarea de las 200 quizás no tenga sentido preocuparse en exceso, ya que prácticamente todos los datos estarán disponibles y en una futura regeneración en todo caso aparecerían. Si tenemos una cantidad de fallos importantes debemos ver qué fallo han dado las tareas. En la parte derecha de cada tarea hay un pequeño log donde nos indica lo que ha sucedido.
El de la imagen es un caso típico de fallo. Se trata de una tarea de tipo cargar_scrape (en Niche Creator todos los tipos de tarea empiezan por cargar_). El tipo cargar_scrape se refiere la carga de datos desde un escrapeo. La tarea recibe una serie de argumentos entre los que se encuentran los parámetros del propio escrapeo, y en la parte de la derecha vemos el Log, que es lo que nos interesa. En este caso la tarea se inició a las 9:29:52 y terminó a las 9:34:53, y fue marcada como errónea después de 300 segundos, es decir terminó de forma inesperada tras pasar 300 segundos normalmente por timeout o saturación del propio servidor.
Como hemos dicho, se tenemos muchas tareas que terminan así debemos plantearnos que algo está ocurriendo en el servidor.
Caso 2: Niche Creator se queda parado durante un gran período de tiempo en el XX %
Este es uno de los problemas más habituales. Supongamos que lanzamos un proceso de regeneración de categorías que nos genera 150 tareas de fondo. En un momento dado de la ejecución (XX %), el servidor detecta que tiene pocos recursos por alguna de las circunstancias mencionadas anteriormente. En ese momento puede decidir que nuestro sitio web ya no puede usar esa CPU o memoria que tenía disponible y "bloquea" su utilización. En función de cómo haga ese bloqueo, la tarea de fondo que en ese momento está en ejecución queda parada a la espera de tener recursos para poder continuar. El bloqueo puede ser más o menos largo en función de decisiones tomadas por el propio servidor del proveedor de hosting. Por esa razón, como nuestra tarea nunca termina vemos que la barra de progreso no avanza. Si en ese momento accedemos a la herramienta Scheduled Actions veremos que hay una tarea en progreso y el resto quedan en pendientes, salvo las que ya hubiesen terminado. En ocasiones, hemos visto tareas que quedaban paradas durante horas y luego proseguían su curso habitual y el resto terminaba a gran celeridad. Otras veces las tareas quedan definitivamente bloqueadas y hay que pararlas manualmente, aquí depende de lo que cada hosting considera oportuno en la gestión de sus recursos.
Caso 3: Niche Creator se queda en el 1% y nos comunica que hay errores
En realidad, esta no deja de ser una variación del caso 2, sólo que realmente no llega a lanzarse ninguna tarea de fondo porque la saturación aparece desde el primer momento.
¿Cómo podemos solucionas los errores en las tareas de fondo?
Normalmente hay poco que esté en nuestra mano en servidores compartidos donde no controlamos los recursos, pero podemos probar algunas cosas que pueden tener su utilidad.
- Para empezar, nos hemos encontrado instalaciones WordPress con 25 plugins o más, algunos de ellos solapándose en funciones. A nosotros también nos gustan los plugins, pero desde el punto de vista de rendimiento tenemos que entender que un servidor web no deja de ser un ordenador más o menos potente, y que cuantos más plugins ejecutemos más lento va a ir y más saturación de recursos se va a producir. Si tienes problemas puedes empezar por aquí desactivando o desinstalando los que no necesites.
- Plugins concretos pueden generar problemas en la ejecución de tareas de fondo. No sólo Niche Creator usa las tareas de fondo, también otros muchos como Rank Math, Woocommerce,etc, las usan. En alguna ocasión nos hemos encontrado con que MailPoet (plugin para mail marketing) generaba tal cantidad de tareas de fondo programadas cada minuto que saturaba todo el circuito de programación generando una especie de bucle. Puedes comprobar en Scheduled Actions si tienes algún plugin que haga algo similar, y dado el caso desactivarlo de forma provisional para ver si se resuelve el problema.
- Desactivar caché de objetos durante el lanzamiento de procesos de regeneración. Nos hemos encontrado que si bien es muy útil durante el curso normal de un sitio web, en realidad nosotros implementamos mecanismos propios de caché en Niche Creator y la propia caché de objetos que incorporan algunos plugins de rendimiento suele ser contraproducente, por lo que la mejor opción es tenerla desactivada para lanzar esos procesos y activarla una vez la web esté ya en marcha.
El proceso manual
En cualquier caso, si estamos atascados con tareas que no terminan, lo mejor en un momento dado puede ser borrar las tareas, bien a través del botón Detener Tareas del plugin, bien directamente desde Scheduled Actions seleccionando las tareas y pinchando en Borrar.
Conclusiones
Como hemos visto la gestión de tareas de fondo tiene una complejidad relativamente grande. En este artículo hemos querido daros unas pinceladas sobre cómo funciona el sistema y pautas a seguir cuando se producen errores. No hay soluciones mágicas, pero en cierta medida podremos resolver problemas aplicando las recomendaciones aquí expuestas. En todo caso, recordad que los recursos son finitos y debemos cuidarlos.