Ошибка ограничения памяти Cake php после миграции, устранение неполадок Контроллер - PullRequest
0 голосов
/ 09 июля 2020

Я копирую / мигрирую проект Cake php 2.3.8 производственного сервера в разрабатываемый, но получаю известную ошибку:

Blockquote Fatal Error Error: Допустимый размер памяти 1073741824 исчерпаны байты (попытка выделить 200648563 байта) Файл: / var / www/html/lib/Cake/Utility/String.php Строка: 243

Примечание: если вы хотите настроить это сообщение об ошибке, создайте приложение / View / Errors / fatal_error.ctp

Я уже зеркалировал те же спецификации, что и производственный сервер:

  • Пытался увеличить лимит памяти по умолчанию на apache> php .ini файл от 128M до 1024
  • Также от 1024 до 2048, но не повезло
  • Перезагрузил сервер и apache сервис
  • Ограничить набор данных в моей базе данных (в настоящее время их 6, но на производственном сервере около 40K строк в таблице, которую я запрашиваю)
  • Протестировал функцию внутри контроллера, чтобы просто отображать одну строка текста (успешно отображает, но фатальная ошибка сообщение продолжает появляться).

Обычно это происходит, когда я посещаю определенные контроллеры, потому что я могу правильно загружать некоторые страницы (очевидно).

Я сейчас отладка поведения приложения в файлах журнала:

  • / ppp / tmp / logs / error.log
  • Xdebug

Но ни один из них не показывает более подробную информацию о пределе фатальной ошибки, мне сказали, что это может быть утечка памяти, почему же оба сервера ограничены одинаково? (ulimit для серверов ниже).


Я хотел бы знать, в чем проблема, мне не хватает настройки? Как я могу настроить контроллер так, чтобы он работал без ошибок?

Характеристики сервера Dev

  • Centos 7
  • PHP 5.4.16 (cli) (построено: 1 апреля 2020 г. 04:07:17)
    Авторские права (c) 1997-2013 * Группа PHP
    Zend Engine v2.4.0, Авторские права (c) 1998-2013 Zend Technologies
    с Xdebug v2. 2.7, Copyright (c) 2002-2015, Дерик Ретанс
  • VPS на Linode: 2 ядра 4 ГБ ОЗУ
  • Ulimit:
    файл ядра size (блоки, - c) 0
    размер сегмента данных (кбайт, -d) неограничен
    приоритет планирования (-e) 0
    размер файла (блоки, -f) неограничен
    ожидающие сигналы (-i) 15076
    максимальный размер заблокированной памяти (кбайт, -l) 64
    максимальный размер памяти (кбайт, -m) неограничен
    открытые файлы (-n) 1024
    размер канала (512 байт, -p) 8
    очереди сообщений POSIX (байты, -q) 819200
    приоритет реального времени (-r) 0
    размер стека (кбайт, -s) 8192
    время процессора (секунды, - t) неограниченно
    максимальное количество пользовательских процессов (-u) 15076
    виртуальная память (кбайт, -v) неограниченно * 1 084 * файловые блокировки (-x) неограниченно

Рабочий сервер

  • Centos 7
  • PHP 5.4.16 (cli) (построено: 1 апреля 2020 г., 04:07:17)
    Авторские права (c) 1997-2013 * Группа PHP
    Zend Engine v2.4.0, Авторские права (c) 1998-2013 Zend Technologies
  • Выделенный сервер: 16 ядер (32 потока), 128 ГБ ОЗУ
  • Ulimit:
    размер основного файла ( блоков, - c) 0
    размер сегмента данных (кбайт, -d) неограничен
    приоритет планирования (-e) 0
    размер файла (блоки, -f) неограничен
    ожидающие сигналы (- i) 514324
    максимальный размер заблокированной памяти (кбайт, -l) 64
    максимальный размер памяти (кбайт, -m) неограничен
    открытые файлы (-n) 8192
    размер канала (512 байтов, -p ) 8
    очереди сообщений POSIX (байты, -q) 819200
    приоритет реального времени (-r) 0
    размер стека (кбайт, -s) 8192
    время процессора (секунды, -t) безлимит
    максимальное количество пользовательских процессов (-u) 8192
    виртуальная память (кбайт, -v) неограниченно
    файловые блокировки (-x) неограниченно


Заранее спасибо

ОБНОВЛЕНИЕ 1
Это то, что появляется после копирования lib / Cake / View / Errors / fatal_error.ctp в app / View / Errors / fatal_error.ctp и добавления
<code><pre><?php echo h($error->getTraceAsString()); ?>

Неустранимая ошибка Ошибка: допустимый размер памяти 1073741824 байтов исчерпан (попытка выделить 126212148 байтов) Файл: / var / www/html/lib/Cake/Utility/String.php Строка: 243

Уведомление : Если вы хотите изменить это сообщение об ошибке, создайте app / View / Errors / fatal_error.ctp

Обновление от 9 июля '20

# 0 / var / www/html/lib/Cake/Error/ErrorHandler.php (184): ErrorHandler :: handleFatalError (1, 'Допустимая память ...', '/ var / www/html/l...', 243)

# 1 [внутренняя функция]: ErrorHandler :: handleError (1, 'Допустимая память .. . ',' / var / www/html/l... ', 243, Массив)

# 2 / var / www/html/lib/Cake/Core/App.php (931): call_user_fun c (' ErrorHandler :: h ... ', 1 , 'Допустимая память ...', '/ var / www/html/l...', 243, Array)

# 3 / var / * 1 156 * (904): App :: _ checkFatalError ()

# 4 [внутренняя функция]: App :: shutdown ()

# 5 {main}

До этого я извлекал некоторые компоненты и помощники:

var $helpers=array("Js","Html","Form","Paginator","Fck","Cache","Pagination");
var $components=array("Customcomponent","Paginator","RequestHandler","Cookie","Pagination","Email");

Но не повезло (появилось такое же сообщение об ошибке), мой другой работающий контроллер не использует помощников, только следующие компоненты:
var $components=array("Customcomponent","RequestHandler","Cookie","Email","Pagination","Paginator");

1 Ответ

0 голосов
/ 09 июля 2020

Непонятно, что называется String.php Line: 243, полный стек вызовов может помочь

Скопируйте lib/Cake/View/Errors/fatal_error.ctp в app/View/Errors/fatal_error.ctp и добавьте

<code><pre><?php echo h($error->getTraceAsString()); ?>
...