Linux funciona lento y queda 0 intercambio

Linux funciona lento y queda 0 intercambio

Nuestro servidor Linux responde muy lentamente. topno muestra ningún uso excesivo de la CPU. Me di cuenta de que, aunque hay aproximadamente 5 GB de memoria libre, el sistema está utilizando todo el intercambio y no queda ningún intercambio libre. ¿Podría ser esta la razón por la que el sistema funciona lento? ¿Existe alguna solución además de reducir el número de procesos?

En segundo lugar, aunque hay memoria libre disponible, ¿por qué Linux ya está cambiando? Pensé que el intercambio se usa solo cuando no queda memoria real.

free -m
             total       used       free     shared    buffers     cached
Mem:         32045      26218       5826          0        127        123
-/+ buffers/cache:      25967       6077
Swap:        16387      16387          0

Actualizar:

  • el swapiness está en el nivel predeterminado: 60
  • No creo que sea un sistema numa.
  • Veo un par de procesos de Java ejecutándose con un montón de 8 GB:-Xms8000m -Xmx8000m

Parece una locura a primera vista, pero posiblemente alguien tenía razones para hacer esto. Creo que esto es lo que consume la mayor parte del intercambio, pero necesito investigar más a fondo cómo el montón de Java afecta el intercambio de Linux y la memoria/rendimiento en general. Cualquier sugerencia sobre el impacto de la configuración del montón de Java anterior en el rendimiento del sistema será realmente útil.

Respuesta1

¿Cuántos procesos Java se han inicializado con el montón de 8 GB? Quizás mantenga el máximo en 8 y reduzca el tamaño del montón inicial. Si tiene espacio en disco, experimente aumentando también el tamaño de intercambio

Respuesta2

¿Tienes tmpfsmonturas? Estos están respaldados por swap y pueden ser la causa de que no haya espacio de swap disponible. ¿Hacer syslogo dmesgmostrar algo inesperado? ¿Está seguro de que su sistema no cambia constantemente? Verifique vmstat -SK 1y verifique columnas siy so(páginas intercambiadas de entrada y salida en KB/s). Si necesita saber qué procesos se están intercambiando, ejecute sudo iotop -od5. Si está ejecutando Ubuntu, necesita delayacctel indicador del kernel para obtener estadísticas completas. Para mí, su sistema parece tener caché y búferes realmente pequeños para una memoria de sistema tan grande.

El intercambio se utiliza para mejorar el rendimiento de todo el sistema. Un ejemplo de esto sería intercambiar partes de un programa grande que actualmente está inactivo para permitir usar más memoria para el caché del disco o los buffers de archivos. Si deshabilitara el intercambio en este caso, el sistema tendría efectivamente un caché de disco y búfer de archivos más pequeños. Debido a que su espacio de intercambio está lleno, es posible que sufra el mismo problema.

El espacio de intercambio es especialmente importante si tiene programas que "pierden" memoria (es decir, un programa adquiere bloques de memoria que realmente no se utilizan). Tal "fuga" puede no ser un error en el programa, simplemente puede suceder que la memoria se use tan raramente que sea mejor tratarla como una fuga. Sin espacio de intercambio, dicha memoria perdida no se puede utilizar como caché o búfer.

Un sistema operativo que se ejecuta correctamente con memoria virtual utiliza swap casi siempre, a menos que todo el conjunto de trabajo (todos los archivos a los que se accede, toda la memoria reservada por las aplicaciones y todos los buffers de escritura) quepa completamente en la memoria durante todo el tiempo de ejecución del sistema. En la mayoría de los casos, esto sólo es cierto si el sistema se reinicia constantemente o si el sistema tiene una gran cantidad de RAM en comparación con el tamaño total del sistema de archivos.

información relacionada