Назад | Перейти на главную страницу

500 ошибок при загрузке больших файлов с помощью fastcgi

Я использую следующую настройку:

При загрузке файлов меньшего размера все работает нормально. Однако если я попытаюсь загрузить файлы большего размера (я еще не определил точку отсечения), я получаю 500 ошибок.

Мои журналы apache установлены на E_ALL & ~ E_NOTICE & ~ E_STRICT & ~ E_DEPRECATED

Когда это произошло впервые, я проверил журналы и увидел, что POST длиннее, чем MaxRequestLen в конфигурации fcgi.

Я быстро изменил это как в моем файле php.conf, так и в моем включаемом файле post_virtualHost из cPanel. Это предотвратило регистрацию сообщения об ошибке, но я все еще получаю 500 ошибок, и, что сбивает с толку, никакие связанные с этим ошибки не регистрируются вообще.

С точки зрения клиентов файл, кажется, загружается нормально и занимает столько времени, сколько должно (с html5-файлом api, правильно сообщающим о ходе выполнения), а ошибка 500 генерируется после того, как сервер получил полный файл во время длительного выполнения скрипта впоследствии .

Сам файл представляет собой большой текстовый файл, содержащий несколько изображений base64, которые затем разделяются на серверную сторону, преобразуются в фактические файлы изображений с помощью ImageMajick (через расширение IMajik php), а затем дублируются в несколько версий разного размера с различными уровнями фильтрации / сжатия. применяется к ним. Весь этот процесс может занять некоторое время. Может ли это быть частью проблемы? Если да, то как мне это исправить?

Моя текущая конфигурация fcgi выглядит следующим образом:

MaxRequestsPerProcess 1000
FcgidMaxProcesses 200
FcgidProcessLifeTime 7200
MaxProcessCount 500
FcgidIOTimeout 400
FcgidIdleTimeout 600
FcgidIdleScanInterval 90
FcgidBusyTimeout 300
FcgidBusyScanInterval 80
ErrorScanInterval 3
ZombieScanInterval 3
DefaultMinClassProcessCount 0
DefaultMaxClassProcessCount 3
FcgidMaxRequestLen  1073741824

Я попытался заменить FcgidMaxRequestLen на более старый MaxRequestLen, но все равно не повезло.

Любая помощь будет принята с благодарностью.

Есть ли шанс, что ваш сценарий просто истечет? FcgidBusyTimeout 5 минут - может быть, этого недостаточно, когда одновременно работают несколько скриптов.

Почему вы используете fcgi вместо mod_php? Если вы используете ngix в качестве обратного прокси и для обслуживания статического контента fcgi - это просто еще один уровень сложности: ngix + apache - хорошо, apache + fcgi - хорошо, ngix + fcgi - хорошо, ngix + apache + fcgi - не имеет смысла.