当时sysbench 来对MYSQL 8.011 版本的数据库进行压测,并发到达100,MYSQL就报OOM , 服务器的配置 4C 16G
基本上在配置上是没有太多的问题和可以被改正的点....经过多次的折腾,我们想起之前在模板上修改了一个相关的参数vm.overcommit_memory=2 ,我们将 vm.overcommit_memory = 0 后问题消失,数据库压测1000- 3000...问题解决了,但我们的说说怎么产生了这个问题,并且为什么更改了overcommit 问题就解决了....overcommit 这个参数是存在在LINUX 系统上的参数,功能是操作系统给付给进程的内存的大小. 实际上内存永远不够用,一般都是通过虚拟和物理之间的映射....那么到底程序是怎么申请内存的,以MYSQL为例 正在运行的MYSQL 在申请内存时通过malloc()函数,来动态的分配内存,他找到与申请内存大小相同的未使用的连续的块,并且返回给MYSQL 相关的内存空间的指针