Laravel7使用日志内存会一直往上增长最后导致泄漏,求大佬们指教~

(再次感谢各位大佬)问题已解决总结了详细排查过程移步:
blog.csdn.net/eight_eyes/article/d...

编写了一个常驻进程的脚本结果发现内存在不断上涨最后导致溢出,经过排查发现是日志的问题,之后做了一个测试如下:

  • 代码部分:

    Route::get('/aa', function () {
      for ($i = 0; $i < 1000; $i++) {
          Log::info('[INFO]:' . $i);
          Log::error('[ERROR]:' . $i);
          Log::notice('[NOTICE]:' . $i);
          Log::debug('[DEBUG]:' . $i);
          if ($i%100==0) {
              dump(memory_get_usage());
          }
      }
    
      dump(memory_get_usage());
    });
  • 运行结果

    4846848
    5008736
    5118264
    5235984
    5321256
    5422592
    5573080
    5658032
    5742984
    5828256
    5945368

    由结果可以看出内存在不断上涨,想请教大佬们这个如何解决。

另附Xhprof结果:

第一次循环结果

关于使用日志内存会一直往上增长最后导致泄漏的问题,求大佬们指教~

第9次循环结果

关于使用日志内存会一直往上增长最后导致泄漏的问题,求大佬们指教~

不是\Illuminate\Database\Connection::$loggingQueries的问题 这个值默认为false

本着谨慎的原则又测试了7、6、5.8的版本

7 运行结果

18716472
19361856
19443096
19540720
19621960
19686816
19817208
19882064
19947560
20045504
20109752

6运行结果

16602240
18525256
19333920
20197768
20940896
22069800
22681856
23293912
23894808
25817320

5.8运行结果

15944400
16231544
16233376
16235208
16237040
16238872
16240704
16242536
16244368
16246200
16248032
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
leo
最佳答案

@No1Wei 改配置没用,只能卸载或者在 composer.json 中排除掉这个 ServiceProvider 的自动载入

5个月前 评论
讨论数量: 10
leo

把 facade/ignition 这个包卸载了试试看

5个月前 评论

@leo

我把 facade/ignition 配置修改掉了

执行了 artisan vendor:publish –provider=”Facade\Ignition\IgnitionServiceProvider” –tag=”flare-config”

'reporting' => [
        'anonymize_ips' => true,
        'collect_git_information' => false,
        'report_queries' => false,
        'maximum_number_of_collected_queries' => 200,
        'report_query_bindings' => false,
        'report_view_data' => true,
        'grouping_type' => null,
    ],

但是还是不行 :sob:

5个月前 评论
leo

@No1Wei 改配置没用,只能卸载或者在 composer.json 中排除掉这个 ServiceProvider 的自动载入

5个月前 评论
mengdodo

使用pm2或者uwsgi设置最大内存上限,超限重启.

pm2

apps:
  - name: "Laravel:FeiChang51GroupInviteFriends" # 项目名
    max_memory_restart: 500M #内存达到设定值重启

uwsgi

[uwsgi]
max-requests = 1000 #为每个工作进程设置请求数的上限。当一个工作进程处理的请求数达到这个值,那么该工作进程就会被回收重用(重启
5个月前 评论
No1Wei (楼主) 5个月前
杨柳岸

mark

5个月前 评论

github.com/laravel/framework/pull/...

Since this is a breaking change, this PR targets 9x / master. Closes laravel/ideas#2425

5个月前 评论

需要自己手动保存一次,刷新缓存吧。

5个月前 评论

@leo

执行命令 composer remove --dev facade/ignitio 测试结果 是可以的

之前测试忘记添加--dev了 问题是 \Facade\Ignition\LogRecorder\LogRecorder::$logMessages 这个导致的

同时发现另一个问题函数dump也会让内存上涨

已决定将整个facade/ignitio包移除 ,但不知道有没有比较好的办法... 排除掉这个 ServiceProvider 的自动载入

同时感谢 @ware@振翅飞翔 你们的答案也很棒 :+1:

感谢各位大佬

5个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!