关于高并发(转载)

 

一个开发者的疑问:
应用程序会调用TOP的API去执行任务,首先根据单个任务执行时间很长,其次在用户量增加的时候线程并发量很大,出现 连接重置等网络问题。


回答:
1.合理切割任务,将任务粒度放小,减小事务时间,提高事务执行成功率,降低回滚代价。
2.合并任务中重复的内容, 在时间间隔容许的范围内,减少可能重复的操作。
3.看是否有批量操作接口,减少单个循环调用次数。
4.控制工作线程池线程个数,根据实际 性能和对方服务器处理能力设置并行任务个数。

第四点在说明一下:
线程并发开的越多未必成功率越高:
首先本地资源有限(开的越多线程,本地GC回收频率越高,影响执行速度,效率 反而降低)
其次,对方可能会由于你的ip连接数过多主动拒绝连接。(DOS保护)
再次,信道无法复用。(当前1.6JDK版本已经能够较 好的复用TCP信道,并发瞬间开大量的TCP信道本身就是一种损耗,有时候部分串行化,某种程度上会减少产生TCP信道的数目合理利用信道,提高效率和成 功率,客户端做好流控也很重要。)

 

系统性能影响的三个方面:请求数量,受理通道,单请求处理速度。可以成为性能三角形。系统优化主要是优化三者的关系。 1、请求数量的优化措施: 简化系统结构,减少远程结点 合并请求,减少请求数量 调整业务流程,取消不必要请求 善用缓存,变远程请求为本地请求 2、受理通道 主要有两方面:如何利用新增资源(伸缩性)和如何利用已有资源(并发性) 3、处理速度 主要是减少数据量,合理应用算法,较少IO操作。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值