限流和缓存疑问? #44
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
达到限流的IP是怎么限制的,限制时长还是直接拉黑了?
最后一项的缓存缓存还是什么?例如有几百个人访问https://raw.githubusercontent.com/sky22333/hubproxy/refs/heads/main/src/config.toml 是否是对这个文件进行了缓存?
关于缓存是仅缓存Docker的匿名认证token和镜像清单,用于提升认证速度和响应速度,不会缓存镜像文件,仅占用一点内存,不会占用任何存储空间。
Docker的镜像文件是实时流式转发到客户端,服务端不会存储任何镜像文件。github文件也是。下载离线镜像也是。都不会缓存任何二进制文件。所以不吃存储空间。
IP限流是基于令牌桶算法来限流,如果对应的IP,超过速率限制,访问时会显示429状态码,并返回错误信息
暂时被封禁。关于令牌桶的算法大概是这样:
以配置了2小时内100个请求为例
关于配置:想要限制的速率间隔小,就降低周期,增大请求数。。。想要限制的速率间隔大,就增加周期,降低请求数。
是封禁多久呢?我配置了500/0.5我看都封禁了不少
以配置了2小时内100个请求为例,超过了,就会封72秒,72秒后只给你增加一个请求,所以72秒后你只能访问一次。需要再等72秒你才能访问第二次。
如果144秒内你没访问,此时你有两个请求可以访问。可以直接访问两次。依次类推。
如果还是不明白的话最好是问一下AI,AI讲的比我更准确
懂了,谢谢你的解答
需要注意的是拉取镜像时,由于镜像会有多个层,还有一些认证交互,所以拉取一次镜像会消耗多个请求。一般的镜像拉取一次会消耗大约10个左右的请求。
还有就是使用多线程工具下载GitHub大文件的时候,也会产生大量请求,例如下载:https://github.com/ollama/ollama/releases/download/v0.10.0-rc3/ollama-windows-amd64.zip
是的
可否实现GitHub缓存,作为一个可开启关闭的选项,因为例如下载这种大文件,在多线程的情况下,用户端的速率假如只能跑10M/s,但是用户是使用32线程拉取的,会导致服务器的下行直接被拉满,2.5G口都被占满了,还会导致cpu占用增加,用户没下载完会导致服务器一直拉这个文件。
文件缓存的话会占用大量空间,即使支持了,也不会有多少人使用。并且程序中有超时限制,下载时间过长的文件会自动断开。不会一直占用连接。
你可以直接在配置中修改github文件大小限制,超过限制大小的文件会直接拒绝。
每个人有每个人的想法吧,我提供的服务目前日ip超过20万+,就是不想设置太多限制,速率限制也是最宽容的
你这流量这么大的话,所以更不建议缓存文件
感谢你的解答,也感谢你写出这么好的项目!
可不可以增加开启/关闭docker反代的配置选项
你看一下配置文件,一直都有的,改一下布尔值
没有关闭Docker Hub的选项?
配置里没写,其实是支持的,在配置文件里
[registries]字段中添加输入错误的链接会直接反代GitHub的404页面,这是不合理的,建议返回自定义404页面,例如https://demo.52013120.xyz/https://github.com/sky22333/hubproxy/blob/main/install
好的,我后面优化一下,目前其他同类开源项目也都有这个情况
好的,建议是对这些错误返回都进行自定义页面,因为搜索引擎啥页面都会进行索引
🚀 HubProxy 启动成功
📡 监听地址: 0.0.0.0:5000
⚡ 限流配置: 500请求/0.5小时
H2c: 已启用
🔗 项目地址: https://github.com/sky22333/hubproxy 启动日志建议添加版本号,可以防止没有正常更新到最新版本
好的
4ec36da9b5已修复,可以更新试试
请问部署的 VPS 最大速度是 50MB,那么代理的速度也是最大 50MB了吧?即使使用了 Cloudflare CDN。
是的。不过理论上,你可以在cf上主动开启二进制文件缓存,但是即使开启后cf也只会缓存小于512MB的文件,如果用户能命中缓存的话,就相当于直接下载的cf服务器上的文件,而cf的带宽就很大了。不过我没实测过,有待考证
启动版本号没更新吧,更新了一起试试