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
顺便说一下,它是一个运行 Debian 的虚拟服务器。
有什么想法吗?我快绝望了。
答案1
clone(...)
调用用于创建子进程,因此看起来在您的系统中创建一个新进程需要 30 秒。很可能 RAM 已耗尽,进程大量使用交换空间。您能否使用top
和检查一下free
?您还可以使用 监视磁盘活动iostat
,可能有很多 I/O 操作。