gpt4 book ai didi

java - 客户端如何处理 "unable to create new native thread exception"

转载 作者:行者123 更新时间:2023-12-01 15:27:37 25 4
gpt4 key购买 nike

我有一个聊天应用程序(套接字编程),因此考虑到我有 2 个单独的聊天服务器“Server1”和“Server2”。我使用 2 个聊天服务器来实现负载平衡(Lvs)。我的 LVS 工作正常。

例如:当同时有 1000 个用户尝试登录时,在 LVS 的作用下,500 个请求会发送到“server1”,另外 500 个请求会发送到“server2”。

我的问题来了:当我尝试登录 5000 个用户时,在大约 4850 个用户成功登录后,我收到错误:

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: unable to create new native thread

在“客户端”。

我该如何处理这个问题?

供引用:我正在使用 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);
}
}

任何建议都会有帮助。

最佳答案

我认为您想要做的是,您正在通过运行测试应用程序(即客户端)来测试您的服务器应用程序(即聊天服务器)。现在您必须在循环中运行该特定代码。你的这个循环会给你内存不足的异常,这是显而易见的。如果你继续在无限循环中运行代码,它肯定会耗尽内存。

我建议在有限 for 循环中运行循环,例如在一台客户端计算机上运行 4000 次,并且您可以在许多客户端计算机上运行多个测试代码。在不同的机器上运行测试客户端,例如每个客户端运行循环 4000 次,这样的客户端在 4 台不同的机器上运行。所以输出将是,您的客户端测试代码不会因为内存不足异常而失败,并且您将能够测试您的服务器应用程序是否有 16k 用户登录..

应该可以

关于java - 客户端如何处理 "unable to create new native thread exception",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9978854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com