今天公司某个项目收到一个问题反馈,具体表现是上传图片接口有时候会提示网络错误,然后我使用Postman testing,发现这个上传图片接口,每100次请求有4个失败,失败的提示显示Error: socket hang up
,没有错误code,后面把Dockerfile拉到本机测试,发现当容器的内存去到顶峰的时候请求就会失败。
后面stackoverflow找到一个类似的问题
imagick uses a shared library and it's memory usage is out of reach for PHP, so tuning PHP memory and garbage collection won't help.
我理解到是因为imagick是个共享库,PHP无法让他回收到内存。
后面使用了他的解决方案,把imgaick的缓存设置为磁盘模式,成功解决了问题,
Imagick::setResourceLimit(Imagick::RESOURCETYPE_MEMORY, -1);
Ref:https://stackoverflow.com/questions/9993085/php-imagick-memory-leak
网友评论