AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 728516
Accepted
dotancohen
dotancohen
Asked: 2015-10-13 21:46:54 +0800 CST2015-10-13 21:46:54 +0800 CST 2015-10-13 21:46:54 +0800 CST

如何确保 I/O 请求恢复到正常速率?

  • 772

在Amazon Web Services上,我使用t2.small EC2实例作为 VPS,为 LAMP (PHP) 堆栈上的几个网站提供服务。我刚收到一张账单,几乎是我平时账单的三倍。我看到我的I/O 请求使用率非常高。我登录到服务器并注意到磁盘已满。我已经删除了一堆非关键文件和日志,磁盘 (EBS) 现在的容量小于 60%,但我想检查两件事。

  1. 如何判断大量 I/O 请求是否是由于磁盘已满?
  2. 如何判断我是否仍在处理 I/O 请求?

我没有启用特定于 AWS 的CloudWatch监控服务,所以我可能不会得到 #1 的答案,但任何建议都将不胜感激。

关于#2,我使用了这篇博文中提到的两种方法来确定我的 I/O 速率,看起来它非常非常高。以下是来自服务器的一些统计数据:

$ iostat
Linux 3.13.0-45-generic (dysphoria)     2015-10-08      _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.74    0.01    0.69   16.83    0.43   79.30

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvda            170.08     10039.29        32.52  843300857    2731428
xvdf              0.01         0.02         0.00       1308          0

$ cat /proc/diskstats
   1       0 ram0 0 0 0 0 0 0 0 0 0 0 0
   1       1 ram1 0 0 0 0 0 0 0 0 0 0 0
   1       2 ram2 0 0 0 0 0 0 0 0 0 0 0
   1       3 ram3 0 0 0 0 0 0 0 0 0 0 0
   1       4 ram4 0 0 0 0 0 0 0 0 0 0 0
   1       5 ram5 0 0 0 0 0 0 0 0 0 0 0
   1       6 ram6 0 0 0 0 0 0 0 0 0 0 0
   1       7 ram7 0 0 0 0 0 0 0 0 0 0 0
   1       8 ram8 0 0 0 0 0 0 0 0 0 0 0
   1       9 ram9 0 0 0 0 0 0 0 0 0 0 0
   1      10 ram10 0 0 0 0 0 0 0 0 0 0 0
   1      11 ram11 0 0 0 0 0 0 0 0 0 0 0
   1      12 ram12 0 0 0 0 0 0 0 0 0 0 0
   1      13 ram13 0 0 0 0 0 0 0 0 0 0 0
   1      14 ram14 0 0 0 0 0 0 0 0 0 0 0
   1      15 ram15 0 0 0 0 0 0 0 0 0 0 0
   7       0 loop0 0 0 0 0 0 0 0 0 0 0 0
   7       1 loop1 0 0 0 0 0 0 0 0 0 0 0
   7       2 loop2 0 0 0 0 0 0 0 0 0 0 0
   7       3 loop3 0 0 0 0 0 0 0 0 0 0 0
   7       4 loop4 0 0 0 0 0 0 0 0 0 0 0
   7       5 loop5 0 0 0 0 0 0 0 0 0 0 0
   7       6 loop6 0 0 0 0 0 0 0 0 0 0 0
   7       7 loop7 0 0 0 0 0 0 0 0 0 0 0
 202       0 xvda 14198708 1225 1686588426 26715600 87579 51756 5461696 11290600 0 16654328 38003076
 202       1 xvda1 14198527 1203 1686586802 26715376 87579 51756 5461696 11290600 0 16654236 38002848
 202      80 xvdf 447 6 2616 288 0 0 0 0 0 288 288

$ free -m
             total       used       free     shared    buffers     cached
Mem:          2000       1910         89          6          6       1216
-/+ buffers/cache:        688       1312
Swap:            0          0          0

尽管上述信息是在启动后不久获取的,但iostat报告显示即使系统运行了几个小时后,初始 TPS 也在 50-80 范围内。该服务器为大约 20 个站点提供服务,其中只有 3 个站点每天的点击次数超过几次。每天有数百名访客。服务器和站点多年来一直保持这种配置,没有出现问题。直到最近 I/O 才开始激增,而代码、服务器配置或网站负载都没有相应的变化。

请注意,这个问题最初是在 Amazon Web Services 官方论坛上提出的,但似乎没有人能够在那里提供帮助。也许这个问题对于那个论坛来说太笼统了。

linux
  • 1 1 个回答
  • 52 Views

1 个回答

  • Voted
  1. Best Answer
    user9517
    2015-10-13T22:16:55+08:002015-10-13T22:16:55+08:00

    iostat 手册页中有重要信息,如果不理解,可能会导致对所提供数据的误解。

    iostat 命令生成的第一个报告提供有关自系统启动以来的时间的统计信息。每个后续报告都涵盖自上次报告以来的时间。每次运行 iostat 命令时都会报告所有统计信息。

    因此,您上面的简单 iostat 报告自系统启动以来收集的值。

    以间隔运行 iostst 并丢弃第一组统计信息更为正常,例如

    iostat 5
    

    这将每 5 秒报告一次相关统计信息。

    一旦您收集到正确的数据,您将能够更好地了解情况。


    看一下atop命令。特别是使用特权运行它并选择d将启用每个线程的磁盘 io 统计信息。

    • 1

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve