我有一个客户,他被分配了 20 个 IP,专门用于发送新闻通讯、警报等。通常,每天发送给用户的邮件数量约为 100 万封,尽管最高可达 200 万封,而且分布不均匀。我向客户保证,一个系统上有 20 个 IP 就足够了,因为我知道 postfix 可以运行多个实例。现在不太确定了。
现在我遇到了邮件服务器负载过高的问题 - 一个小时后,top 显示 5+、5+、5+,并且还在继续攀升。有时系统会同时处理 20 个连接。我为大型 ISP 设置了传输并对其进行了限制,以尝试减少发送到延迟队列的邮件量并提高传递率。我希望它也能减少高负载,但并没有。
该服务器有 4 个核心、2GB 内存和一条不限速的 100mbps 线路。CPU 似乎保持在 1%-5% 左右,内存始终低于 1GB。这可能是带宽问题还是其他问题?我想到的一件事是,客户通过自定义邮件脚本发送电子邮件,我怀疑即使发送完成后,现有连接也可能保持打开状态。我不确定如何检查这样的事情,但这是我考虑过的事情。
下面是我主实例中的 main.cf。有人有什么建议吗?我愿意接受任何建议!!
主文件:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
bounce_queue_lifetime = 1d
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
header_checks = regexp:/etc/postfix/header_checks
html_directory = no
inet_interfaces = xx.xx.xx.xx
inet_protocols = ipv4
initial_destination_concurrency = 5
local_header_rewrite_clients = static:all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
maximal_backoff_time = 4h
maximal_queue_lifetime = 1d
milter_default_action = accept
minimal_backoff_time = 10m
multi_instance_directories = /etc/postfix-4 /etc/postfix-5 /etc/postfix-6 /etc/postfix-7 /etc/postfix-8 /etc/postfix-9 /etc/postfix-10 /etc/postfix-11 /etc/postfix-12 /etc/postfix-13 /etc/postfix-14 /etc/postfix-15 /etc/postfix-16 /etc/postfix-17 /etc/postfix-18 /etc/postfix-19 /etc/postfix-20 /etc/postfix-21 /etc/postfix-22 /etc/postfix-23
multi_instance_enable = yes
multi_instance_wrapper = ${command_directory}/postmulti -p --
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = domain.tld
myhostname = domain.tld
mynetworks = yy.yy.yy.yy
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = $smtpd_milters
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.8.7/README_FILES
sample_directory = /usr/share/doc/postfix-2.8.7/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_helo_timeout = 10s
smtpd_milters = inet:127.0.0.1:8891
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual
答案1
首先要检查什么导致高负载的原因是什么?哪个进程消耗了最多的 CPU 时间?Postfix 进程应该是罪魁祸首。如果是类似这样的情况,clamd
那么它就不是 Postfix!
答案2
那么如何使用未绑定? 另外,检查生成邮件并连接到 Postfix 的“客户端”主机是否可以正确进行 DNS(反向)解析。