设为首页 收藏本站
查看: 539|回复: 0

[经验分享] [MySQL 生产环境内存报警]Select之后Free -m的used总是会一直不停的增加直到100%

[复制链接]

尚未签到

发表于 2016-10-20 02:49:51 | 显示全部楼层 |阅读模式
  现象是:生产环境的内存使用率经常超过85%阀值,nagios不停报警,以往的处理办法就是restart,一切memery使用率回到65%。还得研究找到问题所在,所以在测试环境进行问题测试分析。
  

  

  1 先查看问题当前的内存使用情况:

[novamysqladminlt@test-by7db2 ~]$ free -m

total    used    free   shared  buffers   cached

Mem:     32108   24792    7316     0    824   11019

-/+ buffers/cache:   12948   19159

Swap:    32767     42   32725

[novamysqladminlt@test-by7db2 ~]$

  

  2 去运行一个无索引的消耗资源的sql如下
mysql> select * from tb01 where GROUP_ID>100 limit 10000000, 1000;

  

  

  3 去运行一个无索引的消耗资源的sql如下
mysql> select * from tb01 where GROUP_ID>100 limit 10000000, 1000;




4 然后去检查内存使用情况:



[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      25358       6750          0        824      10976
-/+ buffers/cache:      13557      18550
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      25399       6709          0        824      10976
-/+ buffers/cache:      13598      18510
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26807       5301          0        824      10943
-/+ buffers/cache:      15039      17069
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26841       5267          0        824      10939
-/+ buffers/cache:      15077      17031
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26862       5246          0        824      10931
-/+ buffers/cache:      15106      17002
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26894       5213          0        824      10931
-/+ buffers/cache:      15139      16969
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26895       5213          0        824      10931
-/+ buffers/cache:      15139      16969
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26895       5213          0        824      10931
-/+ buffers/cache:      15139      16969
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26895       5212          0        824      10932
-/+ buffers/cache:      15139      16969
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26896       5211          0        824      10932
-/+ buffers/cache:      15140      16968
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26896       5211          0        824      10932
-/+ buffers/cache:      15139      16968
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26897       5211          0        824      10932
-/+ buffers/cache:      15139      16968
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$
[mysql@test-by7db2 5.5.25a]$
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26897       5211          0        824      10933
-/+ buffers/cache:      15139      16968
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$






OK,查询跑完了,耗时如下:

......

1000 rows in set (1 min 4.15 sec)



4 检查现在运行完SQL的内存使用情况:

[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26913       5195          0        824      10946
-/+ buffers/cache:      15143      16965
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26912       5196          0        824      10946
-/+ buffers/cache:      15141      16967
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26911       5196          0        824      10946
-/+ buffers/cache:      15140      16967
Swap:        32767         44      32723
[mysql@test-by7db2 5.5.25a]$ free -m
total       used       free     shared    buffers     cached
Mem:         32108      26911       5196          0        824      10946
-/+ buffers/cache:      15140      16968
Swap:        32767         44      32723
不停的在使用着的内存不停的在增长,used值直线上升。最后等查询结束了,会稳定在26911M上面,不再动弹,但是比原来的25358要高很多。



为了验证这个,再继续执行一个慢sql:

mysql> select * from tb01 where GROUP_ID>100 limit 12000000, 1000;


  used继续不停的增长,加大。
  

  
  5,也许是innodb_buffer_pool_size值太大了,尝试把innodb_buffer_pool_size值调小看看:
  现在把innodb_buffer_pool_size值从25000M调整到12000M,试试看效果。

innodb_buffer_pool_size = 12000M

  [mysql@test-by7db2 5.5.25a]$ service mysql status

SUCCESS! MySQL running (8913)

[mysql@test-by7db2 5.5.25a]$ service mysql restart

Shutting down MySQL........... SUCCESS!

rm: cannot remove `/var/lock/subsys/mysql': Permission denied

Starting MySQL........... SUCCESS!

[mysql@test-by7db2 5.5.25a]$

[mysql@test-by7db2 5.5.25a]$

[mysql@test-by7db2 5.5.25a]$ free -m

total    used    free   shared  buffers   cached

Mem:     32108   12752   19356     0    840    9681

-/+ buffers/cache:    2230   29878

Swap:    32767     26   32741

[mysql@test-by7db2 5.5.25a]$


去客户端执行SQL:

mysql> select * from identity.tb01 where GROUP_ID>100 limit 12000000, 1000;

  

  再来看used使用情况:
  [novamysqladminlt@eanltemydb5-c000utl ~]$ ssh test-by7db2.abn-sjl.ea.com

Last login: Mon Nov 25 02:55:46 2013 from eanltemydb5-c000utl.abn-sjl.ea.com

[novamysqladminlt@test-by7db2 ~]$ free -m

total    used    free   shared  buffers   cached

Mem:     32108   14197   17911     0    840    9681

-/+ buffers/cache:    3675   28433

Swap:    32767     26   32741

[novamysqladminlt@test-by7db2 ~]$

  

  used值在增加,再来执行新的SQL语句:
  mysql> select * from identity.tb01 where GROUP_ID>100 limit 13000000, 1000;



[novamysqladminlt@test-by7db2 ~]$ free -m

total    used    free   shared  buffers   cached

Mem:     32108   15682   16426     0    840    9681

-/+ buffers/cache:    5160   26948

Swap:    32767     26   32741

  看出每执行一条不同的SQL语句,used值都在增加。
  mysql> select * from identity.tb01 where GROUP_ID>100 limit 13000000, 1000;



[novamysqladminlt@test-by7db2 ~]$ free -m

total    used    free   shared  buffers   cached

Mem:     32108   15682   16426     0    840    9681

-/+ buffers/cache:    5160   26948

Swap:    32767     26   32741

  看出执行相同的select语句,内存使用率used没有增加。

  

  mysql> select * from identity.tb01 where GROUP_ID>100 limit 14000000, 1000;

[novamysqladminlt@test-by7db2 ~]$ free -m

total    used    free   shared  buffers   cached

Mem:     32108   15931   16177     0    840    9681

-/+ buffers/cache:    5408   26699

Swap:    32767     26   32741


使用新的sql语句,used使用的内存从15682增加到15931。

  

  从这里可以看出,不管innodb_buffer_pool_size值设置多大多小,used值总是会增加的,看来分析的思路有误,得换个方向。
  

  

  6memory使用率判断:
  

mysql> SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_data';
+-------------------------------+--------+
| Variable_name                 | Value  |
+-------------------------------+--------+
| Innodb_buffer_pool_pages_data | 1322836|
+-------------------------------+--------+
1 row in set (0.00 sec)

mysql> SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_total';
+--------------------------------+---------+
| Variable_name                  | Value   |
+--------------------------------+---------+
| Innodb_buffer_pool_pages_total | 1344000 |
+--------------------------------+---------+
1 row in set (0.00 sec)

mysql> SHOW GLOBAL STATUS LIKE 'Innodb_page_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| Innodb_page_size | 16384 |
+------------------+-------+
1 row in set (0.00 sec)

Innodb_buffer_pool_pages_data' X 'Innodb_page_size' X 1.05 / (1024*1024*1024)


'Innodb_buffer_pool_pages_data' X 100 / 'Innodb_buffer_pool_pages_total'

当结果 > 95% 则增加 innodb_buffer_pool_size, 建议使用 ram total 75%

当结果 < 95% 则减少 innodb_buffer_pool_size,

建议 'Innodb_buffer_pool_pages_data' X 'Innodb_page_size' X 1.05 / (1024*1024*1024)  这计算'Innodb_buffer_pool_pages_data' X 100 / 'Innodb_buffer_pool_pages_total' 值是
  

mysql> select 1322836*100/1344000;
+---------------------+
| 1322836*100/1344000 |
+---------------------+
|             98.4253 |
+---------------------+
1 row in set (0.00 sec)



  

  

  [...持续分析中...]

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-288443-1-1.html 上篇帖子: 关于流量升高导致TIME_WAIT增加,MySQL连接大量失败的问题 下篇帖子: JBPM的MySQL文和迁移到Tomcat的说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表