ポートマルチプレクサSSLH:リソースが多いのはなぜですか?

ポートマルチプレクサSSLH:リソースが多いのはなぜですか?

ただの存在を発見しましたsslh

Debian 7を実行している512MB RAM VPSにインストールしてみました。設定が完了した後、sslhapache2仮想ホストの1つに接続しようとしましたが、CPU使用率はすぐに50〜60%に達し、リソース不足のためにSSHを介してVPSに接続できなくなりました。

  • これは普通ですか?
  • 有効な選択肢はありますか?

私が解決しようとしている問題sslhは、多くの無料Wi-Fiホットスポットが80と443を除くほぼすべてのポートをブロックしており、ISPが提供するホームサーバーに接続するためにOpenVPNを使用する必要があることです。

提案できる他のソリューションはありますか?

ベストアンサー1

出所を思わず検討した結果、著者が過度に熱心にset_nonblock使用したようです。SSLH-select.c

各ソケットが非ブロック化されている場合(そうであるように)、ループは

while(1) {
    select(… a bunch of non-blocking sockets …);
}

リンクされたファイルの230行付近で待機中になります。つまり、読み込むソケットにデータがない場合でも、selectはすぐに返され、すぐに再度呼び出されます。これはかなりプロセッサ集約的です。

作成者は条件付きでパラメータを使用してほぼ正しく処理しましたが、timeoutとにかく非selectブロックに設定されている場合は効果がありません。

sslhこれが実際の原因であることを確認するための最良の方法は扱っていません。

おすすめ記事