仮想マシンか物理マシンかは関係ありません。これらの設定は常に変更可能です。
3つの方法を示します。
いくつかの事前情報:
1)可能であれば、ルートとして実行することをお勧めします。
2)unixの/ procは実際のファイルシステムではなく、メモリ内カーネルファイルシステムですが、通常のディスクファイルシステムのように見えます。あなたはそれを「偽のファイルシステム」または「特別なファイルシステム」と呼ぶことができます。これらの偽のファイルはviや他のエディタで編集することはできません。私は何年も前に同じ問題を抱えていました。
しかし、それらの値を変更するのは簡単で、それらを編集するには別の種類の「メカニクス」が必要です。
説明します:最初に、rootになる必要があります:(sudoはいくつかのディストリビューションで動作しますが、あなたが試したような他のいくつかのディストリビューションでは動作しません。この最初の方法は、Linux、macOS、またはUnixベース。rootパスワードにアクセスできることを願っています。
プロンプトで続行します。
$ 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エディターを終了します。
これらのパラメータは、ログインプロンプトが表示される直前に、すべてのinitサービスが開始された後、再起動するたびに設定されます。
(/etc/rc.localファイルはすべてのスタートアップLinuxサービスの後に実行されます。サービスとしてサービスの前にelasticsearchが開始されると機能しない場合があります。それらをelasticsearch initスクリプト内に配置します。これは、initスクリプトがrootとして実行されるため、上記のinitスクリプト内で使用する構文と同じです)
すぐにコピーして貼り付けて、すぐに変更することもできます。上記のパラメーターは有効で、調整されており、Apache Cassandraサーバーで実行されています。必要に応じて、開始点として試してみて、調整してください。
それらを永続化する2番目の方法:
これで、Linuxの起動サービスの前にパラメーターが設定されます。
/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を実行して再起動せずに変更を適用します。再起動後も永続的になります。
上記の2つの方法が最も一般的です。別のものがあり、あなたのために働くかもしれません、それはほとんどあなたがやっているように、sudoを使用することです:
の代わりに:
sudo sysctl -w vm.max_map_count=262144
試してください:
echo 262144 | sudo tee /proc/sys/vm/max_map_count
Ubuntuで動作します。
確認:
user@naos:~$ cat /proc/sys/vm/max_map_count
262144
問題に対処するための少なくとも3つの異なるオプションを提供することで、私が何らかの形で助けてくれたことを願っています。
よろしく、ラファエル・プラド