OpenBSDのリレーがすべてのメモリを使用するのを防ぐ方法

OpenBSDのリレーがすべてのメモリを使用するのを防ぐ方法

私はリレー付きのOpenBSD「ファイアウォール」を持っています。ここで、リレーはシステムが完全に応答しなくなるまで、利用可能なすべてのメモリを消費し始めます。これは、ユーザーが非常に大きなファイル転送を開始したときに発生します(relaydはMinIOクラスタのロードバランサーとして設定されます)。

リレーの問題を解決することは、解決すべき個別の問題です。

リレーとすべての子プロセスがシステムの中断を防ぐために使用できるメモリ量を制限するにはどうすればよいですか?

答え1

デフォルトでは、ベースデーモンは次の/etc/rcセクションで定義されている制限に従って開始されます。daemonlogin.conf

daemon:\
    :ignorenologin:\
    :datasize=4096M:\
    :maxproc=infinity:\
    :openfiles-max=1024:\
    :openfiles-cur=128:\
    :stacksize-cur=8M:\
    :tc=default:

tc=default他のすべての設定は、このクラスで定義されている設定default(ファイルの前半で定義されている)であることを示します。

使用可能なメモリ量を変更するには、relaydそれを変更する必要がありますdatasize。デフォルト設定は4 GBで、コンピュータによっては少なくする必要があるかもしれません。もちろん、これは他のすべてのデーモンが使用できるメモリを制限しますが、問題はメモリが制限されたシステムのように思えるので、これは良い考えかもしれません。

制限を変更したい場合具体的に場合は、relayd他のデーモンを変更せずに独自の制限を使用してファイルに新しいクラスを追加するなどの操作を実行できます(そのクラスの他のすべての制限が適用されるように最後に追加することをrelayd忘れないでください)。:tc=daemon:daemon

relayd:\
    :datasize=1024M:\
    :tc=daemon:

次に、クラス_relaydにユーザーを追加します。relayd

# usermod -L relayd _relayd

ファイル全体を見ると、この方法を使用してより多くのメモリを使用できるようにしたり、より多くのメモリを使用できるようにするなどの作業を実行することがわかり/etc/login.confます。vmdunboundopenfiles

関連情報