MySQL 高“sy”(内核)CPU 时间

MySQL 高“sy”(内核)CPU 时间

我的 MySQL 服务器每秒运行大约 100 次写入和 500 次读取。CPU 使用率对我来说很奇怪。“us”(用户)时间显示 2-8%,而“sy”(内核/系统)时间通常显示 50+%。以下是一些 vmstat 输出:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 5  1 3088828 153744    492 238764  152    0   224   578 3225 2343  7 61  5  3
 6  0 3088792 153356    492 239016   60    0    96  1955 3001 2102  8 59  5  3
16  1 3088792 153140    492 239008   32    0    80  1115 4906 3850  6 54 18 14
 2  1 3088792 153248    492 239124    8    0    44  1114 4529 3407  4 55 19 12
 2  0 3088792 152768    624 239208    0    0   180   914 3984 3052  4 39 48  8
 0  1 3088788 152736    624 239260   32    0    76   797 3683 2713  4 48 29  8
16  0 3088788 152644    624 239356    4    0    36   983 4042 2995  4 55 21  7
 3  0 3088788 153044    624 239412    8    0    48   891 3981 2928  5 51 29  7
 1  0 3088788 153016    624 239500    0    0    16   384 3581 2301  3 52 39  3
 1  1 3088768 150852    628 239524   32    0    72   830 3804 2826  4 48 33  9
 4  2 3088752 152604    632 239584   32    0    72   744 3423 2467  6 61  7  3
 3  0 3088704 152024    632 239664   80    0   152  1272 3641 2729  5 51 22  9
12  1 3088704 150000    632 239760    0    0    44  1037 4049 2989  4 53 19 12

以下是一些 mpstat 输出:

05:10:32 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
05:10:33 PM  all    5.65    0.43   55.65   10.87    0.00    1.30   16.52    0.00    9.57
05:10:34 PM  all    2.11    0.00   36.14    5.96    0.00    0.35    2.46    0.00   52.98
05:10:35 PM  all    1.98    0.00   28.05    7.26    0.00    0.33    0.00    0.00   62.38
05:10:36 PM  all    2.01    0.67   27.09    2.68    0.00    0.67    4.35    0.00   62.54
05:10:37 PM  all    2.04    0.68   32.65    6.12    0.00    0.34    2.04    0.00   56.12
05:10:38 PM  all    4.13    0.00   50.41   10.33    0.00    0.83   15.29    0.00   19.01
05:10:39 PM  all    2.71    0.00   32.54    4.75    0.00    0.34    0.34    0.00   59.32
05:10:40 PM  all    1.03    1.03   31.62    4.12    0.00    0.34    4.12    0.00   57.73
05:10:41 PM  all    3.02    0.34   27.85    8.05    0.00    0.67    0.34    0.00   59.73
05:10:42 PM  all    1.69    1.69   27.70    8.45    0.00    0.34    4.39    0.00   55.74
05:10:43 PM  all    3.19    0.00   38.65    3.90    0.00    0.35    2.13    0.00   51.77
05:10:44 PM  all    2.50    0.36   37.14    7.50    0.00    0.36    2.50    0.00   49.64
05:10:45 PM  all    4.17    0.38   42.42    7.20    0.00    0.38    4.92    0.00   40.53
05:10:46 PM  all    4.42    1.20   49.40    9.24    0.00    0.40    5.22    0.00   30.12
05:10:47 PM  all    3.32    0.00   44.65   18.82    0.00    0.37    0.37    0.00   32.47
05:10:48 PM  all    2.72    0.78   48.64    5.45    0.00    0.78    5.06    0.00   36.58
05:10:49 PM  all    3.69    0.00   48.36    4.92    0.00    0.82   13.11    0.00   29.10
05:10:50 PM  all    4.52    0.00   59.28   10.86    0.00    0.90   19.91    0.00    4.52
05:10:51 PM  all    4.02    0.89   58.04    3.57    0.00    0.45   22.32    0.00   10.71
05:10:52 PM  all    4.02    0.89   56.25    5.80    0.00    1.34   19.20    0.00   12.50
05:10:53 PM  all    5.38    1.15   39.62    8.08    0.00    0.77    7.69    0.00   37.31

这是正常的吗?我该如何解决“sy”CPU 使用率过高的问题?我正在 EC2“大型”实例上运行。

这是主-主对之一,因此如果重要的话,复制是双向运行的。

答案1

vmstat很好,但mpstat还增加了一些内容。您也可以发布其输出吗?

mpstat 上的更新:看起来 I/O 突发对系统有显著影响,但目前还不能说这是主要原因。您的存储是什么,它使用什么 FS,您是否考虑过减少 I/O 压力?

更新于 FS:同时,XFS 是用于数据库存储的出色 FS,其最新版本的元数据性能不佳。我注意到某些模式的 CPU 使用率为 100%,切换到除 XFS 之外的任何其他模式都可以解决问题。但现在它有silverbulletdelaylog安装选项。您最好检查您的内核版本是否支持它。我也希望您noatime至少已经设置了。

因此,划清界限 — — 我建议朝着减少 I/O 的方向发展。

答案2

可能是由于缓冲池内存回收。我们遇到过这种情况,即许多客户端运行同一组选择查询(慢速查询日志中有许多来自不同客户端的重复查询)。由于我们使用的是商业查询负载平衡器,因此我们能够将一些选择定向到从属服务器,从而解决了这个问题。

相关内容