私はチャットアプリケーション(ソケットプログラミング)を持っています。これは2つの別々のチャットサーバー 'Server1' & 'Server2'を持っています。 2つのチャットサーバーを使用して負荷分散(Lv)を行っています。私のLVSは正常に動作しています。クライアントが "新しいネイティブスレッド例外を作成できません"とクライアントで対処する方法
たとえば、一度に1000人のユーザーがログインしようとすると、LVSの影響で500件のリクエストが 'server1'に、他の500件は 'server2'に送られます。
は、ここに私の問題が来る:「クライアント側」に
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: unable to create new native thread
:私の周り4850ログイン成功後、5000人のユーザーのためにログインしようとしていたとき、私はエラーを取得しています。
これをどのように処理すればよいですか?
参考:私はnewfixedthreadpoolを使用しています。 ここは、サーバー側とクライアント側で使用しているログインの一部です。サーバー側では
:
ExecutorService executorService = Executors.newFixedThreadPool(400);
while(true){
s = ss.accept();
}
ログイン側
for(int i=startc;i<endc;i++) // here for e.g if we want to login 1000 users, startc value =1 and endc value=1000.
{
ChatClient.chatHandler = new ChatClient("users"+i);
}
ChatClient {
public ChatClient(String username)
{
Chatclient = this;
this.username = username;
LoginChatConnect();
}
}
void LoginchatConnect(){
try{
sockChatListen = new Socket(URLstore.serverSocket,URLstore.ChatPort); // chatPort=5004,serverSocket=server Ip address.
}catch (IOException e) {
System.out.println("IOException in LoginChat "+e);
}
}
上の任意の提案は参考になります。
を動作するはずです、私はあなたの質問を理解していません。クライアントがサーバーのメモリ不足をどのように処理すべきか尋ねていますか?私はそれが失敗の通知を取得しない可能性があるので、それができるかどうかはわかりません。 – Gray
はい、クライアント側でこの例外を回避したいと思います。この状況に対処する方法があることを意味します。 – Java
例外はクライアント側またはサーバー側で発生していますか?どのVMのメモリが不足していますか?これはあなたがちょうど "扱う"ことではありません。 – Gray