Bri*_*n G 12 performance postfix performance-tuning
在 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
Run Code Online (Sandbox Code Playgroud)
这些数字是否符合您对单个磁盘的预期性能?
sdb 专用于 postfix。
我认为这是队列改组,从传入->活动->延迟
问题的更多详细信息:
服务器:四核 Xeon(R) CPU E5405 @ 2.00GH with 4 GB ram
平均负载:464.88、489.11、483.91、4 核。但内存利用率和 CPU 最小
16 - 32 之间的后缀实例
这听起来可能有点疯狂,但您应该:
noatime,这至少应该会减少一点负载。小智 5
我不同意那些建议使用 RAM 磁盘作为“/var/spool/postfix”的人。这意味着您的整个邮件队列将存储在 RAM 中。如果您的服务器崩溃或断电,队列中的消息将永远消失。从客户端/用户的角度来看,这确实很糟糕,因为消息已经被成功接受传递。更糟糕的是,您的服务器不会发送通知,说明电子邮件被退回或无法送达,因为当服务器恢复时队列将为空。
相反,我会添加尽可能多的快速磁盘,您可以负担得起;根据所提供的信息,我无法真正估计您需要多少。从上面的“iostat”输出来看,您似乎正在对“sdb”执行约 120 IOPS(r/s 和 w/s 的总和)。您可以合理地估计单个 15k RPM SCSI 或 FC 磁盘将处理 150 IOPS。我会从 5 个 15k RPM SCSI 磁盘和一个不错的 RAID 控制器开始。将其设置为跨 4 个驱动器(带 1 个热备用)的 RAID-10。我不确定这是否能完全解决你的问题,但绝对不会让问题变得更糟。
在某些分析器(gprof?)下运行 postfix,或者查看日志。Postfix 记录了大量的计时信息,这些信息可能会告诉您阻塞在哪里。常见的地方有:
| 归档时间: |
|
| 查看次数: |
11444 次 |
| 最近记录: |