标签:请求 SocketServer 处理 阻塞 回单 --- 开发 线程 应用服务器
在性能测试时,用jmeter往应用系统发送请求,项目组自开发了socketserver接收请求,是BIO模型的。在测试时发现,随着并发增大,响应时间线性增长,但TPS达到一定程度就不增长了。而应用服务器和数据库服务器的资源消耗都不大,低于50%。而从服务器抓取的日志,每笔业务在应用服务器处理耗时在20毫秒左右。
- bio中开启多线程,每来一个请求服务端就开启一个线程处理。(优点是可以提高效率,但是缺点也很明显:优点大量几乎同时入站连接可能导致它生成极大数量的线程。最终,java虚拟机会消耗内存二崩溃)。
- 对于上面的方案做出改进:bio中使用线程池管理线程。(可以处理效率同时避免了服务器因为高并发的连接而崩溃)。
- 使用nio。(nio虽然也是单个线程去处理连接请求,但是不会阻塞,会不停地轮询是否有就绪的事件,所以处理的顺序和连接请求的先后顺序无关,与请求数据到来的先后顺序有关。一个线程中就可以调用多路复用接口(select)阻塞同时监听来自多个客户端的io请求,一旦有收到io请求就调用对应函数处理)
标签:请求,SocketServer,处理,阻塞,回单,---,开发,线程,应用服务器 来源: https://www.cnblogs.com/devtest/p/16699087.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。