web-dev-qa-db-ja.com

使用可能なバッファスペースがなく、sysctlで調整しています

本当にネットワークの人ではないので、我慢してください。

私は現在、サブネット内のすべてのIPアドレスにUDPを定期的に送信するWebアプリケーションをホストしています。これは2048IPです。私の問題は、しばらくするとNo buffer space availableがスローされることです。

sysctlを使用していくつかの値を調整しました。

  • net.ipv4.neigh.default.gc_thresh1 = 2048
  • net.ipv4.neigh.default.gc_thresh2 = 4096
  • net.ipv4.neigh.default.gc_thresh3 = 8192

そしてそれは機能しましたが、サーバーの応答時間を大幅に遅くします。 Javaで記述され、 fit-pc2 (1.1ghz、1GBのRAM、SDカード)で実行されています。

リソースが限られている場合、No buffer space availableの問題に対処するためにサーバー/カーネルパラメーターを最適化するにはどうすればよいですか?

3
Bro Kevin D.

これはsysctl設定そのものではなく、2kエントリのarpテーブルを継続的にスキャンする必要があるため、サーバーの速度が低下しています。

試す価値のあるものは次のとおりです。

  • デフォルトの「arpcachetimeout」を60秒から3600秒に増やします。これにより、平均arp要求レートが34 req/sから0.5req/sに低下します。
  • すべての興味深いMACアドレスを静的にarpテーブルに追加する

ただし、最善のオプションは、ルーターによってサーバーを2kホストから分離することです。

  • サーバーからIPを変更できる場合は、別のサブネットに配置するだけです
  • IPを変更できない場合は、/ 21サブネットの/ 30サブネットを分割し、proxy-arp機能を使用してそれらを接着できます。
2
Zabuzzman