Dovecot 高磁盘 io

Dovecot 高磁盘 io

我们的邮件服务器遇到了一些重大问题,通常是在重启后(但并非总是如此)磁盘 io 会从平均 50-100mbps 飙升至 200-300 mbps。

我把范围缩小到了 dovecot,关闭 dovecot 后磁盘使用率立即恢复正常。我想说,也许这只是 dovecot 在停机后处理积压问题,因为我们昨天确实停机了几个小时,但昨天晚上就解决了,然后今天又恢复了。

使用 atop 我发现导致问题的特定 imap 帐户。我联系了客户,发现所有最高 io 客户端都从其收件箱中删除了大量电子邮件。

显然无法阻止他们这样做,但增加的磁盘 io 会导致大量 io 等待,服务停止响应,所以我们需要一种方法来减少 dovecot 的 io 占用空间。我知道你可以做一些事情来降低它的 CPU 优先级,磁盘优先级有类似的方法吗?

我们的服务器管理团队说它已经尽善尽美了,我们需要为 dovecot 分配更多的资源,但我更愿意在向它投入另一台服务器之前排除配置不良的可能性,但问题仍然会跟着我们。在我看来,几个人删除电子邮件就达到 300mbps 听起来有点过分。

以下是我们的 dovecot 配置的输出dovecot -n。如有人能提供帮助,我们将不胜感激。

您会看到我已经尝试按照本文所述禁用 fsync:http://wiki.dovecot.org/PerformanceTuning。没有发现任何明显的改善。如果有人能提供任何建议,我将不胜感激。

编辑:每个用户有一个文件,存储在 /var/spool/mail 中,所以我猜它是 mbox 格式。

# 1.0.7: /etc/dovecot.conf
log_timestamp: %Y-%m-%d %H:%M:%S 
protocols: imap imaps pop3
login_dir: /var/run/dovecot/login
login_executable(default): /usr/libexec/dovecot/imap-login
login_executable(imap): /usr/libexec/dovecot/imap-login
login_executable(pop3): /usr/libexec/dovecot/pop3-login
verbose_proctitle: yes
mail_privileged_group: mail
fsync_disable: yes
mail_executable(default): /usr/libexec/dovecot/imap
mail_executable(imap): /usr/libexec/dovecot/imap
mail_executable(pop3): /usr/libexec/dovecot/pop3
mail_plugin_dir(default): /usr/lib64/dovecot/imap
mail_plugin_dir(imap): /usr/lib64/dovecot/imap
mail_plugin_dir(pop3): /usr/lib64/dovecot/pop3
auth default:
  mechanisms: plain login
  passdb:
    driver: pam
  userdb:
    driver: passwd
  socket:
    type: listen
    client:
      path: /var/spool/postfix/private/auth
      mode: 432
      user: postfix
      group: postfix
    master:
      path: /var/run/dovecot/auth-master
      mode: 384
      user: root

答案1

您没有说您使用的是什么邮箱格式。

Dovecot 很不错,因为它支持标准 mbox 格式。这样设置起来很简单。

问题是,标准 mbox 格式只是一个大文件;对文件中间的消息进行操作可能会导致整个后半部分被重写。

Dovecot 还支持 Maildir 格式。该格式将每封邮件存储在一个文件中。这也可能会出现问题 - 但当您的用户拥有大量邮件配额时,这可能是两全其美的选择。

可能有其他格式的 dovecot 插件,但据我所知,没有其他直接支持的邮箱格式。

相关内容