我运营一个网站,并向订阅者发送合法的选择性每日电子邮件简报. Web托管和电子邮件发送都由同一台机器完成.

我有大约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的最佳方法是什么?

如上所述,负载平均值与运行队列中的等待进程数相关.如果这些进程中的每一个都没有什么工作要做,并且可以快速释放处理器,那么您可以处理比每个cpu经验法则更大的负载平均值.

邮件就是这个的完美例子,每个进程都需要cpu发送消息,但非常非常少.我见过邮件系统运行sendmail的平均负载在25到35之间,系统仍然是交互式的,工作正常.

标记

php – 我的服务器发生了什么?高负载,大量空闲CPU时间,低磁盘利用率的更多相关文章

  1. 关于h5中的fetch方法解读(小结)

    这篇文章主要介绍了关于h5中的fetch方法解读(小结),fetch身为H5中的一个新对象,他的诞生,是为了取代ajax的存在而出现,有兴趣的可以了解一下

  2. ios – 200在xcode 7中生成DSMM警告

    解决方法我有同样的问题.Facebook表示他们已经意识到这一点并且不是高优先级,因为它不会影响应用程序.我回退到4.7.1警告问题不再存在.我不认为它会被拒绝但不能确定.

  3. xamarin.ios – Facebook iOS SDK:应用程序在启动时找不到“找不到符号:_ACFacebookAppIdKey.”仅在iOS 5中崩溃

    解决方法这是一个已修复的knownbug.目前唯一已知的解决方法是使用较旧版本的FacebookSDK.

  4. osx – 无法创建目录/ var / teamsserver

    OpenSSH_6.2p2,OSSLShim0.9.8r8Dec2011debug1:Readingconfigurationdata/etc/ssh_configdebug1:/etc/ssh_configline20:Applyingoptionsfor*debug1:Connectingto1.2.3.4[1.2.3.4]portPORT.debug1:Connectionestablished.Couldnotcreatedirectory‘/var/teamsserver/.ssh’.debug

  5. ios – 如何在Xcode 4.5中完成代码签名

    解决方法事实证明,从AppStore升级XCode并不会自动升级所有内容.转到首选项/下载,并确保安装最新的命令行工具.

  6. xcode7 – 谁在创建文件“/private/var/tmp/Untitled-*.uicatalog”?

    我正在调查为什么TeamCity构建代理程序用完了磁盘,并且在/private/var/tmp中找到了超过11,000个文件,它们都以Untitled-.uicatalog行命名.每个文件至少0.6MB.总磁盘占用空间约为4GB.这些文件可以追溯到几个月,所以他们能够重新启动.谁在创造他们?Xcode在编译至少有一个图像的xcassets目录时创建这些目录.我可以删除它们吗?

  7. 如何在iOS 10上设置日志级别?

    换句话说,如果我在iOS上运行的代码就像这样:那么在Console.app中看到记录的消息需要做些什么呢?

  8. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  9. 为什么Xcode 7 iOS模拟器冻结?

    在Xcode7模拟器中,特别是在滚动或执行其他GPU密集型任务时,我会得到60秒以上的冻结.问题似乎是模拟器作为一个整体,而不是我的应用程序.如果我跟踪仪器中的cpu时间,50秒的实时显示为我的应用程序cpu时间的0.5s以下.这是怎么回事?解决方法我运行BetterSnapTool进行窗口管理.退出此应用程序会立即修复问题,即使SIM卡处于冻结状态.不知道为什么,但更好的SnapTool似乎正在干扰iOSSimulator对GPU的使用.

  10. 为什么Xcode 8(iOS 10)在控制台中打印[LogMessageLogging]

    为什么Xcode8打印[LogMessageLogging]在控制台中,当我调用地图视图时?任何人都可以提出一些建议吗?解决方法PrivacyTheunifiedloggingsystemconsidersdynamicstringsandcomplexdynamicobjectstobeprivate,anddoesnotcollectthemautomatically.Toensuretheprivacyofusers,itisrecommendedthatlogmessagesconsiststri

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部