如何在traefik中配置上传大文件速度限制?

How to config upload large file speed restriction in traefik?

对 kubernetes 和 Traefik 非常陌生, 我正在使用 traefik 2.2.1,当我尝试上传一个大文件(比如 800MB)时,它非常慢,花了 15 分钟才完成。 我将 memRequestBodyBytes 更改为 2000000000,它仍然很慢。 我的配置有问题吗?

这样配置:

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: test-middleware
spec:
  chain:
    middlewares:
    - name: prefix-middleware
    - name: limit
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  creationTimestamp: null
  name: prefix-middleware
spec:
  stripPrefix:
    prefixes:
    - /stripit
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: limit
spec:
  buffering:
    memRequestBodyBytes: 2000000000

如果没有必要的详细信息,很难确切地说出您为什么会遇到这种行为,但我有一些可能的解决方案,您和社区的其他人可能会觉得有用。

memRequestBodyBytes 只允许您选择阈值的大小,请求将在磁盘上而不是内存中进行缓冲。相反,我宁愿查看 RateLimit 并确保它不会限制您的表现。

从 Kubernetes 方面来看问题,值得检查您的 Traefik 部署是否具有适当的资源限制。例如:

...
        resources:
          limits:
            cpu: 400m
            memory: 100Mi
          requests:
            cpu: 400m
            memory: 100Mi
...

将它们设置得足够高(或完全删除)将提高性能。

如果仍然不够,您需要从 ISP 端检查您的最大上传速度。因为根据您提供的数据,如果您有 ~7 Mpbs 上传 速度,则需要 15 分钟才能上传 800 MB 的文件。

如果有帮助,请告诉我。