2016-05-20 13 views
-1

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

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

я выделенный сервер с двумя Xeon и 16 Gig of ram, CentOS x64, Apache 2.2.15, PHP 5.6.21 и MySQL версии 5.6.30.

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

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

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

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

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

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

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

+0

я действительно интересно, почему вы хотите Świt ch из Prefork - который работает - другому? Я имею в виду, что это не объясняет, почему это работает, а другое не ... – sintakonte

+0

Поскольку я использую сайт SSL и из того, что я прочитал здесь, как принятый ответ, должно быть довольно хорошо, что нужно делать http: // serverfault.com/questions/383526/how-do-i-select-which-apache-mpm-to-use Кроме того, поскольку Prefork MPM использует несколько дочерних процессов с одним потоком, каждый процесс обрабатывает одно соединение за раз. Работник MPM использует несколько дочерних процессов со многими потоками. Каждый поток обрабатывает одно соединение за раз.Это должно быть проще в оперативной памяти, так как он будет порождать новый процесс по запросу ... Все основываясь на том, что я читал онлайн – Kosta

ответ

0

Сделайте 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

Спасибо! В этом была проблема, она работала, как только я установил fcgid_module. – Kosta

0

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

+0

Спасибо за хедз-ап, а за достоинство ответить вместо просто вниз, так как я попытался Google, что бы быть проблемой. max_execution установлен на 2000 и вводится на 1600, что составляет более 2 минут, после чего я получаю сообщение об ошибке, но, как сказано только с чем-то отличным от mod_php и prefork ... mod_php и другие MPM, дают мне белый экран, в котором нет ничего примечательного в журналах ошибок. .. – Kosta

+0

Похоже, вы должны в списке сделать PHP равным max_execution и max_input_time до 2000. Я думаю, что тогда вы переключаетесь на mod_php и другие MPM, вы получаете тайм-аут веб-сервера. Вы также должны проверить, можно ли увеличить тайм-ауты веб-сервера до того же значения, что и у mod_php и prefork. – Taras

+0

Возможно, я не совсем понятен ... 1. mod_php + prefork = работает по назначению 2. mod_php + worker/event = белый экран смерти 3. fcgi + any mpm = 504 timeout ... В любом случае, спасибо еще раз Я попробую возиться с таймаутами, затем Cheers – Kosta

 Смежные вопросы

  • Нет связанных вопросов^_^