- 主题:n个libcurl并发连接的限速问题
n个libcurl的并发连接,需要限制这n个连接总的上传速度为S(字节/秒)。
n是动态的,比如当前是3个,下一刻可能会变为4个或者2个。
libcurl只能设置单个连接的上传速度上限,而且一旦开始传输,就不能再更新这个连接的这个速度设置。
好像不太好把S按权重动态分配各个连接(有文件上传的权重大点,否则小点)。
另外一种可能是让所有连接走本地的一个代理,然后代理上可以进行总的速度限制,不过要走代理转发,多了一层延迟。
--
FROM 114.241.227.*
弄个全局变量,自己算呗。。。
【 在 z16166 的大作中提到: 】
: n个libcurl的并发连接,需要限制这n个连接总的上传速度为S(字节/秒)。
:
: n是动态的,比如当前是3个,下一刻可能会变为4个或者2个。
:
: libcurl只能设置单个连接的上传速度上限,而且一旦开始传输,就不能再更新这个连接的这个速度设置。
:
: 好像不太好
: ..................
发自「今日水木 on M2007J17C」
--
FROM 36.112.186.*
没那么简单,主要是不能动态改变已经在传输中的libcurl连接的限制,除非用代理或者用底层驱动来动态分配这个,因为代理或者驱动可以随时调整各个正在传输的连接的流量分配。
比如总限速32KB,
一开始,4连接,如果每个连接个8KB。
再来一个连接,就只能是0KB或者给个1KB之类的了(主要原因就是没法回收分给前4个libcurl连接句柄的速度。强行修改正在传输的libcurl连接的速度上限,不知道会发生什么,比如把5个libcurl句柄的速度限制都改为32 / 5 = 6.4KB),如果这个是传大文件的连接,就会非常慢。
考虑用别的办法了,或者粗放的,最后的限速效果值不一定在S附近。
【 在 GoGoRoger 的大作中提到: 】
: 弄个全局变量,自己算呗。。。
: 发自「今日水木 on M2007J17C」
--
修改:z16166 FROM 114.241.227.*
FROM 114.241.227.*