silenceper / pool

🚌 A golang general network connection poolction pool
MIT License
829 stars 212 forks source link

底层添加防止超出最大连接处处理逻辑 #13

Closed zhuCheer closed 5 years ago

zhuCheer commented 5 years ago

12

老哥,合一个呗,这个确实很好用,我添加了一个防止 chan 超出容量的判断,从底层防止程序阻塞另外还添加了一个实现流程图,方便理解; 我这用这个来实现redis连接池,比redigo原生的池子要灵活多了,连接的取出和放回非常方便,本地压测也非常稳,下面是 /ab -n 50000 -c 200 的结果 Total transferred: 7479902 bytes HTML transferred: 1629902 bytes Requests per second: 8716.29 [#/sec] (mean) Time per request: 22.946 [ms] (mean) Time per request: 0.115 [ms] (mean, across all concurrent requests) Transfer rate: 1273.38 [Kbytes/sec] received

这个执行过程没有报错,稳得一笔,redigo原生池子100以上并发就会出现io错误;

zhuCheer commented 5 years ago

去除本地图片重新提交

silenceper commented 5 years ago

当超过最大的时候会阻塞? put连接的时候如果发现已经超过最大连接数了就会关掉