LINUX.ORG.RU

apache проблема: Очередь обработки скриптов php

 ,


0

1

Как должно работать: Клиенты отправляют файлы на сервер Если файл прошел проверку в БД пишется запись Один из пунктов проверки заглянуть в БД и проверить есть ли такой файл

Запись в БД вида: Клиент:сессия:filename:datetime

Как иногда работает:

сессия №1

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

сессия №2

Клиент второй раз отправляет файл - проверка говорит что в БД файла нет и скрипт отрабатывает добавляя при этом запись в БД

Разница во времени между сервером и клиентом в несколько секунд

в итоге: По логам клиента:

сессия №1 запрос стартовал в ...17:54

сессия №2 запрос стартовал в ...18:14

В БД

Клиент1:сессия №2:test.txt:...18:15

Клиент1:сессия №1:test.txt:...18:16

Время в БД передает php функцией date('Y-m-d H:i:s') AUTO_INCREMENT у первой строчки меньше чем у второй

Видим что сессия №2 обработалась быстрее.

Как такое может быть?

При загрузке сервера apache накапливает запросы, а потом выполняет их?

Если есть очередь почему не по порядку запросы выполняются?

Как запрос смог прожить 20 минут (с 17:54 по 18:15)? ответ на этот запрос уже никто не ждет.

Клиент ожидает ответ максимум 5 минут настройка в apache время выполнение скрипта также 5 минут

второй вопрос: в access.log

есть записи:

x.x.x.x - - [31/May/2019:18:26:43 +0300] «POST

x.x.x.x - - [31/May/2019:18:11:44 +0300] „POST

x.x.x.x - - [31/May/2019:18:26:47 +0300] „POST

Почему средняя запись стала не на своем месте(по времени)?

Может быть что угодно. Например, твой скрипт пытался залочить какой-то файл (ту же сессию), который уже был залочен кем-то другим. Или что-то передавал в сеть, а целевой хост был временно недоступен. Любая синхронная операция, которая пошла не так, - и скрипт висит.

настройка в apache время выполнение скрипта также 5 минут

Если это max_execution_time, то там считается не время существования процесса, а время, которое потратил CPU, выполняя твой скрипт. Т.е., если он будет ожидать ввода/вывода, то это время не считается.

Почему средняя запись стала не на своем месте(по времени)?

ЕМНИП, там записи в порядке отработки запросов, а не в порядке поступления.

slvrn ★★★ ()
Ответ на: комментарий от slvrn

там записи в порядке отработки запросов, а не в порядке поступления

То есть нормальная ситуация, что вновь пришедшей запрос обработается раньше чем запрос стоящий в очереди?

lexa1826 ()
Ответ на: комментарий от lexa1826

Для апача вполне нормальная, т.к. запросы могут быть разные, и могут выполняться разное время. В твоем случае надо искать проблему в скриптах.

Этот долгий запрос начал выполняться раньше, что видно по логу апача, но выполнялся дольше.

slvrn ★★★ ()
Последнее исправление: slvrn (всего исправлений: 1)