Короткий ответ - это отстой, быть вами. Нет хорошей, готовой к использованию программы, которую можно запустить, чтобы получить ответ. Мне жаль, что я не смогу больше помочь, но, не видя никакого кода и т. Д., На самом деле нет лучшего совета, который кто-либо может дать.
Я не могу говорить о вашей конкретной ситуации, но вот некоторые вещи, которые я делал в прошлом. Важно выяснить общую область, которая вызывает проблему. Это не сильно отличается от других методов отладки. Обычно я нахожу, что нет элегантного решения этих вещей. Вы просто закатываете рукава и засовываете руки в грязь по локоть, как бы плохо это ни пахло.
Сначала запустите программу за пределами веб-сервера. Если вы все еще видите проблему из командной строки, будьте счастливы: вы просто (в основном) исключили проблему с веб-сервером. Для создания сценария-обертки для настройки веб-среды может потребоваться немного усилий, но в конечном итоге все становится намного проще, поскольку вам не нужно возиться с перезапуском сервера и т. Д. Для сброса среды.
Если вы не можете воспроизвести проблему за пределами сервера, вы все равно можете делать то, что я рекомендую дальше, это просто раздражает. Если это проблема веб-сервера, а не проблема из командной строки, задача становится обнаружением разницы между этими двумя. Я сталкивался с такими ситуациями.
Если это не проблема с веб-сервером, начните разбивать скрипт на части, как если бы вы столкнулись с любой проблемой отладки. Если у вас включено ведение журнала, включите его и наблюдайте за запуском программы во время записи ее реального использования памяти. Когда он взорвется? Похоже, вы сузили его до некоторых вызовов базы данных. Если вы сможете запустить это из командной строки или отладчика, я найду пару подходящих точек останова до и после увеличения памяти и постепенно сближу их. Вы можете использовать такие модули, как Devel :: Size , чтобы посмотреть на размеры памяти для структур данных, которые вы подозреваете.
Оттуда это только сужает подозреваемых. Когда вы найдете подозреваемого, посмотрите, сможете ли вы воспроизвести его в коротком примере сценария. Вы хотите исключить максимально возможное количество факторов, способствующих этому.
Как только вы думаете, что нашли код, вызывающий нарушение, возможно, вы можете задать другой вопрос, который показывает код, если вы все еще не понимаете, что происходит.
Если вы хотите по-настоящему увлекаться, вы можете написать свой собственный отладчик Perl. Это не так сложно. Вы получаете возможность запустить некоторые подпрограммы в пространстве имен DB
в начале или конце операторов. У вас есть свои профили памяти списка отладочных кодов для того, что вы подозреваете, и ищите скачки в размерах памяти. Я не попробовал бы это, если бы все остальное не терпело неудачу.