가상 머신 또는 물리적 머신인지 여부는 중요하지 않으며 해당 설정은 항상 변경 가능합니다.
3 가지 방법을 보여 드리겠습니다.
사전 정보 :
1) 가능하면 루트로 실행하는 것이 좋습니다.
2) 유닉스의 / proc 는 실제 파일 시스템이 아니며, 인 메모리 커널 파일 시스템이지만 일반적인 디스크 파일 시스템처럼 보입니다. 파일을 '가짜 파일 시스템'또는 '특수 파일 시스템'이라고 부를 수 있습니다. 가짜 파일은 vi 나 다른 편집기로 편집 할 수 없습니다. 파일이 아니기 때문에 파일처럼 보입니다. 나는 몇 년 전에 같은 문제를 겪었다.
그러나 값을 변경하는 것은 간단합니다. 편집하려면 다른 종류의 '역학'이 필요합니다.
먼저 설명하겠습니다 : 먼저 루트 여야합니다 : (sudo는 일부 배포판에서 작동하지만 시도한 것과 같은 다른 배포판에서는 작동하지 않습니다.이 첫 번째 방법은 보편적이며 모든 Linux, macOS 또는 모든 Unix 기반에서 작동합니다 루트 암호에 액세스 할 수 있기를 바랍니다.
프롬프트에서 진행하십시오 :
$ su root
루트 비밀번호를 입력하십시오.
이제 루트입니다. / proc / sys / vm / max_map_count 의 현재 값을 확인하십시오.
$ cat /proc/sys/vm/max_map_count
65536
바꾸자 :
echo 262144 > /proc/sys/vm/max_map_count
확인하자 :
cat /proc/sys/vm/max_map_count
262144
끝났다! 그리고 그것은 이미 적용되고 기능적입니다. / proc 아래의 의사 파일 값을 변경하면 설정이 즉시 활성화됩니다. 그러나 재부팅 후에도 지속되지 않습니다. elasticsearh 또는 기타 응용 프로그램 또는 시스템 메트릭 에서 값을 사용하여 성능 변화를 측정 할 수 있습니다 . 시스템을 조정하고 종이에 값을 쓰고 최상의 값을 유지하십시오. 실수로 재부팅하면 재부팅하면 모두 원래 값으로 돌아가고 원하는 값이 모두 최적화 될 때까지 다시 시작합니다. / proc에는 많은 디스크 및 메모리 조정 가능 매개 변수가 있습니다. 그리고 잘 튜닝하고 시간을 내면 큰 차이와 성능을 얻을 수 있습니다. 당신은 올바른 길을 가고 있습니다.
만족하면 영구적으로 만들어 봅시다 :
첫 번째 방법 :
/etc/rc.local 사용
vi /etc/rc.local
모든 매개 변수를 rc.local 파일에 넣으십시오 (예 :
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
vi 편집기를 종료하여 파일을 저장하십시오.
로그인 메시지가 표시되기 직전에 모든 초기화 서비스가 시작된 후 재부팅 할 때마다 해당 매개 변수가 설정됩니다.
( /etc/rc.local 파일은 모든 시작 Linux 서비스 후에 실행되며, Elasticsearch가 서비스로 시작되기 전에 작동하지 않을 수 있지만이 방법은 나중에 필요할 경우 다른 설정에서 유용하거나 다음과 같이 사용할 수 있습니다 init 스크립트는 루트로 실행되므로 init 스크립트 내에서 사용하는 것과 동일한 구문입니다.)
지금 복사하여 붙여 넣어 즉시 변경할 수도 있습니다. 위의 매개 변수는 내 Apache Apache 서버에서 유효하고 조정되어 실행 중입니다. 원하는 경우 시작점으로 조정하여 조정하십시오.
그것들을 영구적으로 만드는 두 번째 방법 :
리눅스에서 시작 서비스 전에 매개 변수가 설정됩니다.
/etc/sysctl.conf를 편집하고 내부에 매개 변수를 넣습니다.
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
다른 것들과 계속 진행하고 /etc/sysctl.conf를 저장하고 , 서버를 재부팅하여 변경 사항을 적용하거나, sysctl -p 를 실행 하여 재부팅하지 않고 변경 사항을 적용하십시오. 재부팅시 영구적으로 유지됩니다.
위의 두 가지 방법이 가장 많이 사용됩니다. 다른 하나가 있으며, 그것은 당신을 위해 효과가있을 수 있습니다 . 거의하고있는 것처럼 sudo 를 사용 하는 것입니다.
대신에:
sudo sysctl -w vm.max_map_count=262144
시험:
echo 262144 | sudo tee /proc/sys/vm/max_map_count
우분투에서 작동합니다.
확인:
user@naos:~$ cat /proc/sys/vm/max_map_count
262144
적어도 1 년 전의 질문이므로 문제를 처리 할 수있는 3 가지 옵션을 제공하여 어쨌든 도움이되기를 바랍니다.)
감사합니다, 라파엘 프라도