8 votos

¿Por qué el uso de la memoria de mi servidor es tan alto con sólo 5 jugadores conectados?

Recientemente empecé un servidor de Minecraft Linux vainilla (v1.7.2) y he estado teniendo problemas con el uso de alta RAM causando el servidor para desconectar. He asignado un máximo de 3,5 GB.

He reiniciado el servidor hace una hora y lo he estado monitorizando. Me he dado cuenta de que cuando los jugadores se desconectan, el uso de la memoria no se reduce y, a medida que se unen más jugadores, el uso de la memoria simplemente aumenta.

  • Con 5 jugadores conectados, el uso de la RAM es del 63% (2,1 GB).
  • Con sólo 3 jugadores en el servidor, el uso de memoria es del 58,9%.

También estoy recibiendo este error al iniciar el servidor:

Su plataforma no proporciona una API de bajo nivel completa para acceder a los buffers directos de forma fiable. A menos que se solicite explícitamente, siempre se preferirá el búfer de montón para evitar una posible inestabilidad del sistema.

El comando que estoy utilizando para iniciar el servidor es:

java -Xms512M -X3584M -jar minecraft_server.jar

¿Qué podría estar causando el alto uso de memoria y por qué no se reduce cuando el número de jugadores se reduce?

0 votos

¿Vainilla o bukkit? ¿Qué versión está utilizando?

0 votos

100%vanilla, 1.7.2

0 votos

¿Cuál es el comando que utiliza para iniciar el servidor?

7voto

robobenklein Puntos 150

Veo una serie de posibles problemas que pueden ayudar a que tu servidor funcione con menos ram.

PlayerViewDistance

En muchos servidores, incluido el mío, el parámetro ViewDistance del archivo de propiedades de su servidor puede ser demasiado alto. Disminuir este valor hará que se carguen menos trozos para los jugadores, pero si lo estableces demasiado bajo, es decir, por debajo de 3, entonces no podrás ver lo suficientemente lejos para pasar un buen rato jugando.

Esto se soluciona fácilmente disminuyendo el parámetro "view-distance" en el archivo server.properties.

Argumentos de la línea de comandos

Veo un pequeño problema en el que has pegado en tu pregunta:

Java -Xms512M - X3584M -jar minecraft_server.jar

No pude encontrar un argumento de java que sea simplemente 'X', aunque asumo que estás tratando de establecer el límite superior de memoria a 3.5GB. Esto es lo que debería parecer:

Java -Xms512M - Xmx3584M -jar minecraft_server.jar

O una versión aún más sencilla:

Java -Xms512M -Xmx3.5G -jar minecraft_server.jar

Si estás dispuesto a experimentar, baja el límite máximo en 512mb cada vez que se reinicie, y mide cómo se comporta. En algunos casos extraños, puede ver una disminución en la memoria real utilizada.

Utilizar Java 7

Según mi experiencia pasada, en un servidor Ubuntu, la ejecución de un servidor Craftbukkit bajo Java7 en lugar de Java6 utilizó una cantidad notablemente menor de RAM.

Cambiar a Bukkit

Aunque esta puede ser una opción no deseada por usted, definitivamente funciona. Con Craftbukit hay una multitud de plugins disponibles para descargar en http://bukkit.org/ que ayudan a aumentar el rendimiento del servidor y a reducir el uso de recursos.

0voto

MathUser Puntos 35

"Normal" depende de dónde se encuentre cada jugador y de lo que ocurra en los trozos cargados.

Si los jugadores están repartidos, entonces se van a cargar más trozos (obviamente), y habrá que lidiar con más mobs. Además, los artilugios de redstone van a añadir muchas actualizaciones de trozos a tu mundo.

Tienes que entender que su kilometraje puede variar . Algunos pueden vivir con sólo 1,5 GB, y otros van a tener que lidiar con 3 GB. Es posible que no utilices el espacio de intercambio en absoluto, y tu versión de JRE también importa.

Así que sí, 2 GB es lo normal cuando se juega con 5 personas.

-1voto

TiansHUo Puntos 135

Intente añadir una bandera de recolección de basura al final de los argumentos de su JVM

-XX:+DisableExplicitGC

Y aquí hay un par más que son específicamente para Minecraft

XX:+UseConcMarkSweepGC -XX:+UseParNewGC

0 votos

¿Para qué sirven estos argumentos? ¿Hay algún lugar donde pueda leer sobre ellos y cómo utilizarlos?

0 votos

oracle.com/technetwork/java/javase/tech/ Para utilizarlas, añádelas después de tus declaraciones de memoria.

0 votos

Esos argumentos no ayudaron es todavía el uso de una gran cantidad de ram. Me di cuenta de este error al iniciar el servidor: su plataforma no proporciona completa api de bajo nivel para acceder a los búferes directos de forma fiable. A menos que se solicite explícitamente el búfer de la pila siempre se prefiere para evitar la inestabilidad potencial del sistema.

-1voto

Jacob H Puntos 85

El uso de la memoria no disminuye porque el archivo de memoria del jugador todavía está en el servidor siendo almacenado, debido a esto el servidor todavía debe recordar información sobre el jugador para otros plugins (Si los tiene) e incluso si vainilla sólo para el propio servidor para asegurarse de que recuerda dónde estaban, sus artículos, etc. No sé cómo arreglar este problema además de aumentar su memoria. Sólo sé acerca de la memoria como cuando corrí mi propio servidor localmente me encontré con los mismos problemas y se dio cuenta de que cuando se elimina de jugador .dat sería disminuir el uso de la memoria del servidor. También si usted está usando plugins para LogBlock o tal será el uso pesado en el servidor, ya que almacena cada ruptura, lugar, pecho / mobiliario / dispensador /hopper / etc. apertura, y más, esto a su vez crea una gran cantidad de uso de datos. De todos modos espero que esto haya sido de ayuda.

4 votos

Error, un jugador que se desconecta debería provocar la descarga de los chunks que le rodean. El archivo player.dat no se guarda en la RAM del servidor, eso se almacena en el disco duro.

0 votos

Los archivos almacenados en la memoria RAM desaparecen después de un reinicio del sistema por lo que es el ptiof su bot guardar información del jugador allí.

JugonesTop.com

Jugonestop es una comunidad para amantes del gaming. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X