如何为特定进程分配带宽

如何为特定进程分配带宽

我的生产 VPS 上有搭载 Debian 操作系统的 nginx php 服务器,问题是 nginx 占用了我的所有带宽。

当我尝试使用 ftp 上传某些内容时,连接大多数时候都会超时。

今天我杀死了 nginx 进程并尝试使用 ftp 上传一些内容,速度稳定,连接速度更快。

因此,问题是系统没有为 ftp 服务器分配足够的带宽,除非我终止 nginx

知道如何修复/诊断该问题吗?

答案1

Linux 内核中有一个内置的流量整形器。您可以通过 tc 指令来实现它。对于您的情况,我建议您这样做:

1)创建根指令

# tc qdisc add dev eth0 handle ffff: ingress

2)创建两个流量类别的指令树(http 为 256k,ftp 为 64k)

#tc filter add dev eth0 parent ffff: protocol ip prio 50 \
            u32 ip dport 80 0xffff \
            police rate 256kbit burst 10k drop flowid :1
# tc filter add dev eth0 parent ffff: protocol ip prio 50 \
            u32 ip dport 21 0xffff \
            police rate 64kbit burst 10k drop flowid :1

您可以在这里找到非常详尽的解释http://lartc.org/howto/

相关内容