线程连接会使系统变慢?

时间:2012-03-16 16:55:43

标签: java tcp cpu

朋友!!!

我正在研究GPS设备跟踪软件。我们有近3000台设备通过Java TCP监听器与我们的服务器通信。我正在为每个设备创建一个单独的线程,因为一旦与设备建立连接,我不想松开与设备的连接,因为再次创建连接需要时间。

运行TCP侦听器后,CPU利用率增加了99%,系统变得不稳定。请帮我找一个解决方案: A.在java中编写TCP侦听器,可以为3000个设备处理超过3000个线程连接 B.最小化CPU利用率。

提前致谢。

2 个答案:

答案 0 :(得分:1)

A是错误的方式,它暗示B.除非您的服务器在一个无限可扩展的主机场上运行,否则您不应创建一个线程来处理每个传入的请求。你没有提到你到底想要什么样的连接,但总的来说:正确的方法是设计一个服务器,它使用某些(小的)恒定数量的线程(你的规模可能会做)来监听传入的连接,并由I/O-bound asynchronous operations提供服务,它们根本不消耗CPU时间。

答案 1 :(得分:0)

The C10K Problem一个读数。查看herehere以获取某些特定于Java的注释。

您希望使用Java的非阻塞IO层来处理大型连接负载。来自JDK 1.4.2 的文档是一个很好的起点。