首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送邮件缓慢地接受电子邮件

发送邮件缓慢地接受电子邮件
EN

Server Fault用户
提问于 2013-11-08 14:22:26
回答 2查看 3.3K关注 0票数 4

我有一个PHP应用程序,它使用SMTP在localhost上发送邮件来发送电子邮件。

我希望sendmail立即接受邮件请求,并将其排队等待稍后发送,因为我不希望在电子邮件上阻塞面向用户的请求线程。

Sendmail是在RHEL web服务器上安装的默认设置。

有时,sendmail在发送MAIL命令之后会阻塞很长时间--有时需要60秒或90秒才能接收邮件。时间通常接近60秒或90秒,这让我觉得这是某种超时。

我已经查看了sendmail日志,并且有大量的“延迟”邮件,但是没有什么可以对此延迟负责。

  1. 我如何诊断是什么减慢了sendmail
  2. 如何将sendmail配置为始终立即接受邮件并将邮件排队以供以后发送?

更新:我不确定,但看起来这可能是链接到aol.com地址。我强烈怀疑sendmail在接受电子邮件发送阶段正在做某种阻塞的接收地址验证。我如何禁用它,这样sendmail就不会阻塞我的UI线程?

更新2:这似乎只发生在繁忙的时间。也许我已经用完了sendmail线程什么的?我怎么才能查到?

EN

回答 2

Server Fault用户

发布于 2013-11-08 17:14:35

有几个sendmail调优参数可能影响初始传递尝试。看看发送邮件调优

票数 1
EN

Server Fault用户

发布于 2013-11-21 09:39:08

我一直无法修复sendmail,所以我写了一个应用程序层队列,在邮件发送到sendmail之前保存电子邮件,这为我解决了这个问题。电子邮件由web请求线程在磁盘上排队,然后单个后台线程(每个web服务器)将电子邮件从该队列传递给sendmail

我增加了额外的日志记录,sendmail在接收电子邮件时仍然偶尔会阻塞(现在只有5-15秒)。我原以为sendmail的设计是立即接收所有的电子邮件,而不阻塞它们,然后尝试将它们在自己队列中的后台发送给最终的收件人。

慢发邮件的频率现在要低得多。我想知道问题的一部分是否是sendmail耗尽了“接收”线程。

在我最初的设置中,当用户操作导致电子邮件发送时,所有的PHP请求处理线程都会将其电子邮件传递到sendmail (通过SMTP)。在繁忙的时候,这一定意味着sendmail同时收到了大量的电子邮件。它偶尔会阻塞60-90秒(这对我的应用程序的性能来说是灾难性的)。

现在我已经添加了这个应用程序层队列,它最多在一个线程上将电子邮件传输到sendmailsendmail似乎能够很好地处理(大多数情况下)相同数量的电子邮件,而完全不阻塞。不过,它偶尔也会阻塞,这使得它不适合作为电子邮件排队层。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/551649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档