ya casi está allí, no importa si es una máquina virtual o una máquina física, esa configuración siempre se puede cambiar.
Te mostraré 3 métodos.
Alguna información previa:
1) Es mejor ejecutar como root, si es posible.
2) / proc en Unix no es un sistema de archivos real, es un sistema de archivos kernel en memoria, pero parece ser como un sistema de archivos de disco normal. Puede llamarlo 'sistema de archivos falso' o 'sistema de archivos especial', no puede editar esos archivos falsos con vi o cualquier otro editor, porque no son archivos, solo se ven como archivos. Me quedé con el mismo problema hace años.
Pero es simple cambiar sus valores, solo requiere otro tipo de 'mecánica' para editarlos.
Explicaré: Primero, debe ser root: (sudo funciona en algunas distribuciones, pero no en otras distribuciones como las que probaste, este primer método es universal y funciona en cualquier Linux, macOS o cualquier basado en Unix Espero que tengas acceso a la contraseña de root.
Proceder a la solicitud:
$ su root
Ingrese la contraseña de root.
Ahora que es root, verifiquemos el valor actual de: / proc / sys / vm / max_map_count
$ cat /proc/sys/vm/max_map_count
65536
Vamos a cambiarlo:
echo 262144 > /proc/sys/vm/max_map_count
Vamos a verificar:
cat /proc/sys/vm/max_map_count
262144
¡Se hace! Y ya está aplicado y es funcional. Al cambiar los valores de cualquier pseudoarchivo en / proc, la configuración se activa instantáneamente. Pero no persisten después de un reinicio. Puede jugar con valores y medir cambios de rendimiento en elasticsearh o cualquier otra aplicación o métrica del sistema. Vaya afinando su sistema, escribiendo los valores en algún papel, mantenga los mejores valores. En cualquier error, reinicie y todos volverán a sus valores originales, y comenzarán de nuevo hasta que todos los valores deseados sean óptimos. Hay muchos parámetros ajustables de disco y memoria en / proc. Y hacen una gran diferencia y ganancia de rendimiento si los sintonizas bien (y tienes tiempo para ello). Estás en la dirección correcta.
Cuando esté satisfecho, hagámoslos permanentes:
Primer método:
usando /etc/rc.local
vi /etc/rc.local
ponga todos los parámetros dentro del archivo rc.local, por ejemplo:
echo 220000000 > /proc/sys/vm/dirty_background_bytes
echo 320000000 > /proc/sys/vm/dirty_bytes
echo 0 > /proc/sys/vm/dirty_background_ratio
echo 0 > /proc/sys/vm/dirty_ratio
echo 500 > /proc/sys/vm/dirty_writeback_centisecs
echo 4500 > /proc/sys/vm/dirty_expire_centisecs
echo 1 > /proc/sys/net/ipv4/tcp_rfc1337
echo 10 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo 120 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 0 > /proc/sys/vm/zone_reclaim_mode
echo deadline > /sys/block/sda/queue/scheduler
echo 8 > /sys/class/block/sda/queue/read_ahead_kb
echo 1048575 > /proc/sys/vm/max_map_count
salga del editor vi guardando el archivo.
Esos parámetros se establecerán en cada reinicio, DESPUÉS de que todos los servicios de inicio hayan comenzado, justo antes de que aparezca el mensaje de inicio de sesión.
(El archivo /etc/rc.local se ejecuta después de todos los servicios de inicio de Linux, puede no funcionar si Elasticsearch se inicia antes como un servicio, pero este método puede ser útil en otra configuración si lo necesita en el futuro, o puede usarlo así poniéndolos dentro de su secuencia de comandos de inicio de Elasticsearch, porque la secuencia de comandos de inicio se ejecuta como raíz, por lo que es la misma sintaxis anterior para usar dentro de las secuencias de comandos de inicio)
También puede copiarlos ahora y pegarlos para realizar cambios instantáneos. Los parámetros anteriores son válidos, ajustados y se ejecutan en mi servidor Apache Cassandra. Si lo desea, pruébelos como punto de partida para ajustar el suyo.
Segundo método para hacerlos permanentes:
Los parámetros ahora se establecerán ANTES de cualquier servicio de inicio en Linux.
Edite /etc/sysctl.conf , coloque los parámetros dentro
vm.max_map_count=1048575
vm.zone_reclaim_mode=0
vm.dirty_background_bytes=220000000
vm.dirty_background_ratio=0
vm.dirty_bytes=320000000
vm.dirty_ratio=0
vm.swappiness=10
continúe con los demás, guarde /etc/sysctl.conf , reinicie su servidor para aplicar los cambios o ejecute: sysctl -p para aplicar los cambios sin reiniciar. Serán permanentes durante los reinicios.
Dos métodos anteriores son los más comunes. Hay otro, y puede funcionar para usted, es mediante el uso de sudo , casi como lo estaba haciendo:
en lugar de:
sudo sysctl -w vm.max_map_count=262144
tratar:
echo 262144 | sudo tee /proc/sys/vm/max_map_count
Funciona en ubuntu.
Verificar:
user@naos:~$ cat /proc/sys/vm/max_map_count
262144
Espero haber ayudado de alguna manera, al menos dando las 3 opciones diferentes para tratar el problema, ya que hace casi un año su pregunta;)
Saludos, Rafael Prado