我正在维护一个服务器来发送邮件邮件(当然没有垃圾邮件)。 目前这台机器的速度是约。 每小时2000封电子邮件。
( 编辑 :实际上我今天做了一个testing邮件,取消了限制,并发送邮件给2500个最近的+活跃用户,花了大约1小时45分钟把邮件发送出去。
我的老板指出,他不满意,因为他看到像邮件黑猩猩等公司,你可以在几秒钟/分钟内发送成千上万的电子邮件。 当然,当你立刻回复,打开等等,他们确实会出去。
我的问题是,究竟需要什么来达到这样的发送速度? 我的意思是,当然,你可以添加到硬件,并build立一个越来越复杂的服务器系统,所有的发出你的邮件等。当然,这也是一个清单的问题(没有未知的主机,等等因为他们都吃掉了服务器的资源)
但除此之外,我相信肯定还有其他方法可以改善这一点。 任何人都可以对此进行一些概述?
编辑
根据评论的要求,下面是关于使用什么硬件以及发送行为的更多细节:
服务器的types
Operating system: CentOS Linux 5.11 Kernel and CPU: Linux 2.6.18-400.1.1.el5 on i686 Processor: Intel Core2 Duo CPU E7500 @ 2.93GHz, 2 cores CPU load averages: 1.07 (1 min) 1.18 (5 mins) 0.65 (15 mins) CPU usage: 4% user, 1% kernel, 56% IO, 38% idle Real memory: 1.49 GB used, 1.94 GB total Virtual memory: 1.13 GB used, 3.91 GB total Local disk space: 55.10 GB used, 219.71 GB total
MTA
Postfix version 2.3.3
电子邮件的平均大小
Of the recent mailings, the largest one I found was just below 20k. On average I can say it's probably between 8k and 10k per message.
可用的带宽
30Mbit/s symmetrical
磁盘速度
hdparm -t /dev/sda /dev/sda: Timing buffered disk reads: 336 MB in 3.01 seconds = 111.64 MB/sec dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync 16384+0 records in 16384+0 records out 1073741824 bytes (1.1 GB) copied, 23.9512 seconds, 44.8 MB/s
各种指标的衡量
CPU load - see above disk time - ??? RAM usage - see above bandwidth usage - below data from "iftop -n" over a time period of ca. 5 minutes while sending mail. TX: cum: 3.43MB peak: 1.16Mb rates: 5.36Kb 99.5Kb 137Kb RX: 1.01MB 120Kb 2.06Kb 38.0Kb 32.3Kb TOTAL: 4.44MB 1.28Mb 7.42Kb 137Kb 169Kb
一些maillog数据:
in case this is of value, here are a couple of lines from the maillog: Mar 4 14:00:32 mailserver postfix/smtp[25768]: 6C419107802A: to=<[email protected]>, relay=mx.example.com[123.123.123.123]:25, delay=1.6, delays=0.05/0/0.14/1.4, dsn=2.0.0, status=sent (250 OK id=1YT8ud-0004fe-Rn) Mar 4 14:00:32 mailserver postfix/qmgr[2806]: 6C419107802A: removed Mar 4 14:00:32 mailserver amavis[26392]: (26392-01-46) lookup (score_sender), 1 matches for "[email protected]", results: "."=>[Amavis::Lookup::RE=ARRAY(0xaa7f358),HASH(0xac5f891)] Mar 4 14:00:32 mailserver amavis[26392]: (26392-01-46) lookup_re("[email protected]"), no matches Mar 4 14:00:32 mailserver amavis[26392]: (26392-01-46) query_keys: [email protected], myself@, mailserver.com, .mailserver.com, .com, . Mar 4 14:00:32 mailserver amavis[26392]: (26392-01-46) lookup_hash([email protected]), no matches Mar 4 14:00:32 mailserver amavis[26392]: (26392-01-46) lookup (score_sender<[email protected]>) => undef, "[email protected]" does not match Mar 4 14:00:32 mailserver amavis[26392]: (26392-01-46) SpamControl: calling spam scanner Mar 4 14:00:32 mailserver amavis[26392]: (26392-01-46) spam_scan: DSPAM not available, skipping it Mar 4 14:00:32 mailserver amavis[26392]: (26392-01-46) timer set to 320 s for SA (was 480 s) Mar 4 14:00:32 mailserver amavis[26392]: (26392-01-46) calling SA parse, SA version 3.2.5 Mar 4 14:00:33 mailserver amavis[26392]: (26392-01-46) CALLING SA check Mar 4 14:00:33 mailserver postfix/smtp[25767]: A5341207802D: to=<[email protected]>, relay=mx.example.com[123.123.123.123]:25, delay=1.7, delays=0.15/0/0.14/1.4, dsn=2.0.0, status=sent (250 OK id=1YT8ue-0005BY-5x) Mar 4 14:00:33 mailserver postfix/qmgr[2806]: A5341107802D: removed Mar 4 14:00:34 mailserver postfix/smtp[25764]: C30371078144: to=<[email protected]>, relay=mx.example.com[123.123.123.123]:25, delay=1.8, delays=0.05/0/0.13/1.6, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued on mx.example.com as 1425474034-NECyl5JAc9-0Xx8wjwN)
在我自己的postfix服务器上运行一个邮件列表,我希望看到2000个消息至less被处理一次(也就是说可能被推迟),然后才能完成一杯咖啡。
您的系统似乎在外发邮件上运行垃圾邮件和病毒扫描。 虽然扫描传入邮件是一个好主意,但扫描传出邮件可能并不是一个好主意,尤其是在邮件源已经被很好控制的情况下。 我们可以看到,这是每个消息的交付增加了几秒钟,这也是驱动器的磁盘I / O显着。
我将重新configurationPostfix停止扫描外发邮件。 如果您需要正常扫描外发邮件,例如您的办公室里的人从他们的计算机发送邮件,那么请设置一个专门用于处理外发邮件列表stream量的专用邮件服务器。
您的问题是I / O速度,如高CPU等待时间所见。 这可能是由于两个因素:
$sa_local_tests_only = 1 ,排除所有依赖于networking的testing, $sa_mail_body_size_limit = 32*1024以减lessspamassassin扫描的主体部分。 一次尝试以上build议,每次都要对系统进行基准testing。 然后让我们知道结果。