Postfix性能测试(PHP版)

Postfix的性能压测(PHP版)

  • 发送测试:分别使用PHP Mail()函数和PHPMailler smtp协议发送邮件, 推送速率是指 发送个数/PHP程序运行时间, 发送速率是指 发送个数/(PHP推送时间+postfix处理积压的时间) 
发送方式发送量(个数*进程数)推送速率(封/s)发送速率(封/s)是否积压
local 10000*1 61.56509558 61.56509558
local 5000*1 130.4393196 42.50115919 积压
smtp 10000*1 21.79115444 21.79115444
smtp 5000*2 41.86831494 41.86831494
smtp 5000*3 55.7815742 55.7815742
smtp 5000*4 64.46328991 64.46328991
  • 注:local方式是使用本机postfix发送邮件(使用PHP的mail()函数,需要配置PHP.ini,直接从本机发送邮件),smtp是其他机器连接以后postfix根据配置进行接受、转送(使用PHPmailer, 使用smtp协议发送)。
  • 积压测试: 在不推送新的邮件请求的情况下, postfix自身发送积压的邮件所需时间, local方式需要maildrop->incoming->active之后发送, smtp方式需要用smtpd进程接收到->incoming队列->active之后发送。
发送方式积压个数发送速率(封/s)
local 10008 7.890513328
local 5008 11.67511932
local 2509 16.58659537
local 1007 60.26456179
local 509 59.08871629
local 108 104.3172932
smtp 10008 10.32851814
smtp 5008 40.03314741
smtp 2511 43.09662048
smtp 1005 51.99071758
smtp 507 52.73113486
smtp 108 49.64010573
  • 结论
    • PHP使用smtp单进程推送(当前线上使用的模式),没有达到postfix的最大发送能力(即推送速度<发送速度), 这种模式下发送能力为21封/s。
    • 使用本地PHP mail函数(需要配置php.ini)可以提高推送的速度,减轻PHP程序的压力,但是只能与本机的postfix交互。
    • 队列积压越多,发送越慢, 积压>1000时, 速度明显变慢, <1000影响不大。
    • 对于邮件发送来说速度是一个动态的概念, 比如软退多时, incoming队列的处理时间会相应变慢,判断推送速度是否过快的标准,应该以队列长度为准, 队列达到某个值比如1000(现在线上的值是500),则不再推送,否则会影响postxfix本身处理的速度。
原文地址:https://www.cnblogs.com/sailrancho/p/3507552.html