通过浏览器/Apache 的 php mail() 延迟 60 秒,但通过命令行没有延迟

通过浏览器/Apache 的 php mail() 延迟 60 秒,但通过命令行没有延迟

mail()当在浏览器中使用PHP 函数时,我的服务器出现问题,因此通过 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 的虚拟服务器。

有什么想法吗?我快绝望了。

答案1

clone(...)调用用于创建子进程,因此看起来在您的系统中创建一个新进程需要 30 秒。很可能 RAM 已耗尽,进程大量使用交换空间。您能否使用top和检查一下free?您还可以使用 监视磁盘活动iostat,可能有很多 I/O 操作。

相关内容