性能改造小记

 

一条专用线程负责接受连接,把新接收到的socket通知线程池,线程池派其中一条线程处理该连接,当接收连接数量超过最大线程数时不再接收新连接,直到线程池有成员空闲下来了再次通知专用线程进行接收连接,线程池中的线程皆是处理完业务立即关闭socket,认为是短连接,这里的业务暂时实现为是发送小文件,经过测试,带md5验证,线程池最大线程数为5,100兆局域网内发一万个300字节左右的小文件耗时500秒左右。

用家嫌弃效率过低,其实这里的效率问题并不是后知后觉,只是觉得小功能模块对效率要求应该不会太高,所以用最直接的方式实现了,结果证明确实低估了用家的要求,于是马上改造成第二种方式,长连接。

仍然是线程池,仍实现为最大线程数为5,方便对比,此次没有了专用于接收连接的线程了,池内每条线程都accept同一个服务器socket,得到新socket之后马上处理,处理后不关闭,再次接收request并处理,循环往复,出于对程序结构的维护性要求,每条长连接实现成状态机,投入相同的环境测试,发送完那一万个文件耗时400秒左右,节省了一分四十秒。

用家暂时不再贪婪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值