AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 38486
In Process
Brian G
Brian G
Asked: 2009-07-10 09:38:53 +0800 CST2009-07-10 09:38:53 +0800 CST 2009-07-10 09:38:53 +0800 CST

后缀性能

  • 772

在 ubuntu 上运行 postfix,每天发送大量邮件(约 100 万条消息)。负载非常高,但在 CPU 和内存负载方面并不多。任何处于类似情况并知道如何消除瓶颈的人?

此服务器上的所有邮件都是出站邮件。

我不得不假设瓶颈是磁盘。

只是一个更新,这里是 iostat 的样子:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.12   99.88    0.00    0.00

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00    12.38    0.00    2.48     0.00   118.81    48.00     0.00    0.00   0.00   0.00
sdb               1.49    22.28   72.28   42.57   629.70  1041.58    14.55   135.56  834.31   8.71 100.00

这些数字是否符合您对单个磁盘的预期性能?

sdb 专用于后缀。

我认为这是队列改组,从传入->活动->延迟

问题的更多细节:

服务器:四核 Xeon(R) CPU E5405 @ 2.00GH with 4 GB ram

平均负载:464.88、489.11、483.91、4 核。但是内存利用率和cpu是最小的

后缀实例介于 16 - 32 之间

performance postfix performance-tuning
  • 13 13 个回答
  • 12032 Views

13 个回答

  • Voted
  1. pjz
    2009-07-10T14:05:59+08:002009-07-10T14:05:59+08:00

    这可能听起来有点疯狂,但你应该:

    1. 将日志记录降低到您需要的最低限度。使 syslog 仅记录 mail.err 或更高版本。
    2. 添加更多内存。是的,Postfix 不需要它,但额外的 RAM 意味着内核的额外页面缓存。
    3. 您没有提到 /dev/sdb 上的文件系统(这也很重要),但肯定将其切换到noatime,这至少应该减少一点负载。
    4. 看看你的 /var/spool/postfix 有多大。如果它在几个演出中,请考虑将其移动到 ramdisk。
    • 9
  2. Andrew
    2009-12-24T15:47:05+08:002009-12-24T15:47:05+08:00

    我不同意那些建议将 RAM 磁盘用于“/var/spool/postfix”的人。这意味着您的整个邮件队列将存储在 RAM 中。如果您的服务器崩溃或断电,队列中的消息将永远消失。从客户端/用户的角度来看,这确实很糟糕,因为消息已经被成功接受以进行传递。更糟糕的是,您的服务器不会发送通知,说明电子邮件被退回或无法送达,因为当服务器恢复运行时队列将是空的。

    相反,我会尽可能多地添加快速磁盘;根据给出的信息,我无法真正估计您需要多少。从上面的“iostat”输出中,看起来您正在对“sdb”(r/s 和 w/s 的总和)执行 ~ 120 IOPS。您可以合理地估计单个 15k RPM SCSI 或 FC 磁盘将处理 150 IOPS。我将从 5 个 15k RPM SCSI 磁盘和一个不错的 RAID 控制器开始。将其设置为跨 4 个驱动器和 1 个热备用的 RAID-10。我不确定这是否会完全解决您的问题,但绝对不会使情况变得更糟。

    • 4
  3. Bill Weiss
    2009-07-10T09:45:19+08:002009-07-10T09:45:19+08:00

    在一些分析器(gprof?)下运行 postfix,或者查看日志。Postfix 记录了很多时间信息,这些信息可能会告诉你延迟在哪里。常见的地方有:

    1. 磁盘性能。可能是时候为您的队列使用 RAID-10。
    2. 消息上的任何类型的网络 IO。DNS黑名单?储蓄存款?
    3. 您安装的 Milters 和其他过滤器。
    4. 通过网络或对进程(ldap、sql)进行身份验证和 UID 查找。
    5. 不使用代理:对于慢速地图(如上)
    • 2
  4. Rob Chanter
    2009-07-10T19:55:56+08:002009-07-10T19:55:56+08:00

    假设吞吐量是恒定的,每天一百万条消息大约是每秒 11 条。Postfix 本身应该能够处理至少比入门级服务器硬件大一个数量级的处理能力。所以我怀疑你不仅仅是在运行 postfix,或者吞吐量峰值分布非常不均匀。

    您的情况肯定看起来像一个 I/O 密集型服务器。这对于 MTA 来说是意料之中的,它需要进行大量的小写操作以保证它不会丢失邮件。

    /var/spool/postfix花时间在和上调整 I/O /var/log。繁忙的 postfix 服务器的最佳实践是将两者分开不同的主轴,并确保启用异步日志记录。在 Linux 上为您的邮件日志的日志文件名称添加一个破折号。

    mail.info                              -/var/log/mail.log
    

    或类似的。

    如果您使用 amavisd-new,请确保其工作区位于 tmpfs 文件系统上。我们通常会戴上它/tmp/vscan/。这是安全的,因为 amavisd-new 在下游(过滤后)跃点接受消息之前不会返回数据结束响应。

    有些人推荐noatime后缀线轴的安装选项。由于后缀依赖于文件系统语义的方式,这可能是不明智的。参见例如http://archives.neohapsis.com/archives/postfix/2006-01/1916.html。

    • 1
  5. Greeblesnort
    2009-08-04T21:57:47+08:002009-08-04T21:57:47+08:00

    看起来您的磁盘子系统至少应该被视为问题的一部分。由于 postfix 在 /var 周围混洗文件的方式,我建议在谷歌上搜索“tweak ext3 filesystem”(至少设置 noatime 和 writeback),看看你是否不能提高文件系统级别的性能。

    我有两个服务器集群,它们为客户发送的电子邮件提供双重职责的 DNS 和出站 SMTP,并且每天(2k-10k/小时)运行 250k 条消息,而远不及那种 I/O 绑定。

    • 1
  6. pQd
    2009-07-10T09:59:30+08:002009-07-10T09:59:30+08:00

    或从

    vmstat 1
    

    moshen建议的“iostat 1”也不错

    从您的统计数据来看,显然更快的磁盘子系统会很好。在 6-8 15k rpm 磁盘上的 raid-10 可能带有一些缓存,板载几 Gigs 内存。

    使用 noatime、nodiratime 选项挂载您的假脱机目录。考虑调整或更改您的文件系统以处理大量小 [我假设] 文件。

    • 0
  7. Geoff Fritz
    2009-07-10T10:11:51+08:002009-07-10T10:11:51+08:00

    盒子里有多少个核心,实际负载是多少?您收到消息的实际速率是多少?

    像大多数人一样,我的第一个想法是磁盘,所以检查一下。

    但是,网络利用率可能是原因,也可能是高中断负载(坏卡?),所以检查这些。我发现即使对于一个普通的邮件服务器,在同一个盒子上拥有一个快速缓存的 DNS 服务器(我偏爱“未绑定”)也有助于减轻延迟和网络负载。

    • 0
  8. 3dinfluence
    2009-07-10T10:19:28+08:002009-07-10T10:19:28+08:00

    对我来说,这就像一个存储性能瓶颈。

    99.88 的 iowait 告诉您,您的系统正在花费大量时间等待您的存储。

    我同意比尔·韦斯的观点。您应该查看队列的 raid10 设置。

    • 0
  9. James
    2009-07-10T10:57:04+08:002009-07-10T10:57:04+08:00

    布赖恩

    您确实需要获得更快的磁盘,或者最好使用 RAID 解决方案。这是什么类型的服务器?

    詹姆士

    • 0
  10. hayalci
    2009-07-10T12:38:45+08:002009-07-10T12:38:45+08:00

    如果您正在运行 amavis 进行垃圾邮件+病毒过滤,您应该增加并发 amavis 进程的数量。根据您的设置,您可能需要从 postfix master.cf 中增加 smtp-amavis 进程的数量,以及 amavis.conf 中的相关设置。

    • 0

相关问题

  • 如何使用 Postfix 将邮件中继到另一台机器?

  • ext3 文件系统性能调优:监控哪些指标

  • IIS 6.0 (Windows Server 2003) 上的 HTTP 压缩

  • 上线的第一天:如何不杀死您的网站

  • IIS 优化

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve