100万同時接続サーバノートのテストが完了
3399 ワード
100万同時接続サーバノートのテストが完了
テストエンドプログラムの再作成
テストエンドプログラムは、できるだけ多くのtcpリクエストを外部に送信するために、ネイティブIPとローカルポートをバインドする機能を追加する必要があります.クライアントに必要です.c再構成し,パラメータ伝達を増加させる.次はclient 2です.cのコード
ポートを指定しないと、使用していないポートがランダムに選択され、心を節約できます.
コンパイル:
gcc -o client2 client2.c -levent
パラメータの解釈
実行:
./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万の永続的な接続を完了するには、さらに方法を考えなければなりません.
最終テスト側の構成は次のとおりです.