有个业务需要请求一个外部接口,返回的数据特别大,开了gzip压缩,json_decode后内存占用达到400M,这400m会一直占着不释放,还有可能往上加,如果worker_num开大一点更不得了,会把内存耗尽。
测过不同php版本,测过swoole,试过把类属性改成局部变量,都无法解决,最后的办法是把workerman常驻改成http异步请求。 原本是开了两个workerman,一个publish,一个listen然后处理
请问有更好的方案么?
unset超大变量后,执行
gc_collect_cycles(); gc_mem_caches();
手动回收内存
原来如此,难怪更新workerman后每次执行status内存就释放了
unset超大变量后,执行
手动回收内存
原来如此,难怪更新workerman后每次执行status内存就释放了