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 / 问题 / 461990
Accepted
Mehdi Azizi
Mehdi Azizi
Asked: 2013-01-01 09:07:15 +0800 CST2013-01-01 09:07:15 +0800 CST 2013-01-01 09:07:15 +0800 CST

从 top 和 iotop 找出高负载原因

  • 772

如果我想防止这种高负载,我应该怎么做。
当负载高于 8 时,我的网站变慢了。
也请查看 iotop 结果。

顶部 - 20:23:10 向上 127 天,3:22,1 位用户,平均负载:9.92、9.87、9.81
任务:总共1031个,运行3个,睡觉1027个,停止0个,僵尸1个
中央处理器:14.7%us、0.7%sy、0.1%ni、79.6%id、4.7%wa、0.0%hi、0.2%si、0.0%st
内存:总计 16413676k,已使用 16312548k,空闲 101128k,缓冲区 110836k
交换:总共 10190840k,已使用 3182468k,免费 7008372k,缓存 2033604k

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令
 2776 mysql 15 0 14.6g 10g 5220 S 405.7 67.4 21710:40 mysqld
 6201 阿帕奇 15 0 369m 16m 5356 S 3.7 0.1 0:00.40 httpd
 8447 阿帕奇 15 0 368m 15m 5364 S 3.7 0.1 0:00.27 httpd
10807 阿帕奇 16 0 368m 14m 4640 S 3.7 0.1 0:00.04 httpd
11074 根 15 0 11548 1668 676 R 3.7 0.0 0:00.04 顶部
 2088 阿帕奇 15 0 368m 15m 5972 S 1.8 0.1 0:00.93 httpd
 2737 根 15 0 3824 392 336 S 1.8 0.0 433:37.40 klogd
 6879 阿帕奇 15 0 367m 15m 5652 S 1.8 0.1 0:00.39 httpd
 8457 阿帕奇 15 0 367m 15m 5744 S 1.8 0.1 0:00.54 httpd
 8866 阿帕奇 15 0 369m 15m 4832 S 1.8 0.1 0:00.18 httpd
 9147 阿帕奇 15 0 368m 14m 4960 S 1.8 0.1 0:00.15 httpd
 9884 阿帕奇 16 0 368m 16m 6508 S 1.8 0.1 0:03.97 httpd
10583 阿帕奇 16 0 368m 15m 5148 S 1.8 0.1 0:00.10 httpd
10731 阿帕奇 15 0 367m 13m 3484 S 1.8 0.1 0:00.16 httpd
10782 阿帕奇 16 0 367m 12m 3544 S 1.8 0.1 0:00.04 httpd
14618 阿帕奇 15 0 367m 16m 6736 S 1.8 0.1 0:03.24 httpd
18697 阿帕奇 15 0 368m 16m 6744 S 1.8 0.1 0:02.47 httpd
虚拟机统计
procs ----------memory------------ ---swap-- -----io---- --system-- -----cpu ------
 rb swpd free buff cache si so bi bo in cs us sy id wa st
 2 1 3182636 468436 111776 2012016 0 0 94 274 0 0 15 1 80 5 0
iostat
Linux 2.6.18-274.12.1.el5 () 12/31/2012

avg-cpu: %user %nice %system %iowait %steal %idle
          14.66 0.12 0.93 4.73 0.00 79.56

设备:tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
122.97 1504.32 4383.82 16525670026 48158254126
sda1 0.00 0.04 0.00 435456 230
sda2 122.97 1504.28 4383.82 16525231218 48158253896
dm-0 570.94 1502.31 4381.94 16503546226 48137527328
dm-1 0.48 1.97 1.89 21684608 20727136

顶
总磁盘读取:126.48 K/s | Total DISK WRITE:6.79 M/s(这不是太高了吗?)
  TID PRIO 用户磁盘读取磁盘写入交换 IO> 命令
15610 是/4 mysql 0.00 B/s 0.00 B/s 99.99 % 25.76 % mysqld --basedi~mysql/mysql.sock
15622 是/4 mysql 0.00 B/s 0.00 B/s -7.28 % 24.92 % mysqld --basedi~mysql/mysql.sock
 3659 是/4 mysql 7.44 K/s 5.88 M/s 0.00 % 13.71 % mysqld --basedi~mysql/mysql.sock
 2822 是/4 mysql 0.00 B/s 0.00 B/s 2.88 % 10.22 % mysqld --basedi~mysql/mysql.sock
 2819 是/4 mysql 0.00 B/s 0.00 B/s 0.00 % 9.71 % mysqld --basedi~mysql/mysql.sock
15635 是/4 mysql 0.00 B/s 0.00 B/s -3.72 % 8.09 % mysqld --basedi~mysql/mysql.sock
15629 是/4 mysql 0.00 B/s 0.00 B/s -2.42 % 5.58 % mysqld --basedi~mysql/mysql.sock
  801 be/3 根 0.00 B/s 208.31 K/s 0.00 % 3.97 % [kjournald]
 2842 be/4 根 0.00 B/s 0.00 B/s 8.09 % 3.81 % irqbalance
 2820 是/4 mysql 0.00 B/s 0.00 B/s 0.00 % 2.88 % mysqld --basedi~mysql/mysql.sock
 7001 be/4 阿帕奇 0.00 B/s 0.00 B/s 0.00 % 2.70 % httpd
15636 是/4 mysql 0.00 B/s 0.00 B/s 10.32 % 2.51 % mysqld --basedi~mysql/mysql.sock
 8034 be/4 阿帕奇 0.00 B/s 0.00 B/s 0.00 % 2.42 % httpd
 2140 be/4 阿帕奇 0.00 B/s 0.00 B/s 0.00 % 2.32 % httpd

linux
  • 4 4 个回答
  • 2281 Views

4 个回答

  • Voted
  1. Best Answer
    Sammitch
    2013-01-01T10:43:24+08:002013-01-01T10:43:24+08:00

    由于 mySQL 将您推向交换空间的深度,您的特定问题肯定与 I/O 相关。理想情况下,您应该在绝大多数时间使用零交换,因为操作系统开始将内存交换到磁盘的那一刻,您的性能将随着进程等待 I/O 而急剧下降。可以把它想象Performance = 1 / N ^ swap成当操作系统使用更多的交换空间时,性能通常会呈指数级下降。您的交换空间似乎有 3 GB的深度,这对我来说简直太可怕了。

    如果,在你像你提到的那样调整你的 mySQL 设置之后,你仍然平均交换超过几兆字节,你应该考虑:[最好到最坏的想法,2 和 3 大致并列]

    1. 优化数据库模式和查询。
    2. 为机器添加更多 RAM。
    3. 将 mySQL 服务器拆分到另一台专用机器上。
    4. 将交换空间迁移到 SSD 等高速设备。[这会杀死 SSD]
    • 6
  2. TomTom
    2013-01-01T09:14:49+08:002013-01-01T09:14:49+08:00

    如果我想防止这种高负载,我应该怎么做。

    更快的服务器,更好的编程?

    说真的,你从错误的角度看它。就像“我是一名出租车司机,我每天开太多公里,我该如何减少”。您的请求方是固定的(不考虑 ddos​​ 攻击等问题)并且必须提供项目。

    所以它会变成 - 获得更强大的服务器,分配更多的内存用于缓存(更强大的服务器)或者用“修复你的错误”棒来打击一些程序员,让他们写出更好的代码。

    在这种情况下,它可能是一个 mySql 问题,但是这将作为“使用索引,伙计”或“写出更好的查询”返回给网站的开发人员。并不是说我没有看到(sql server、门户网站、零索引、服务器“死亡”,IO 吞噬了一切)。但这是网站开发人员必须修补的问题。

    • 1
  3. mdpc
    2013-01-01T09:56:56+08:002013-01-01T09:56:56+08:00

    从此处的数据来看,您正在交换。这真的会扼杀你的表现,因为这是任何类型的交换所做的。

    我的直接建议是将机器中的内存量增加一倍……当然还要增加交换空间以匹配内存大小。

    • 0
  4. Lucas Kauffman
    2013-01-23T11:15:20+08:002013-01-23T11:15:20+08:00

    我认为Mysql是你的问题。您正在使用所有导致交换的内存。交换导致更高的 cpu,因为您的交换分区正在填充并且您的 IO 无法处理其他任何事情。如您所见,您的交换正在使用中,但尚未满。虽然更快的磁盘很有趣,但您也应该增加内存。Swap 仅供偶尔使用,而不是经常使用。

    • 0

相关问题

  • 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