Linuxで実行されているSIPサーバには、たくさんのTCP接続を開く必要があります。私はJavaで簡単なクライアントプログラムを試してみましたが、他のLinuxサーバから350の接続もできませんでした。私は負荷/性能テストのために50,000以上を開きたいと思う。Javaで多くのTCP接続を開くには
これを解決する方法はありますか?限界は何ですか? 申し訳ありませんが、これは愚かな質問であれば、私は初心者です。
おかげ
クライアントプログラムにのみ、下の数字が予約されている1023を超えるポートを使用することができます
public class ConnectionTcp
{
static int noOfconnected;
Socket socket;
static int port=1000;
static Object obj=new Object();
static AtomicInteger atomicInteger;
public static void main(String[]args)
{
try{
ConnectionTcp con=new ConnectionTcp();
atomicInteger = new AtomicInteger();
Date date = new Date();
for(int i=0;i<50000;i++)
{
port+=i;
con.sendmsg();
}
}
catch(Exception e)
{
System.out.println(e);
}
}
public synchronized void sendmsg(){
try{
Thread.sleep(100);
}
catch(Exception e){
System.out.println(e);
}
Runnable r=new Runnable(){
public void run(){
try{
boolean check=true;
InetAddress ip=InetAddress.getByName("131.10.20.16");
Socket socket=new Socket("131.10.20.17",5060,ip,port);
System.out.println("conected is "+socket.isConnected()+"<----------with port----------->"+socket.getLocalPort());
OutputStream out =socket.getOutputStream();
InputStream in =socket.getInputStream();
String str = "keep alive";
byte[] array = str.getBytes();
System.out.println("no of user connected with server is "+atomicInteger.incrementAndGet());
while(true){
try{
int i = in.read();
out.write(array);
}catch(Exception e){
System.out.println("exception"+e);
atomicInteger.decrementAndGet();
socket.close();
Date date = new Date();
System.out.println("Ented Time is "+date.toString());
break;
}
}
}catch(Exception e1){
System.out.println("main exception"+e1);
atomicInteger.decrementAndGet();
}
}
};
(new Thread(r,"tcp")).start();
}
}
350接続試行でエラーが発生しましたか? – RamPrakash
例外は「exceptionjava.lang.IllegalArgumentException:ポートが範囲外です。」、サーバポートの範囲は15000〜61000です.1000,2001,40005ではなく1000,1001,1002 ...のように1つずつソースポートを割り当てられません。 ......私は、すべてのポートが忙しいとは思っていません。Linux上でss -sコマンドでチェックしてみましたが、33 TCP接続しか表示されません。 –
ソースコードを入力してください。スレッドを使用していますか?あなたのjvmの議論は何ですか? また、あなたの質問に少し触れてください。そうでなければ、助けを得ることはできません。 – Gewure