es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El juego de mesa por turnos se está congelando.

Tenemos un juego de mesa por turnos y estamos desarrollando la parte backend en Java 1.8.

Tenemos un problema en el juego. A veces nuestro proceso comienza a tardar demasiado, pero no tenemos ninguna solución ni ninguna herramienta para rastrear el problema. Tenemos una máquina con 40 núcleos y funciona con 140 hilos, de los cuales el número de hilos reservados para jugar al juego es 24. Los hilos de juego trabajan de manera activa y concurrente, lo que significa que todos los hilos de juego están en estado RUNNING cuando ocurre el proceso largo. En la situación de proceso largo, nuestro AI de juego calcula cualquier mano en menos de 40 ms, pero cuando ocurre el proceso largo, esta duración llega a ser de 300-400 ms. No hay bloqueos.

Estamos utilizando G1GC como recolector de basura que fue configurado según nuestros requisitos. Tenemos muchos volcados de hilos, pero casi todos son diferentes entre sí. ¿Tienen alguna idea para encontrar una solución o alguna herramienta para darse cuenta de qué situación causa el problema?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en Java, concurrencia y JVM, recomiendo los siguientes pasos para diagnosticar el problema:

    1. Analizar el volcado de hilos para identificar problemas de competencia de hilos o de bloqueo. Esto se puede hacer utilizando herramientas como VisualVM o JConsole.
    2. Utilice una herramienta de perfilado como YourKit o JProfiler para identificar cualquier punto crítico y fugas de memoria en el código. Esto puede proporcionar información sobre dónde está ocurriendo el largo proceso y qué lo está causando.
    3. Verifique los registros en busca de errores, excepciones o advertencias que puedan estar relacionados con el largo proceso. Esto puede ayudar a identificar áreas específicas del código que requieren atención.
    4. Intente aumentar el recuento de hilos u optimizar el código para mejorar el rendimiento. Esto se puede hacer de manera iterativa hasta que se resuelva el problema del largo proceso.

    En general, es importante analizar sistemáticamente el problema utilizando una combinación de herramientas y métodos para identificar la causa raíz del largo proceso y desarrollar una solución efectiva.

Comments are closed.