Laravel内存异常'Database/Connection.php:301'
Laravel memory exception 'Database/Connection.php:301'
我在这里遇到了一个奇怪的错误,有时 select 查询会死于内存异常。这里的大问题是我从来没有能够自己看到错误。我从用户和 laravel.log
文件中知道它的存在,其中包含如下内容:
[2015-03-05 11:46:07] production.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Allowed memory size of 134217728 bytes exhausted (tried to allocate 196605 bytes)' in [...]/vendor/laravel/framework/src/Illuminate/Database/Connection.php:301
Stack trace:
#0 [internal function]: Illuminate\Exception\Handler->handleShutdown()
#1 {main} [] []
我的问题是:
- 如何调试问题(找出什么是破坏一切的查询)
- 或者,如果有已知的解决方法,它是什么?
我已经在 start/artisan.php
中尝试 DB::disableQueryLog();
主要问题是:
PHP 进程 运行 内存不足,也就是达到 php.ini 中设置的 memory_limit
。原因可能多种多样,即无限循环、大型 select 语句;可以这么说:任何需要 PHP 在处理过程中将信息存储在内存中的东西。
我的具体问题和解决方案:
我遇到这个问题是因为 运行 php 进程长,即队列工作人员。
通过设置一个每 20 分钟执行一次 php artisan queue:restart
的 cron 作业解决了这个问题。
如错误信息所述,错误与某个数据库查询有关。但我也问 如何 我可以追溯错误的查询。我使用了一个名为 Rollbar 的错误跟踪服务来找出哪个 API 调用挂掉了。很确定这不是解决这个问题的最佳方法,但它确实有效...
我在这里遇到了一个奇怪的错误,有时 select 查询会死于内存异常。这里的大问题是我从来没有能够自己看到错误。我从用户和 laravel.log
文件中知道它的存在,其中包含如下内容:
[2015-03-05 11:46:07] production.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Allowed memory size of 134217728 bytes exhausted (tried to allocate 196605 bytes)' in [...]/vendor/laravel/framework/src/Illuminate/Database/Connection.php:301
Stack trace:
#0 [internal function]: Illuminate\Exception\Handler->handleShutdown()
#1 {main} [] []
我的问题是:
- 如何调试问题(找出什么是破坏一切的查询)
- 或者,如果有已知的解决方法,它是什么?
我已经在 start/artisan.php
DB::disableQueryLog();
主要问题是:
PHP 进程 运行 内存不足,也就是达到 php.ini 中设置的 memory_limit
。原因可能多种多样,即无限循环、大型 select 语句;可以这么说:任何需要 PHP 在处理过程中将信息存储在内存中的东西。
我的具体问题和解决方案:
我遇到这个问题是因为 运行 php 进程长,即队列工作人员。
通过设置一个每 20 分钟执行一次 php artisan queue:restart
的 cron 作业解决了这个问题。
如错误信息所述,错误与某个数据库查询有关。但我也问 如何 我可以追溯错误的查询。我使用了一个名为 Rollbar 的错误跟踪服务来找出哪个 API 调用挂掉了。很确定这不是解决这个问题的最佳方法,但它确实有效...