问题描述
- java web项目。每个用户登录都会开启几个线程,这样登录用户多了会不会导致线程太多
-
使用的socket通讯,一个用户登录都开启一个socket并无限接收或发送报文信息,如果登录用户超过一定数量线程是否会达到服务器可开启的线程数?,如果会,该怎么优化?实在没有分了,求各位帮忙
解决方案
如果你用的是Tomcat的话,那么它默认的处理请求的方式就是开启线程去处理用户请求的,所以当用户数量达到Tomcat的最大并发数临界时,它就会拒绝再处理超额的请求了,而且这种方式是socket阻塞模式。所以大并发管理下优化建议使用nio方式处理请求。具体是修改Tomcat的配置处理协议为nio方式。
解决方案二:
没有办法么?我看了好多例子和技术,好像都是对服务端进行了优化,客户端连接也挺多啊!要开启的线程也不少,本来我想的是启动的时候就开启1个socket,
然后拿这个接收到的报文信息分发给相应的登录用户,但是服务端需要做一些登录用户的控制,必须1个登录用户开启1个socket链接
解决方案三:
如果我使用websocket是不是能避免掉线程连接的问题?
解决方案四:
每个连接对应一个线程是肯定的,如果要合理安排线程的话使用线程池就行了
解决方案五:
客户端做定时断开重连的方式释放资源,不一定要一直保持长链接的
时间: 2024-10-09 14:37:45