我没有改变任何脚本或设置.现在我的CPU负载至少高出4倍.根据TOP,Mysqld占用了大约360%的CPU.这是Debian,我正在运行一些MyISAM表,但大多数都是InnoDB.我已经验证了当使用InnoDB的网站上线时负载变得很高.即使现在晚上总体负荷通常低于1,也有12个.我不知道出了什么问题.我没有改变任何事情.我已经尝试完全重启机器了.

我将innodb_log_file_size更改为2047M而不是512M,因为没有明显的负载改进.其余的my.cnf Fine Tuning部分:

key_buffer = 4000M

max_allowed_packet = 32M

thread_stack = 256K

thread_cache_size = 192

myisam-recover = BACKUP

max_connections = 10000

query_cache_limit = 1M

query_cache_size = 256M

innodb_buffer_pool_size=8G

innodb_additional_mem_pool_size=20M

sort_buffer=2M

thread_concurrency=16

record_buffer=2M

tmp_table_size=128M

max_heap_table_size=128M

table_cache=1024

innodb_log_file_size = 2047M

innodb_log_buffer_size = 16M

innodb_flush_log_at_trx_commit = 2

innodb_file_per_table

innodb_flush_method = O_DIRECT

这是运行Apache和MySQL的24GB RAM机器.每天约有20,000次访问.在这个时刻,仍有20GB内存可用(现在是晚上,我刚刚重启).系统硬盘只有8%已满.所有硬盘驱动器似乎都以适当的速度写入/读取.

我的配置有问题吗?即使我没有更改任何服务器机器设置或PHP脚本,是否有可能负载翻转高?还有什么可能导致这个?

编辑:vmstat的输出

vmstat 5 10

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----

r b swpd free buff cache si so bi bo in cs us sy id wa

13 1 868 280368 179164 18089764 0 0 511 579 16 89 87 2 10 1

24 2 868 348948 183916 18136144 0 0 5791 610 1916 7552 89 2 7 1

23 0 868 501744 185972 18169456 0 0 3995 5877 2401 6277 91 3 5 1

6 0 868 694992 186136 18202684 0 0 3385 4783 1006 5958 91 2 7 0

22 0 868 825240 186372 18243540 0 0 4133 4087 1098 5364 91 2 7 0

19 0 868 284452 186540 18281960 0 0 3907 4380 537 6468 91 3 7 0

44 0 868 123408 177236 17022560 0 0 3896 5173 483 6914 88 5 7 0

17 0 868 159388 173236 16729360 0 0 4625 8856 1433 7072 89 3 8 0

14 0 868 248836 173380 16763992 0 0 5284 698 819 7357 88 2 9 0

15 0 868 406092 173592 16809708 0 0 4730 5794 1148 7224 90 2 8 0

ps -eo命令,pid,ppid,%cpu,%mem,rss,pri,psr,size –sort = – %cpu | head -n 20

COMMAND PID PPID %CPU %MEM RSS PRI PSR SZ

/usr/sbin/mysqld --basedir= 379 342 364 11.1 2747020 19 1 14249120

gzip 5537 5536 30.1 0.0 756 0 3 452

/usr/sbin/apache2 -k start 2435 27735 6.6 0.3 75408 19 1 47184

/usr/sbin/apache2 -k start 2388 27735 6.7 0.3 77928 19 3 48144

/usr/sbin/apache2 -k start 2323 27735 5.9 0.3 79660 19 3 48464

/usr/sbin/apache2 -k start 2363 27735 5.8 0.3 77156 19 4 47256

/usr/sbin/apache2 -k start 2418 27735 5.7 0.3 77248 19 7 46684

/usr/sbin/apache2 -k start 2350 27735 5.8 0.3 78504 19 2 48092

/usr/sbin/apache2 -k start 2437 27735 5.5 0.3 75928 19 3 47436

/usr/sbin/apache2 -k start 2439 27735 5.5 0.3 75716 19 3 47596

/usr/sbin/apache2 -k start 2356 27735 5.7 0.3 78560 19 3 48708

/usr/sbin/apache2 -k start 2284 27735 5.6 0.3 79532 19 3 47896

/usr/sbin/apache2 -k start 2349 27735 5.6 0.3 78248 19 7 48548

/usr/sbin/apache2 -k start 2368 27735 5.6 0.3 77100 19 3 45852

/usr/sbin/apache2 -k start 2387 27735 5.5 0.3 79964 19 7 48952

/usr/sbin/apache2 -k start 2383 27735 5.4 0.3 79212 19 1 48448

/usr/sbin/apache2 -k start 2169 27735 5.4 0.3 81740 19 3 48636

/usr/sbin/apache2 -k start 2411 27735 5.3 0.3 77292 19 3 47628

/usr/sbin/apache2 -k start 1779 27735 5.4 0.3 88876 19 0 48384

mpstat 5 10

Linux 2.6.26-2-amd64 12/12/2014 _x86_64_

03:38:23 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s

03:38:28 PM all 87.44 3.56 1.44 0.17 0.15 0.40 0.00 6.83 2363.80

03:38:33 PM all 86.82 3.31 1.82 0.12 0.05 0.25 0.00 7.62 1703.00

03:38:38 PM all 88.52 2.39 1.76 0.30 0.15 0.32 0.00 6.56 2552.68

03:38:43 PM all 85.12 3.92 2.17 0.27 0.10 0.42 0.00 7.99 2810.60

03:38:48 PM all 87.72 3.34 1.82 0.10 0.10 0.30 0.00 6.61 2368.00

03:38:53 PM all 85.36 3.83 1.59 0.40 0.05 0.17 0.00 8.59 1589.60

03:38:58 PM all 85.74 4.01 1.50 0.20 0.07 0.17 0.00 8.30 1648.00

03:39:03 PM all 85.26 4.16 1.75 0.20 0.12 0.60 0.00 7.91 1764.20

03:39:08 PM all 87.20 3.62 1.70 0.17 0.10 0.45 0.00 6.76 2221.80

03:39:13 PM all 85.96 3.12 2.67 0.27 0.05 0.52 0.00 7.41 2829.60

Average: all 86.52 3.53 1.82 0.22 0.09 0.36 0.00 7.46 2185.35

编辑,MySQL 5.5

升级到MySQL 5.5实际上有很大的不同.负载每天从20减少到10,晚上从10减少到6.交通接近无=负载6,高流量=负载10.

=>现在有趣的是,当前的负载比事件发生前的值高出5个点.无论交通.这并没有让我有多大意义.没有理由在8核CPU上加载6几乎没有流量,更奇怪的是,负载只有两倍,而流量却很大.日负荷曾经比夜晚高5倍.

==>无论是MySQL 5.5还是奇迹般的效率(与5.0相比)或者有一些东西,无论如何都会增加5点.我看不到任何特殊的过程.它必须与Apache / PHP / MySQL相关.

编辑,求解(单独)

4天前,负载在空中升起,没有明显的原因.今天清晨,负载下降到正常值就像那样.

我并不喜欢把DDOS归咎于一切,我实际上通过查看网络统计数据来排除这一点.但话说回来,我从来没有经历任何攻击,我可能不会认出来.

事实:3天之后,我已经设法升级到MySQL 5.5,它没有完全解决问题,但降低了负载足以使网站在访问者端再次平滑.一天后,问题就消失了.当网站没有长时间加载时,这几乎就像有人失去了兴趣.

操作系统损坏本身不会消失.没有后台任务.虽然我没有注意到任何奇怪的网络活动,但攻击似乎是唯一的左侧解释.有一件事我可以说,我们的观众正是经常做这类事情的人.

编辑29/12/2014

我不确定是否还有人在看这个帖子.我想发布更新.几天后高负荷回来,然后去了几个,后面等等.有时负荷一直很高,有时它会飙升.在一天它可以下降50%再次上涨100%.时差 – 与实际流量,后台任务没有任何关系.虽然它看起来真的像DDOS,但没有奇怪的网络活动.

虽然最大的区别是MySQL 5.5,现在机器可以更好地处理任何占用其资源的东西,保持网站正常运行.瓶颈似乎又是CPU,这再次没有多大意义.

最“有趣”的是这种行为的不可预测性.这只是不适合任何SW / HW故障,或者它?

mysql innodb 多核cpu_没有改变,但MySQL InnoDB超载CPU相关推荐

  1. 如何修改mysql占用的端口号_修改mysql端口号(mysql的端口号)

    修改mysql端口号(mysql的端口号) 2020-05-07 22:12:00 共10个回答 如何查看mysql默认端口号和修改端口号 登录mysql,使用命令showglobalvariable ...

  2. mysql存储引擎innodb_MySQL常用存储引擎之Innodb

    1. mysql 5.5及之后版本默认存储引擎 为不了解存储引擎的数据库使用者,提供了很大的便利,因为innodb适应大部分应用场景. 和myisam不同的是,innodb是一种事务型存储引擎.也就是 ...

  3. mysql权限和使用注意事项及mysql 数据类型详解和innodb,myisam区别

    mysql用户权限管理(Grant,Revoke) MySQL可以为不同的用户分配严格的.复杂的权限.这些操作大多都可以用SQL 指令Grant(分配权限)和Revoke(回收权限)来实现. Gran ...

  4. MySQL怎么运行的系列(五)Innodb表空间(table space)、区(extent)和段(segment)

    本系列文章目录 展开/收起 MySQL怎么运行的系列(一)mysql体系结构和存储引擎 MySQL怎么运行的系列(二)Innodb缓冲池 buffer pool 和 改良版LRU算法 Mysql怎么运 ...

  5. MySQL中常用的存储引擎(MyISAM 和InnoDB)

     数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用存储引擎进行创建.查询.更新和删除数据操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以获 ...

  6. mysql 事务的好坏_mysql存储引擎:InnoDB和MyISAM的差别/优劣评价/评测/性能测试

    InnoDB和MyISAM简介 MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的 顺序访问方法) 的缩写 ...

  7. MySQL 两种存储引擎:MyISAM与InnoDB对比及理解

    MySQL 两种存储引擎:MyISAM与InnoDB对比及理解 目前MySQL默认的存储引擎是InnoDB 现在大多数时候我们使用的都是InnoDB存储引擎,但是在某些情况下使用MyISAM更好,比如 ...

  8. mysql innodb 设置详解_【mysql】mysql innodb 配置详解

    MySQLinnodb 配置详解 innodb_buffer_pool_size:这是InnoDB最重要的设置,对InnoDB性能有决定性的影响.默认的设置只有8M,所以默认的数据库设置下面InnoD ...

  9. mysql 存储过程 百万数据 innodb_详解mysql数据库一键查看锁信息(开启InnoDB监控)...

    概述 很多时候在mysql处理死锁问题时,由于show engine innodb status输出来的死锁日志无任务事务上下文,并不能很好地诊断相关事务所持有的所有锁信息,包括:锁个数.锁类型等. ...

最新文章

  1. 简述java异常处理机制
  2. Delphi的类与继承
  3. datagridview后台获取选中行的值的几种方式
  4. Matlab实用程序--图形应用-交互式图形
  5. php中如何比较数组和字符串,PHP中数组和字符串的相互转换-PHP数组和字符串互相转换方法-吾爱编程网...
  6. Flickr30k图像标注数据集下载及使用方法(转载的,备忘)
  7. 2019百度之星初赛1
  8. springboot异步注解_Spring Boot 2 :Spring Boot 中的响应式编程和 WebFlux 入门
  9. 八大排序算法的python实现(三)冒泡排序
  10. 欧洲半导体三巨头的守旧与拓新
  11. 写给.NET开发者的数据库Migration方案
  12. i386和x86-64区别通俗易懂版本(转)
  13. DirectX编译环境配置
  14. 论软件系统建模方法及其应用
  15. H桥原理、驱动及应用
  16. 嵌入式字符设备驱动——ULN2003步进电机驱动程序实现
  17. tf.flags用法
  18. 1330: PIPI的乐高积木
  19. 使用disk genius合并C盘和D盘
  20. 怎样实现模块间的参数传递?急急急!!!!!!!!!

热门文章

  1. 利用SQLite在android上实现增删改查
  2. HTML5实现输入密码(六个格子)
  3. php利用反射机制查找类和方法的所在位置
  4. Excel导入SQL数据库出现的问题
  5. Android中在SurfaceView上高效绘图
  6. 计算器如何输出log以2为底的对数(利用对数log换底公式)
  7. Ubuntu下映射串口设备到docker
  8. 解决Eclipse报错:the file dx.jar was not loaded from the SDK
  9. Ubuntu和Mac使用gdbserver远程调试android源码
  10. Android解压/重新打包system.img