504 ошибка но скрипт выполняется

Тема в разделе "Как сделать...", создана пользователем vanderv, 20 окт 2012.

  1. vanderv

    vanderv

    Регистр.:
    30 май 2009
    Сообщения:
    270
    Симпатии:
    12
    По сабжу. Переношу базу на новый лад. Данных много, поэтому скрипт выполняется долго. На локалке скрипт выполняется около 10 мин.
    Поставил на рабочий сервер. Увеличил максимальное время в php.ini. Запускаю... не проходит и минуты выскакивает 504 ошибка. Смотрю а записи добавляются. В итоге вся база перенеслась. Что это может быть?
     
  2. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Я конечно ламер в серверных делах, но мне кажется что апаче честно выдал 504 ошибку после того, как максимальное время ответа от сервера, настроенное в нём(в апаче) было достигнуто. Скрипт же продолжил выполняться наверно потому, что php используется в качестве cgi, а не modphp и апач его не завершил.
    P.S.: Сам не понял что сказал.
     
  3. vanderv

    vanderv

    Регистр.:
    30 май 2009
    Сообщения:
    270
    Симпатии:
    12
    Да но почему тогда сервер через phpinfo() очень честно показывает max_execution_time = 3000
     
  4. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    это максимальное время выполнения скрипта, а не максимальное время ожидания ответа апача от php. По-моему апач просто не стал жждать ответа от php, так как в нём как я уже сказал указано ждать меньшеб чем 3000 секунд. скорее всего стандартные 30 секунд. Сервак-то вообще апач?
     
  5. vanderv

    vanderv

    Регистр.:
    30 май 2009
    Сообщения:
    270
    Симпатии:
    12
    Я без понятия. Админ прописал и сказал отвалите это у вас там со скриптом проблемы. Заказчик на меня волком смотрит.
    С какими настройками мне поиграть что бы снять эту проблему?
     
  6. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Перейти по ссылке надыбал К слову, если php запущен в режиме FCGI, то и апач может недождаться ответа от него, и уже отвалиться по своему keepalive_timeout.
     
    latteo и vanderv нравится это.
  7. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.065
    Симпатии:
    197

    этого должно было хватить

    Проблема в том что у вас перед апачем стоит nginx, который при истечении своего таймаута выдает вам 504 ошибку и закрывает соединение, а apache честно продолжает трудится.
    Вариантов решения несколько
    прописать больший таймаут для nginx параметр называется keepalive_timeout обычно в пределах одной минуты конфиг nginx обычно лежит тут /etc/nginx
    либо обращаться на прямую к апачу если он все же смотрит в интернет, обычно его перевешывают на 81, 85, 8080.
     
    latteo нравится это.
  8. vanderv

    vanderv

    Регистр.:
    30 май 2009
    Сообщения:
    270
    Симпатии:
    12
    А чем чревато большое увеличение?
     
  9. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.065
    Симпатии:
    197
    Процесс nginx а будте долже жить и ждать ответ от апача, черевато тем же чем черевато прописывать огромные время исполнения для апача.
    При наличии какого то узкого места можно будет произвести атаку и все положить, но если вам нужно залить базу и все, то прописывайте не боясь, а после заливки вернете назад
     
    latteo и vanderv нравится это.