我有大约10万订阅者选择了我的每日电子邮件简报.我的PHP脚本在最近才向所有人发送邮件方面做得非常好,但随着列表的增长,我无法跟上.
当我运行顶部时,我的负载非常高 – 通常至少为6或7,有时高达15 – 尽管我只有两个cpu.但是,当我运行sar时,我的cpu平均闲置约30%的时间.所以,似乎我不受cpu限制.当我运行iostat时,似乎我没有磁盘绑定,因为我的每个设备的%util都非常低(不超过5%).
鉴于我似乎没有cpu绑定或磁盘绑定,为什么顶级报告如此高负载?
另外,由于我似乎没有cpu绑定或磁盘绑定,为什么我的电子邮件发送脚本无法跟上?
这是我在跑步时看到的:
top - 11:33:28 up 74 days,18:49,2 users,load average: 7.65,8.79,8.28 Tasks: 168 total,5 running,162 sleeping,0 stopped,1 zombie cpu(s): 38.9%us,58.6%sy,0.8%ni,0.0%id,0.7%wa,0.2%hi,0.8%si,0.0%st Mem: 3083012k total,2144436k used,938576k free,281136k buffers Swap: 2048248k total,39164k used,2009084k free,1470412k cached
这是我在运行iostat -mx时看到的内容:
avg-cpu: %user %nice %system %iowait %steal %idle 34.80 1.20 55.24 0.37 0.00 8.38 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sda 0.19 71.70 1.59 29.45 0.02 0.07 5.90 0.55 17.82 1.16 3.59 sda1 0.00 0.00 0.00 0.00 0.00 0.00 7.10 0.00 13.80 13.72 0.00 sda2 0.05 50.45 1.13 24.57 0.01 0.29 24.25 0.35 13.43 1.15 2.97 sda3 0.05 10.17 0.20 2.33 0.01 0.05 43.75 0.05 20.96 2.45 0.62 sda4 0.00 0.00 0.00 0.00 0.00 0.00 2.00 0.00 70.50 70.50 0.00 sda5 0.07 0.22 0.03 0.07 0.00 0.00 32.84 0.08 856.19 8.03 0.08 sda6 0.02 5.45 0.03 0.72 0.00 0.02 67.55 0.02 26.72 5.26 0.39 sda7 0.00 1.56 0.00 0.42 0.00 0.01 38.04 0.00 8.88 5.84 0.24 sda8 0.01 3.84 0.20 1.35 0.00 0.02 28.55 0.05 31.90 4.08 0.63
这是我在运行sar时看到的内容:
09:40:02 AM cpu %user %nice %system %iowait %steal %idle 09:50:01 AM all 30.59 1.01 49.80 0.23 0.00 18.37 10:00:08 AM all 31.73 0.92 51.66 0.13 0.00 15.55 10:10:06 AM all 30.43 0.99 48.94 0.26 0.00 19.38 10:20:01 AM all 29.58 1.00 47.76 0.25 0.00 21.42 10:30:01 AM all 29.37 1.02 47.30 0.18 0.00 22.13 10:40:06 AM all 32.50 1.01 52.94 0.16 0.00 13.39 10:50:01 AM all 30.49 1.00 49.59 0.15 0.00 18.77 11:00:01 AM all 29.43 0.99 47.71 0.17 0.00 21.71 11:10:07 AM all 30.26 0.93 49.48 0.83 0.00 18.50 11:20:02 AM all 29.83 0.81 48.51 1.32 0.00 19.52 11:30:06 AM all 31.18 0.88 51.33 1.15 0.00 15.47 Average: all 26.21 1.15 42.62 0.48 0.00 29.54
以下是在我碰巧运行top -c的特定时间列出的少数几个进程:
PID USER PR NI VIRT RES SHR S %cpu %MEM TIME+ COMMAND 8180 MysqL 16 0 57448 19m 2948 S 26.6 0.7 4702:26 /usr/sbin/MysqLd --basedir=/ --datadir=/var/lib/MysqL --user=MysqL --pid-file=/var/lib/MysqL/bristno.pid --skip-external-locking 26956 brristno 17 0 0 0 0 Z 8.0 0.0 0:00.24 [PHP] <defunct> 26958 brristno 17 0 94408 43m 37m R 5.0 1.4 0:00.15 /usr/bin/PHP /home/brristno/public_html/dbv.PHP 22852 nobody 16 0 9628 2900 1524 S 0.7 0.1 0:00.17 /usr/local/apache/bin/httpd -k start -DSSL 8591 brristno 34 19 96896 13m 6652 S 0.3 0.4 0:29.82 /usr/local/bin/PHP /home/brristno/bin/mailer.PHP 1qwqyb6 i0gbor 24469 nobody 16 0 9628 2880 1508 S 0.3 0.1 0:00.08 /usr/local/apache/bin/httpd -k start -DSSL 25495 nobody 15 0 9628 2876 1500 S 0.3 0.1 0:00.06 /usr/local/apache/bin/httpd -k start -DSSL 26149 nobody 15 0 9628 2864 1504 S 0.3 0.1 0:00.04 /usr/local/apache/bin/httpd -k start -DSSL
谢谢你,德米特里!
1)我已经有一个脚本取消订阅过去一个月内至少退回五次的电子邮件地址,所以希望这会使我的列表相对受限于活动的电子邮件地址.
2)我正在使用exim 4.69.我的配置文件是
/etc/exim.conf
我的日志文件位于:
在/ var /日志/ exim_mainlog
在/ var /日志/ exim_paniclog
在/ var /日志/ exim_rejectlog
另外,当我查看/etc/syslog.conf时,我看到以下内容:
# Log all the mail messages in one place. mail.* -/var/log/maillog
我不知道 – / var / log / maillog开头的“ – ”是什么意思,但是当我查看该文件时,很明显很多东西都被记录在那里.
在/ var /日志/ exim_mainlog
我之后添加到/etc/exim.conf这一行:
no_message_logs
我认为这会禁用邮件日志记录(我确实重启了exim),但是当我查看/ var / log / maillog和/ var / log / exim_mainlog时,两个文件仍然在接收新的日志条目.
问题:如何禁用大多数/所有exim日志记录?
3)当我查看/ var / log / exim_paniclog时,我看到很多像这样的条目:
2010-12-19 04:03:32 1PUFB1-0006xZ-GF User 0 set for local_delivery transport is on the never_users list
环顾四周后,似乎这意味着exim正在尝试传递到根电子邮件地址.在尽可能少地使用cpu资源的情况下,将这些邮件传递到root的最佳方法是什么?