100万同時接続サーバノートのテストが完了

3399 ワード

100万同時接続サーバノートのテストが完了


テストエンドプログラムの再作成


テストエンドプログラムは、できるだけ多くのtcpリクエストを外部に送信するために、ネイティブIPとローカルポートをバインドする機能を追加する必要があります.クライアントに必要です.c再構成し,パラメータ伝達を増加させる.次はclient 2です.cのコード
ポートを指定しないと、使用していないポートがランダムに選択され、心を節約できます.
コンパイル:
gcc -o client2 client2.c -levent

パラメータの解釈
  • -h接続するサーバIPアドレス
  • -p接続するサーバポート
  • -mネイティブIPアドレスバインドが必要なランダムポート数
  • -o本機のすべての利用可能なIPアドレスのリストは、すべてのIPアドレスが
  • 利用可能であることに注意してください.
    実行:
    ./client2 -h 192.168.190.230 -p 8000 -m 64000 -o 192.168.190.134,192.168.190.143,192.168.190.144,192.168.190.145,192.168.190.146,192.168.190.147,192.168.190.148,192.168.190.149,192.168.190.150,192.168.190.151
    

    長すぎて、実行するたびに貼り付けて、直接client 2に置きます.shファイルでは、実行が簡単で便利です.
    #!/bin/sh
    ./client2 -h 192.168.190.230 -p 8000 -m 64000 -o 192.168.190.134,192.168.190.143,192.168.190.144,192.168.190.145,192.168.190.146,192.168.190.147,192.168.190.148,192.168.190.149,192.168.190.150,192.168.190.151
    

    保存、割り当て実行:
    chmod +x client2.sh
    

    テストの開始:
    sh client2.sh
    

    3つ目の問題:fs.file-maxの問題


    テストエンドプログラムclient 2.c発行された数がある値より大きい(約40万の場合)はい、dmesgコマンドで表示すると大量の警告情報が得られます.
    [warn] socket: Too many open files in system
    

    この場合、/proc/sys/fs/file-maxパラメータを確認する必要があります.
    システム対fsを確認してください.file-maxの説明
     /proc/sys/fs/file-max
    This file defines a system-wide limit on the number of open files for all processes. (See also setrlimit(2), which can be used by a process to set the per-process limit,
    RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages about running out of file handles, try increasing this value:
    echo 100000 > /proc/sys/fs/file-max
    The kernel constant NR_OPEN imposes an upper limit on the value that may be placed in file-max.
    If you increase /proc/sys/fs/file-max, be sure to increase /proc/sys/fs/inode-max to 3-4 times the new value of /proc/sys/fs/file-max, or you will run out of inodes.
    

    file-maxは、システムのすべてのプロセスが最大ですべてのファイルハンドルを同時に開くことを許可し、システムレベルのハード制限を示します.Linuxシステムは、起動時にシステムハードウェアリソースの状況に基づいて計算された最適な最大同時オープンファイル数制限であり、特に必要がない場合は、開いているファイルハンドル数がこの値を超えない限り、変更する必要はありません.
    試験機に4 Gメモリを割り当てる場合、対応するfs.file-max値は386562で、開いているファイルハンドルが38万個程度制限されていることは明らかです.テスト側でもサービス側でも、この値を大きくする必要があります./etc/security/limits以上でなければなりません.confは、設定したソフトウェアnofileとソフトウェアnofileの値を送ります.注意ulimit-nは、現在のshellおよびそれによって開始されるプロセスのリソース制限のみを設定します.
    備考:以上のパラメータは、含まれる関係と含まれる関係があります.
    現在のセッションは、次のように変更できます.
    echo 1048576 > /proc/sys/fs/file-max
    

    しかし、システムが再起動すると消えます.
    永続的な変更、/etc/sysctlに追加します.confファイル:
    fs.file-max = 1048576
    

    保存して有効にするには、次の手順に従います.
    sysctl -p
    

    これ以上測定すると、この問題は発生しません.
    6 Gメモリマシンテスタ1台で、7つのNICを割り当て、仮想メモリを占有せず、64000*7=448000個の対外持続要求を対外的に発行することができます.100万の永続的な接続を完了するには、さらに方法を考えなければなりません.
    最終テスト側の構成は次のとおりです.
  • 2 2台の物理機器はそれぞれ1つのネットワークカードで、それぞれ64000個の要求
  • を発行する.
  • 2 2個の6 G程度のcentos試験端機器(7個のブリッジまたはNAT接続をバインド)はそれぞれ64000*7=448000要求
  • を発行する.
  • は16個のNIC(物理NIC+仮想NIC)
  • を使用している.
  • 1M ≈ 1024K ≈ 1024000 = (64000) + (64000) + (64000*7) + (64000*7)
  • 合計16 Gメモリ、16個のNIC(物理+仮想)、4台の試験機
  • メモ:次は1 M永続接続の目標を達成しますが、サービス側では最後の問題に直面します.