У меня проблема на моем сервере, когда 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
Кстати, это виртуальный сервер под управлением Debian.
Любые идеи? Я в отчаянии.
clone(...)
call предназначен для создания дочерних процессов, поэтому похоже, что на создание нового процесса в вашей системе ушло 30 секунд. Скорее всего, оперативная память была исчерпана, и процессы интенсивно использовали свопинг. Не могли бы вы проверить это с помощью top
и free
? Вы также можете отслеживать активность диска, используя iostat
, наверное, операций ввода-вывода было много.