系统相关
首页 > 系统相关> > linux-如何从外部对golang http上传进行速率限制?

linux-如何从外部对golang http上传进行速率限制?

作者:互联网

我有一个golang实用程序,可通过https将很多数据上传到OpenStack对象存储.我正在Ubuntu Linux上运行它,并且我想确保其最大上传带宽不超过2500KB / s,最好不要影响同一系统上的其他用户(即,降低以太网接口的速度).

我该如何做,最好不要更改源代码?到目前为止,我已经尝试了几种方法:

>流量整形:尽管我知道使用iptables和tc应该可以实现,但我一直无法找出适当的网络整形技术来影响单个进程.任何有关如何做到这一点的指导将不胜感激.我的网络背景不是很广泛.
>流量限制:我尝试使用flowrate软件包限制对上传内容的写入速度.这没有任何明显的效果.我认为这是行不通的,因为github.com/ncw/swift.ObjectCreateFile.Write()方法不会像接收到的那样上传数据,而是在关闭时上传数据.不过我可能会误会.
>细流:我尝试了细流命令,但它与golang可执行文件不兼容(请参见this question)

解决方法:

事实证明,您可以将Golang进程包装在Docker容器中,然后使用tc实用程序(从容器内部)对Docker容器的网络接口进行速率限制.请参阅this answer以获取示例Dockerfile来做到这一点.

标签:go,https,rate-limiting,linux,trafficshaping
来源: https://codeday.me/bug/20191118/2024820.html