设为首页 加入收藏

TOP

MySQL 调优基础(二) Linux内存管理(二)
2015-11-21 01:38:37 来源: 作者: 【 】 浏览:7
Tags:MySQL 基础 Linux 内存 管理
.swappingness=0 的解释,如果设置成0,可能会发生00M,而将mysqld给kill掉。新内核(2.6.32-303.el6及以后)推荐的做法是:
?
1)尽量保证Linux操作系统还有足够的内存;
?
2)最新的内核,建议把vm.swappiness设置1;
?
3)考虑设置 /proc/$(pidof -s mysqld)/oom_adj为较小的值来尽量避免MySQL由于内存不足而被关闭。
?
具体参见:http://www.woqutech.com/?p=1397
?
3. 如何修改 oom_adj 值
?
查看mysqld的oom_ajd值:
?
[root@localhost ~]# cat /proc/`pidof -s mysqld`/oom_adj
0
[root@localhost ~]# cat /proc/$(pidof -s mysqld)/oom_adj
0
默认值为0. 当我们设置为-17时,对于该进程来说,就不会触发OOM机制,被杀掉。修改:
?
[root@localhost ~]# echo -17 > /proc/$(pidof mysqld)/oom_adj
[root@localhost ~]# cat /proc/$(pidof mysqld)/oom_adj
-17
这里为什么是-17呢?这和Linux的实现有关系。在Linux内核中的oom.h文件中,可以看到下面的定义:
?
?
?/* /proc//oom_adj set to -17 protects from the oom-killer */
?
#define OOM_DISABLE (-17)
?
/* inclusive */
?
#define OOM_ADJUST_MIN (-16)
?
#define OOM_ADJUST_MAX 15?
?
这个oom_adj中的变量的范围为15到-16之间。越大越容易被kill。oom_score就是它计算出来的一个值,就是根据这个值来选择哪些进程被kill掉的。
?
总之,通过上面的分析可知,满足下面的条件后,就是启动OOM机制。
?
1) VM里面分配不出更多的page(注意linux kernel是延迟分配page策略,及用到的时候才alloc;所以malloc + memset才有效)。
?
2) 用户地址空间不足,这种情况在32bit机器上及user space超过了3GB,在64bit机器上不太可能发生。
?
具体参见:http://blog.chinaunix.net/uid-20788636-id-4308527. html
?
其实设置 mysqld的oom_adj不是最好的选择,mysqld不会被kill,必然就会导致其它进程被kill掉;最好还是保障内存充足或者设置vm.swappiness=1比较好
?
4. 内存瓶颈的检测
?
Linux内存的瓶颈,主要在于查看是否有比较严重的 swap 的发生(swap out/page out)。其它空虚内存的大小,swap分区被使用都不能说明说明问题。
?
区分 swap out 和 page out:
?
Page out moves individual pages to swap space on the disk; swapping is a bigger operation that moves the entire address space of a process to swap space in one operation.(page out 是指将单独的page交换到磁盘,而swap out是指将整个进程的内存交换到磁盘)
?
使用 vmstat 从整个 系统层面查看swap out:
?
?
[root@localhost ~]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0 0 400776  55292  82416    0    0    335  103   87  0  6 94  0  0
 0  0 0 400768  55292  82416    0    000   54   65  0  2 98  0  0
 0  0 0 400768  55292  82416    0    000   69   72  0  3 97  0  0
 0  0 0 400644  55300  82416    0    00    18   67   79  0  3 97  0  0
 0  0 0 400644  55300  82416    0    000   51   61  0  2 98  0  0
 0  0 0 400644  55300  82416    0    000   64   69  0  2 98  0  0
 0  0 0 400644  55308  82416    0    00    20   58   73  0  2 98  0  0

?

?
其中的 swap si: 表示每秒 swap in; so:表示每秒swap out;
?
? ?Swap
? si: Amount of memory swapped in from disk (/s).
? so: Amount of memory swapped to disk (/s).
使用 sar -B 从整个系统层面查看page out:

[root@localhost ~]# sar -B
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/01/2015      _i686_  (1 CPU)

10:57:33 AM       LINUX RESTART

11:00:01 AM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
11:10:01 AM     39.84      4.85    340.32      0.21     39.40      0.00      0.00      0.00      0.00
11:20:01 AM      0.06      2.76     10.69      0.00      3.21      0.00      0.00      0.00      0.00
11:30:01 AM      0.14      2.68     10.16      0.00      3.08      0.00      0.00      0.00      0.00
11:40:01 AM     69.58     13.07    154.16      0.01     47.29      0.00      0.00      0.00      0.00
11:50:01 AM      1.84      3.93     28.39      0.02      9.17      0.00      0.00      0.00      0.00
12:00:01 PM      0.00      3.20     19.70      0.00     10.87      0.00      0.00      0.00      0.00
12:10:01 PM      0.01      2.90     31.96      0.00      8.77      0.00      0.00      0.00      0.00
12:20:01 PM      0.06      3.06     40.04      0.00     10.98      0.00      0.00      0.00      0.00
12:30:02 PM      2.17      3.81     81.19      0.02     21.63      0.00      0.00      0.00      0.00
Average:        12.62      4.47     79.63      0.03     17.15      0.00      0.00      0.00      0.00

03:01:38 PM       LINUX RESTART

03:10:01 PM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgs
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySQL设置数据库表为只读 下一篇MySQL 调优基础(四) Linux 磁盘IO

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: