我正在运行一个连接到六个MQ的队列工作者。当它被启动时,它消耗25MB的RAM。即队列中没有任务,即工作人员处于睡眠状态。我在所有项目中使用Larvel,这个特殊项目纯粹是为队列工作者(即没有Web访问权限的微服务)构建的。
我想减少内存占用,但更重要的是我想知道内存消耗的位置。我正在使用PHP 7.1,所以现在xhprof不再是配置文件内存我必须找到一个替代方案。
我知道Lumen意味着消耗更少的内存,而且至少看起来Lumen是Laravel的子集。有可能"关闭"我的Laravel应用程序的一部分,以便它模仿流明?我尝试评估config / app.php $providers
数组中的行,但内存消耗似乎没有太大差异(我的测量值约为1MB)。
TL;博士;如何"调整" Laravel内存占用空间?如何将Laravel变成Lumen?
谢谢
编辑:Pics或它没有发生。 RES列的AFAIK以千字节为单位,因此〜39MB的内存。答案 0 :(得分:1)
这可能有助于减少队列中使用的内存。
url:Laravel queues - Resource Considerations
资源注意事项
守护程序队列工作程序在处理每个作业之前不会“重新启动”框架。因此,您应该在每个作业完成后释放任何繁重的资源。例如,如果您使用GD库进行图像处理,则在完成后应使用imagedestroy
释放内存。
答案 1 :(得分:1)
您是否检查过您的php.ini并关闭了您的工作人员不需要的任何扩展程序。代码库的其余部分。
您可以为此worker创建一个自定义php.ini,并通过命令行参数
提供它php -c queue_php.ini 工匠队列:工作。
不要忘记,您在那里看到的内存占用所有PHP执行,包括JIT编译器和任何加载的扩展以及它们加载的任何内容。