磁盘过载和服务器速度慢

磁盘过载和服务器速度慢

由于我的网站很慢,所以我监控了服务器上的磁盘。

这是我的磁盘统计信息:

读取:0.29 请求/秒 写入:50.19 请求/秒

我不明白为什么我的磁盘每秒会有 50 个写入请求。

我怎样才能找到像猪一样编写的程序?命令行?程序?

更新:服务器是 debian etch。磁盘位于 SAN 中,因此它是虚拟磁盘。

我的数据库是mysql,我的网站是ruby on rails。

我有 1 GB 内存。

以下是 free 命令的结果:

free -m   
             total       used       free     shared    buffers     cached
Mem:           995        769        225          0         46        421
-/+ buffers/cache:        301        693
Swap:         1906          0       1906

我不认为这是交换问题。我不明白 :(

好的,经过多次搜索,我发现:

Postfix 在我的 syslog 文件中每秒添加 10 个条目 :s,日志如下:

Feb 16 10:51:41 myhost postfix/local[24480]: 333902F1CE: to=<[email protected]>, orig_to=<root>, relay=local, delay=73, delays=42/25/0/6.1, dsn=5.1.1, status=bounced (unknown user: "ovh")
Feb 16 10:51:41 myhost postfix/qmgr[3753]: 528032F1D3: removed
Feb 16 10:51:41 myhost postfix/cleanup[24624]: CEBAD2F1D4: message-id=<[email protected]>
Feb 16 10:51:41 myhost postfix/bounce[24575]: B8EE32F19B: sender non-delivery notification: DDE2D2F1DE
Feb 16 10:51:41 myhost postfix/qmgr[3753]: DDE2D2F1DE: from=<>, size=2798, nrcpt=1 (queue active)
Feb 16 10:51:41 myhost postfix/cleanup[25934]: 659B02F1D3: message-id=<[email protected]>
Feb 16 10:51:41 myhost postfix/qmgr[3753]: B8EE32F19B: removed
Feb 16 10:51:41 myhost postfix/local[24948]: DDE2D2F1DE: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=15, delays=12/2/0/1.3, dsn=5.1.1, status=bounced (unknown user: "ovh")
Feb 16 10:51:41 myhost postfix/bounce[24726]: 333902F1CE: sender non-delivery notification: 659B02F1D3
Feb 16 10:51:41 myhost postfix/qmgr[3753]: CEBAD2F1D4: from=<[email protected]>, size=983, nrcpt=1 (queue active)
Feb 16 10:51:41 myhost postfix/qmgr[3753]: 333902F1CE: removed
Feb 16 10:51:41 myhost postfix/qmgr[3753]: 659B02F1D3: from=<>, size=2792, nrcpt=1 (queue active)
Feb 16 10:51:41 myhost postfix/qmgr[3753]: DDE2D2F1DE: removed
Feb 16 10:51:47 myhost postfix/local[24480]: 659B02F1D3: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=8.7, delays=3.3/0/0/5.4, dsn=5.1.1, status=bounced (unknown user: "ovh")
Feb 16 10:51:47 myhost postfix/local[25978]: CEBAD2F1D4: to=<[email protected]>, orig_to=<root>, relay=local, delay=32, delays=27/0/0/5.4, dsn=5.1.1, status=bounced (unknown user: "ovh")
Feb 16 10:51:47 myhost postfix/qmgr[3753]: 659B02F1D3: removed
Feb 16 10:51:47 myhost postfix/cleanup[24906]: 1A7512F19B: message-id=<[email protected]>
Feb 16 10:51:53 myhost postfix/bounce[24726]: CEBAD2F1D4: sender non-delivery notification: 1A7512F19B
Feb 16 10:51:53 myhost postfix/qmgr[3753]: CEBAD2F1D4: removed
Feb 16 10:51:53 myhost postfix/qmgr[3753]: 1A7512F19B: from=<>, size=2798, nrcpt=1 (queue active)
Feb 16 10:51:59 myhost postfix/local[24948]: 1A7512F19B: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=12, delays=6.2/0/0/6.1, dsn=5.1.1, status=bounced (unknown user: "ovh")
Feb 16 10:51:59 myhost postfix/qmgr[3753]: 1A7512F19B: removed
Feb 16 10:52:11 myhost /USR/SBIN/CRON[25984]: (root) CMD (/usr/local/rtm/bin/rtm 18 > /dev/null 2> /dev/null)
Feb 16 10:52:11 myhost /USR/SBIN/CRON[25985]: (root) CMD (wget -O /dev/null http://monsite.com/cron/desactive_arene)
Feb 16 10:52:16 myhost /USR/SBIN/CRON[25987]: (root) CMD (run-parts /usr/local/oco/bin/60sec >/dev/null 2>/dev/null)
Feb 16 10:52:22 myhost /USR/SBIN/CRON[25988]: (root) CMD (run-parts /usr/local/oco/bin/120sec >/dev/null 2>/dev/null)
Feb 16 10:52:39 myhost postfix/pickup[23034]: 8A8CC2F1BD: uid=0 from=<root>
Feb 16 10:52:44 myhost postfix/cleanup[24624]: 8A8CC2F1BD: message-id=<[email protected]>
Feb 16 10:52:44 myhost postfix/qmgr[3753]: 8A8CC2F1BD: from=<[email protected]>, size=983, nrcpt=1 (queue active)
Feb 16 10:52:44 myhost postfix/local[24480]: 8A8CC2F1BD: to=<[email protected]>, orig_to=<root>, relay=local, delay=21, delays=15/0/0/6.1, dsn=5.1.1, status=bounced (unknown user: "ovh")

而现在,我不明白发生了什么。

答案1

除了iotop如上所述之外,您没有在某处启用 LOG_ALL,是吗?

其他可能有用的提示:

  • 查找文件数量最多的目录
  • 或者与其他相比尺寸太大
  • 搜索交换时的问题:您有交换空间吗?它启用了吗?您的内存是否已满,因此机器是否不断尝试交换到磁盘?
  • 如果你停止一些进程(比如数据库),情况会怎样?行为会改变吗?也许你需要的不是监控肇事者进程,而是对应用(例如,mysql)使用适当的工具
  • 最后.. 你确定这不是由于 DoS 攻击而产生的某种防火墙日志记录机制吗?

答案2

如果它是较新的 Linux 机器,iotop 就是您想要运行的程序。

相关内容