use*_*977 4 java multithreading tomcat java-websocket
这更像是一个设计问题.我有以下实现
多个客户端连接----->服务器------>对应的DB conns
客户端/服务器通信使用Web套接字完成.它目前是一个单线程应用程序.显然,这种设计不会扩展,因为服务器上的负载太高,并且响应客户端的响应时间太长.后端操作涉及处理大量数据.
我的问题:为每个Web套接字连接创建一个新线程是个好主意吗?这意味着500个客户端有500个线程(无论是多线程还是单线程,Web套接字的数量都是相同的).这样可以减轻服务器的负担,从而使生活更轻松.
要么
是否有更好的逻辑来实现可扩展性?其中一个可以根据作业的优点创建线程,并由主线程处理其余部分.这在某种程度上似乎将来会再次回到同样的问题.
这里的任何帮助将不胜感激.
这种问题有两种方法
实际上你正在使用第二种方法,但只使用1个线程.
您可以使用线程池来改进它,以处理您的请求,而不是只有一个.
用于第二种方法的线程数取决于您的应用程序.如果您强烈使用cpu和一定数量的长I/O操作(读取或写入磁盘或网络),则可以增加此数量.
如果没有I/O操作,则线程数应该更接近cpu核的数量.
注意:现有Web服务器对http请求使用这两种方法.就像一个例子,Apache使用第一个(一个请求的一个线程)和NodeJ使用第二个(它是事件驱动的).
在任何情况下,使用超时系统在服务器崩溃之前解锁非常长的请求.
| 归档时间: |
|
| 查看次数: |
7914 次 |
| 最近记录: |