当时sysbench 来对MYSQL 8.011 版本的数据库进行压测,并发到达100,MYSQL就报OOM , 服务器的配置 4C 16G
基本上在配置上是没有太多的问题和可以被改正的点....,是否超分的太多.
1 一直运行overcommit 对内存的申请都能通过
2 允许进行内存的超分
故障的服务器的overcommit 设置的为2, 但内存并未使用完毕并且还剩余50%的情况下,MYSQL...1 vm.overcommit_ratio 默认值是50%
这里以内存为16G 为例子, 16G * 0.5 + 5G =13G 也就是当内存分配超过13G 后, LINUX 系统会挑选出来大的...那么到底程序是怎么申请内存的,以MYSQL为例 正在运行的MYSQL 在申请内存时通过malloc()函数,来动态的分配内存,他找到与申请内存大小相同的未使用的连续的块,并且返回给MYSQL 相关的内存空间的指针...那么那些应用程序容易被选择成 KILL的对象, 这里会通过内存的消耗, 到底这个进程的重要性,CPU 消耗, 等进行评估, 那么另一个问题是为什么他们要KILL MYSQL , 不能kILL别的程序吗