Si los objetos tirados en el suelo, las invocaciones y los temporizadores terminados que deberían desaparecer no se limpian y se acumulan, el trabajo de cada tick crece cuanto más tiempo lleva encendido el servidor.
Por qué Los objetos del suelo, las invocaciones, los temporizadores vencidos y los datos de grupos vacíos no se borran a tiempo → Efecto Las listas que se recorren en cada tick se alargan día a día → En pantalla Justo después del mantenimiento todo va bien, pero al cabo de unos días ese servidor o esa zona va cada vez más pesado
Responsable principal Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Registrar como métrica el número de entidades por zona y seguir su tendencia, dar a cada entidad una vida útil y un tope de cantidad, limpiar periódicamente.
Cifras de referencia
En un servidor que recorre todas las entidades una vez por tick, si el número de entidades se duplica, el tiempo de tick de esa parte también se duplica.
En el gráfico
Diente de sierra · Entidades por zona, tiempo de tick del servidor
Dónde mirar
Entidades por zona y servidor (objetos del suelo, invocaciones, temporizadores) y tiempo de tick en un periodo más largo que el ciclo de mantenimiento (varias semanas)
Se confirma si
El número de entidades y el tiempo de tick empiezan bajos tras el mantenimiento, suben día a día y caen de golpe en cada mantenimiento o reinicio, una y otra vez, mientras la memoria sobra
Se descarta si
Si el tick no cambia y solo sube la memoria sin parar, apunta a “Fuga de memoria”
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego
Para saber más
Como la fuga de memoria, empeora cuanto más tiempo lleva encendido el servidor, con una diferencia: la memoria sobra y solo crece el tiempo de tick. Si el gráfico del número de entidades tiene forma de diente de sierra al ritmo de los mantenimientos, es este caso.
Fuentes
Actor Ticking in Unreal EngineEpic Games Si no se fija un intervalo, los actores y componentes ejecutan su tick una vez por frame, y se puede desactivar el tick si no hace falta
AActor::SetLifeSpanEpic Games Si se fija una vida útil a un actor, se destruye automáticamente al expirar