buaazp / zimg

A lightweight and high performance image storage and processing system.
http://zimg.buaa.us
BSD 3-Clause "New" or "Revised" License
2.69k stars 401 forks source link

zimg图片是否有做下载限制? #192

Closed xiaodongning closed 7 years ago

xiaodongning commented 7 years ago

现在有需要把zimg的图片导出,从数据库取出图片名让后循环一张张下。到是下载到到某一张就请求超时。但是通过浏览器访问是正常的。 下载程序用php和c#跑了都一样,第一次下到100张左右就超时,有时下了几张就超时。zimg部署在阿里云服务器上

buaazp commented 7 years ago

超时这个错误太模糊了,下载失败的时候能看一下服务器端的日志吗?是不是服务挂了还是出错了。

xiaodongning commented 7 years ago

我看了下日志里面也没报错,服务器是正常的,图片能正常访问。超时是C# try catch 抛出的,我用php在控制台跑并没有报错,只是一直不动。zimg是不是有对 这种频繁访问做限制呢?

buaazp commented 7 years ago

没有做特殊的限制,你是单线程一个接着一个图片下载吗?可以在卡住的时候看一下CPU占用,是不是zimg进程占用的资源很高?我怀疑是你用默认的下载路径来下载,实际上zimg在做图片压缩,遇到某些图片比较复杂,会占用大量CPU导致超时。建议换成下载URL加上?p=0参数,会直接下载原图而不进行图片压缩,看看还有没有问题。

文档里有说明

其组成格式为: zimg服务器IP + 端口 / 图片MD5 (? + 长 + 宽 + 缩放方式 + 灰白化 + x + y + 旋转角度 + 压缩比 + 转换格式)

注意:URL + MD5这种不加任何参数的裸请求,获取到的并非原始图片,而是经过压缩后体积大幅度缩小的图片,如果你想获取原始图片需要在这个请求之后专门加一个p=0参数,如下:

http://127.0.0.1:4869/5f189d8ec57f5a5a0d3dcba47fa797e2?p=0
xiaodongning commented 7 years ago

好的,谢了!我也觉得有可能是这原因。为保证图片质量我是用?p=0参数。