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

60-секундная задержка php mail () через браузер / Apache, но без задержки через командную строку

У меня проблема на моем сервере, когда PHP mail() функция используется в браузере, поэтому через Apache.

Когда сценарий, давайте назовем его mailtest.php, вызывается через браузер, фактическая отправка сообщения составляет 60 секунд.

Когда я звоню php mailtest.php из командной строки письмо отправляется мгновенно, без задержек.

После перезапуска Apache задержка исчезнет. Однако он возвращается через пару часов.

Я сделал Strace, и здесь вы можете увидеть задержку в 30 секунд в конце.

13076 09:38:02 clone( <unfinished ...>
13076 09:38:32 <... clone resumed> child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xa5f346f8) = 13160

http://pastebin.com/q34peBW7

Кстати, это виртуальный сервер под управлением Debian.

Любые идеи? Я в отчаянии.

clone(...) call предназначен для создания дочерних процессов, поэтому похоже, что на создание нового процесса в вашей системе ушло 30 секунд. Скорее всего, оперативная память была исчерпана, и процессы интенсивно использовали свопинг. Не могли бы вы проверить это с помощью top и free? Вы также можете отслеживать активность диска, используя iostat, наверное, операций ввода-вывода было много.