Проблемы с конфигурацией Codeigniter и Apache

У меня есть один проект Codeigniter, который включает в себя одну «дорогостоящую» синхронизацию. В основном я подключаюсь к удаленному серверу (работающему, вероятно, CentOS, но это все, что я знаю) через OCI8 к базе данных Oracle, выбирая около 20 000 строк, а затем обновляю локальную базу данных MySQL.

Эта синхронизация длится около 20 минут (да, MySQL может быть более оптимизирован, а что нет), но это не проблема, с которой я сталкиваюсь в настоящее время …

У меня есть выделенный сервер с двумя Xeon и 16 Гб оперативной памяти, CentOS x64, Apache 2.2.15, PHP 5.6.21 и MySQL версии 5.6.30.

Теперь, с помощью Apache 2 Handler и PREFORK MPM по умолчанию, эта синхронизация работает так, как задумано.

Если я оставлю Apache 2 Handler (я полагаю, mod_php) и поменяю MPM на WORKER или EVENT, синхронизация начнется, и PHP выплевывает белый экран смерти, в файлах журнала ничего не будет.

Если я переключаюсь на fcgi и EVENT или WORKER MPM, синхронизация начинается, и примерно через 2 минуты она выдает мне сообщение «Шлюз не получил своевременный ответ от вышестоящего сервера или приложения».

Напоминаю, что проблема не связана с серверами, так как с того момента, как я переключаюсь обратно на Apache 2.0 Handler и PREFORK, он работает как задумано.

Версия Codeigniter — 2.1.0 (да, я знаю, что обновление давно прошло, это только что унаследованный проект, и я не полностью осознаю, произошли ли какие-то изменения с файлами CORE, и парень «хорошо работает, не Это».

Любая подсказка или ссылка с подобной проблемой более чем приветствуются.

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

-1

Решение

Сделать httpd -M и посмотрим, есть ли у вас fcgid_module в списке активных модулей Apache.

Если нет, сделайте yum install mod_fcgid и установить его

Тогда вам, вероятно, понадобится выполнить некоторые настройки для вашей проблемы с тайм-аутом, если вы в своей настройке настроили все остальное для использования CGI / FastCGI вместо Apache 2 Handler. /etc/httpd/conf/httpd.conf что-то вроде

<IfModule mod_fcgid.c>
FcgidIdleTimeout 1800
FcgidProcessLifeTime 1800
FcgidBusyTimeout 1800
FcgidIOTimeout 1800
FcgidConnectTimeout 20
</IfModule>

Сделать перезагрузку service httpd restart а также service php-fpm перезапустите (или любой другой обработчик PHP, который вы используете) и повторите попытку

0

Другие решения

@ Kosta, похоже, у вас какая-то ошибка длинного ожидания запроса к серверу. Я не могу сказать, что точно, не проверяя журналы. Я также советую вам проверить настройки времени ожидания PHP, max_execution_time, max_input_time, это также может повлиять на такие проблемы.

0

По вопросам рекламы [email protected]