GNU/Linux >> Linux の 問題 >  >> Linux

Unix ソケットと TCP/IP ホスト:ポート

解決策 1:

tcp オーバーヘッドがないため、Unix ソケットの方が少し高速です。このパフォーマンスの低下がサーバーの負荷の問題であることに気付いた場合。サーバーの負荷が非常に高くなければ、それを認識できません。

Jails(FreeBSD)またはその他の仮想化テクノロジーを使用して、たとえば. Web サーバーから MySQL-Server を使用する場合、ソケットの代わりに tcp/ip セットアップを使用することがよくあります。ただし、ファイアウォール ルールでアクセスを制限する必要があります。

システムの負荷が高くてソケットが必須であるかどうか、または適切なシステム設計 (サービスの分離) に集中できるかどうかを確認する必要がある場合は、tcp/ip ソリューションの方が適しています。

ですから、長い答えは短くしてください:

はい、パフォーマンスの違いがあります。ソケットの方が高速です。サーバーの負荷が高くない場合は、システムの設計により適したものを選択してください。

解決策 2:

これは基本的に、パフォーマンスと柔軟性の間のトレードオフです。 Unix ドメイン ソケットを使用すると、パフォーマンスが少し向上しますが、localhost に接続されたソケットを使用すると、移植性が少し向上します。 IP アドレスを localhost から別のホスト名に変更するだけで、サーバー アプリを別の OS に簡単に移動できます。

Unix ドメイン ソケットは、ローカル ファイル システムを使用して、サーバー プロセスとクライアント プロセスの間に IPC メカニズムを作成します。 Unix ドメイン ソケットが接続されると、/var のどこかにファイルが表示されます。

純粋に究極のパフォーマンス ソリューションを探している場合は、共有メモリ IPC を検討することをお勧めします。しかし、それはもう少し複雑です。

解決策 3:

Unix ドメイン ソケットの長所。

<オール>
  • ソケット自体にアクセス許可を設定するか、サーバーが接続クライアントのユーザー名を読み取ることにより、Unix ユーザー許可システムを通じてアクセスを管理できます。
  • 誤ってソケットを外部に公開する可能性が低くなります。たとえば、サーバーが Web プロキシも実行している場合、誤って localhost のソケットへの接続を許可してしまう可能性があります。
  • Unix ドメインソケットの短所

    <オール>
  • Unix 以外のシステムには移植できません。
  • chroots、jail などで扱いにくい

  • Linux
    1. erlang:UNIX ドメイン ソケットのサポート?

    2. どの Linux IPC 手法を使用しますか?

    3. SO_SNDBUF の効果

    1. BashでTCPポート16969を強制終了するにはどうすればよいですか?

    2. Linux OS で開かれているすべてのソケットをチェックする

    3. TCP 経由で仮想シリアル ポート接続を作成する

    1. .NET C# での高性能 TCP ソケット プログラミング

    2. Linux 名前付きソケットのハウツー

    3. ポート 80 で実行中のプロセスを強制終了する