Dovecot MySQL 身份验证速度变慢

Dovecot MySQL 身份验证速度变慢

我有一台 IMAP/POP3/Webmail 服务器,装有 Dovecot1 2.2.10,MySQL 后端位于另一台服务器上。该服务器以默认配置运行。

...
driver = mysql
default_pass_scheme = plain
...

我的问题是,有时当它超载时,它会开始拒绝客户端的身份验证(即它说密码错误)。它对所有不同类型的客户端(pop3、imap、webmail)都这样做,所以这一定是与身份验证后端相关的问题

我的第一个想法是没有运行足够的 dovecot 身份验证进程。

我可以进行哪些调整以及按照什么顺序进行调整以便该系统能够同时处理更多客户端身份验证请求?

我的 MySQL 服务器没有超载,它是一台四核机器,白天平均 CPU 使用率为 25%。

在此期间,邮件服务器本身的 CPU 使用率会急剧上升。内存使用率保持正常。

http://i58.tinypic.com/2q9gfpf.jpg

这是一个生产系统,所以我能做的就是调整一些肯定不会破坏它的变量。

谢谢!

答案1

不知道 Dovecot 是否也会发生与 Cyrus IMAPd 相同的情况。我们来试试吧。

Linux 内核从多个来源和事件收集真实随机性,即熵。任何程序都可以从 读取这些数据/dev/random。好吧,有时如果生成的“真实”随机性不够(例如,服务器不包含硬件加速随机数生成器),这个熵池可能为空。当它为空时,任何等待来自 /dev/random 的随机数据的进程都会因熵池不足而停滞。

每当您的 Dovecot 服务器发生此停顿时,您都可以检查watch -n1 'cat /proc/sys/kernel/random/entropy_avail'该值是否保持在零或零左右。如果是,则您的 Dovecot 需要更快地生成随机性。

一种解决方案是安装rngd(例如在 Ubuntu/Debian 中,它在rng-tools包中)并将其配置为使用/dev/urandomrngd显示随机数据,/dev/random这些数据来自您配置它使用的源。是的,在这种情况下使用半随机性,/dev/urandom但至少它是有效的。

在 Cyrus IMAPd 中,POP3 问候行包含随机生成的字符串,它会非常快地消耗 /dev/random,并且大量连接会导致完全停顿,最长可达几分钟。


另一种情况是您的 Webmail 应用程序无法很好地处理 MySQL 连接,因此max_connect_errorsMySQL 超负荷并且 MySQL 开始拒绝您的 Dovecot 服务器。在这种情况下,FLUSH HOSTS;MySQL 服务器上的 MySQL 命令行应该会有所帮助。

如果这是 Dovecot 问题的根本原因,那么您应该提高 MySQLmax_connect_errors限制。

我知道我的回答非常牵强,而且完全是盲目相信,但谁也不知道!

相关内容