如题所述
CPUå ç¨è¿é«è¯ææè·¯
mpstat -P ALL 1ï¼æ¥çcpu使ç¨æ åµï¼ä¸»è¦æ¶èå¨syså³osç³»ç»è°ç¨ä¸
perf topï¼cpu主è¦æ¶èå¨_spin_lock
çæperf reportæ¥ç详ç»æ åµ
CPU主è¦æ¶èå¨mutexäºç¨ä¸ï¼è¯´ææéçç¹ã
éç¨pt-pmpè·è¸ªmysqldæ§è¡æ åµï¼çç¹ä¸»è¦éä¸å¨mem_heap_allocåmem_heap_freeä¸ã
Pstackæä¾æ´è¯¦ç»çAPIè°ç¨æ
Innodbå¨è¯»åæ°æ®è®°å½æ¶çAPIè·¯å¾ä¸º
row_search_for_mysql --ãrow_vers_build_for_consistent_read --ãmem_heap_create_block_func --ãmem_area_alloc --ãmalloc --ã _L_unlock_10151 --ã__lll_unlock_wait_private
row_vers_build_for_consistent_readä¼é·å ¥ä¸ä¸ªæ»å¾ªç¯ï¼è·³åºæ¡ä»¶æ¯è¯¥æ¡è®°å½ä¸éè¦å¿«ç §è¯»æè å·²ç»ä»undoä¸æ¾åºå¯¹åºçå¿«ç §çæ¬ï¼æ¯æ¬¡å¾ªç¯é½ä¼è°ç¨mem_heap_alloc/freeã
è该表çè®°å½æ´æ¹å¾é¢ç¹ï¼å¯¼è´å ¶undo history listæ¯è¾é¿ï¼æç´¢å¿«ç §çæ¬ç代价æ´å¤§ï¼å°±ä¼é¢ç¹çç³è¯·åéæ¾å å åã
Linuxåççå ååºå½æ°ä¸ºptmallocï¼malloc/freeè°ç¨è¿å¤æ¶å¾å®¹æ产çéçç¹ã
å½å¤æ¡ SQL 并åæ§è¡æ¶ï¼ä¼æç»è§¦åoså±é¢çspinlockï¼å¯¼è´ä¸è¿°æ å½¢ã
解å³æ¹æ¡
å°mysqldçå ååºå½æ°æ¿æ¢ætcmallocï¼ç¸æ¯ptmallocï¼tcmallocå¯ä»¥æ´å¥½çæ¯æé«å¹¶åè°ç¨ã
ä¿®æ¹my.cnfï¼æ·»å å¦ä¸åæ°å¹¶éå¯
[mysqld_safe]malloc-lib=tcmalloc
ä¸å¨äºæ©ä¸7ç¹æ§è¡çæä½ï¼å°ç°å¨è¶ è¿72å°æ¶ï¼æé´è¯¥å®ä¾æ²¡æååºç°cpué¿æé£é«çæ å½¢ã
以ä¸æ¯ä¿®æ¹ååcpu使ç¨ç对æ¯
把每个页面的无数条insert语句合并成一句,能让插入时间减少一个数量级(10倍或更少),用括号把每条语句的数据分组即可。
不会的话,用mysqldump导出一个表,然后看看生成的SQL就知道了。
您也可以试试搭载了第六代智能英特尔酷睿处理器的产品,创新性的使用模式,如实感技术,姿势控制,语音识别,2D/3D影像,突破传统PC使用体验,无论办公学习、畅玩游戏或者观看超高清影像播放,均得心应手,引领产品创新。
1、一次生产DB服务器的 超负荷运行问题解决:
1.查看生产DB服务器top列表,执行 top 命令
查看Cpu(s) 参数一直处于 98% 状态 ,load average达到了 5 (4核服务器),可见 DB已经超负荷运行了
2.使用root用户登录mysql
执行 show full processlist 查看慢查询,反复执行,发现一直有3个select 查询语句存 在,为了缓解DB服务器压力,直接使用kill命令杀掉, 慢查询的id,服务器压力缓解, 恢复正常。
使用这条SQL语句去项目中找到对应功能,经查是没用的功能,直接隐藏这个功能,问 题解决。
MySQL处在高负载环境下,磁盘IO读写过多,肯定会占用很多资源,必然CP会U占用 过高。
2、占用CPU过高,可以做如下考虑:
1.打开慢查询日志,查询是否是某个SQL语句占用过多资源,如果是的话,可以对SQL语 句进行优化,比如优化 insert 语句、优化 group by 语句、优化 order by 语句、优化 join 语句等等;
2.考虑索引问题;
3.定期分析表,使用optimize table;
4.优化数据库对象;
5.考虑是否是锁问题;
6.调整一些MySQL Server参数,比如key_buffer_size、table_cache、 innodb_buffer_pool_size、innodb_log_file_size等等;
7.如果数据量过大,可以考虑使用MySQL集群或者搭建高可用环境。