定时任务,内存一直增长

深蓝

定时任务,每分钟运行一次check()方法,这个方法里面,会使用Guzzle远程请求一个接口,接口请求速度在500ms-1s左右,根据接口返回的信息再做一些逻辑判断,很简单的一个接口。

但是只要我使用定时任务,内存就会一直增长,直到销毁内存,又会增长,请问像我这种情况的定时任务,应该如何优化,刚从php-fpm改过来,对内存的概念还不是很清楚,知道内存泄露,但是不知道该如何排除与处理。

希望各位大神能指教一二。

public function onWorkerStart()
    {

        // 每分钟执行一次
        new Crontab('0 */1 * * * *', function(){
            echo date('Y-m-d H:i:s')."\n";
            (new VoidedPurchasesCrontabController())->check();
        });
    }
994 1 1
1个回答

walkor

进程启动后随着请求访问,内存有增长是正常情况,只要不是无限增长就不是内存泄露。

  • 深蓝 2023-03-31

    那像我这种情况,有什么好的解决办法没有?因为我的机器内存不大,怎么控制,我接求的接口数据也不大。我每请求一次Guzzle,接收返回数据,然后使用unset删除?

  • 深蓝 2023-03-31

    使用unset删除也并不起作用,我刚尝试了。

  • walkor 2023-03-31

    一般这种定时任务大概占用几十M内存,你的系统内存多大?几十M也支持不了么?

  • 深蓝 2023-03-31

    我昨天开了8个进程,跑一晚上,每个进程涨到了80多M。

  • walkor 2023-03-31

    你这个定时任务开一个进程就行吧

  • 深蓝 2023-03-31

    这个定时任务在我主项目下面,直接跑的。这个定时任务,我如何给他单独开一个进程?原谅我刚接触这个,文档里面我似乎没有看到类似的方法。

  • walkor 2023-03-31

    你发的定时任务配置

  • 深蓝 2023-03-31

    https://www.workerman.net/doc/webman/process.html
    像文档里面的, 使用自定义进程,是否可以搞定我的需求。开一个进程专门跑这个定时任务。

  • walkor 2023-03-31

    可以

  • 深蓝 2023-03-31

    感谢指点,我研究一下该怎么弄。

  • 深蓝 2023-03-31

    这个自定义非监听进程跟定时任务,看上去好像就是一个东西,感觉并没有什么区别。

  • 深蓝 2023-11-20

    最近终于发现了原因,原来我请求的这个方法里会连接google服务,我是直接new的,每执行一次,实例化一次连接,因此连接被保存下来,我现在改成单例就解决了内存一直增长的问题。

年代过于久远,无法发表回答
🔝