2 ch593522217 ch593522217 于 2016.04.08 10:38 提问

java web项目。每个用户登录都会开启几个线程,这样登录用户多了会不会导致线程太多 5C

使用的socket通讯,一个用户登录都开启一个socket并无限接收或发送报文信息,如果登录用户超过一定数量线程是否会达到服务器可开启的线程数?,如果会,该怎么优化?实在没有分了,求各位帮忙

5个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.08 12:26
 如果你用的是Tomcat的话,那么它默认的处理请求的方式就是开启线程去处理用户请求的,所以当用户数量达到Tomcat的最大并发数临界时,它就会拒绝再处理超额的请求了,而且这种方式是socket阻塞模式。所以大并发管理下优化建议使用nio方式处理请求。具体是修改Tomcat的配置处理协议为nio方式。
ch593522217
ch593522217   2016.04.08 10:51

没有办法么?我看了好多例子和技术,好像都是对服务端进行了优化,客户端连接也挺多啊!要开启的线程也不少,本来我想的是启动的时候就开启1个socket,
然后拿这个接收到的报文信息分发给相应的登录用户,但是服务端需要做一些登录用户的控制,必须1个登录用户开启1个socket链接

ch593522217
ch593522217   2016.04.08 11:40

如果我使用websocket是不是能避免掉线程连接的问题?

oDeviloo
oDeviloo   2016.04.08 13:38

每个连接对应一个线程是肯定的,如果要合理安排线程的话使用线程池就行了

w172087242
w172087242   Ds   Rxr 2016.04.08 14:02

客户端做定时断开重连的方式释放资源,不一定要一直保持长链接的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!