我有一个聊天应用程序(套接字编程),考虑到我有2个单独的聊天服务器'Server1'&'Server2'。 我正在使用2个聊天服务器来进行负载均衡(Lvs)。我的LVS工作正常。客户端如何处理“无法创建新的本地线程异常”在客户端
例如:当1000个用户一次尝试登录时,在LVS的影响下,500个请求转到'server1',另外500个转到'server2'。
这里来我的问题:在“客户端”
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: unable to create new native thread
:当我尝试登录了5000个用户,围绕4850成功登录后,我得到的错误。
我该如何处理?
仅供参考:我正在使用新固定线程池, 这里是我在服务器端和客户端使用的登录部分。
在服务器端:
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 2012-04-02 15:11:11
是的,在客户端我想避免这种异常。意味着有办法处理这种情况。 – Java 2012-04-02 15:22:23
客户端或服务器端发生异常吗?哪个VM耗尽内存?这不是你可以“处理”的东西。 – Gray 2012-04-02 15:25:06