当在浏览器中使用PHP mail()
函数时,我的服务器出现问题,所以通过Apache。
当通过浏览器调用脚本(称为mailtest.php
,实际发送消息的时间有60秒。
当我php mailtest.php
调用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(...)
调用是为了创buildsubprocess,所以看起来花费了30秒在系统中创build一个新进程。 内存很可能已经耗尽,所使用的stream程大量交换。 你能检查这个使用top
和free
吗? 您还可以使用iostat
监视磁盘活动,可能有很多I / O操作。