mysql5.7.9+支持的新参数innodb_numa_interleave

        大家都知道,在运行MySQL服务的服务器上,linux系统的内存numa特性是强烈建议关闭的。因为这种特性很容易引起内存泄漏的情况:即发现物理内存还有剩余,但是系统已经开始使用swap内存。

创新互联一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!为您提供网站设计制作、网站设计、成都网页设计、微信小程序开发、成都网站开发、成都网站制作、成都软件开发、重庆APP开发是成都本地专业的网站建设和网站设计公司,等你一起来见证!

        numa内存特性:比如一台机器是有2个处理器,有4个内存块。我们将1个处理器和两个内存块合起来,称为一个NUMA node,这样这个机器就会有两个NUMA node。在物理分布上,NUMA node的处理器和内存块的物理距离更小,因此访问也更快。比如这台机器会分左右两个处理器(cpu1, cpu2),在每个处理器两边放两个内存块(memory1.1, memory1.2, memory2.1,memory2.2),这样NUMA node1的cpu1访问memory1.1和memory1.2就比访问memory2.1和memory2.2更快。所以使用NUMA的模式如果能尽量保证本node内的CPU只访问本node内的内存块,那这样的效率就是最高的。

        其实由于mysql数据库服务器一般只会部署mysql一种服务在运行,而不会部署若干应用在运行。所以一般是希望mysql是独占整个服务器的资源(剔除留给操作系统运行的资源)。所以根据这种业务特性,mysql服务器上是不建议开启numa内存特性。

        那如果关闭numa特性呢?

        1、BLOS层面:

        由于不同系统之间各种BLOS类型的区别,设置各有不同。这里不再展开。

        2、操作系统层面:

        可以直接在/etc/grub.conf的kernel行最后添加numa=off。

        3、MySQL层面:

        直接修改启动脚本:

        numactl --interleave=all mysqld --defaults-file=/etc/my.cnf &

        4、设置innodb_numa_interleave参数:

        MySQL5.7.9版本+,新增了参数innodb_numa_interleave。根据官方文档的描述:当设置innodb_numa_interleave=1的时候,对于mysqld进程的numa内存分配策略设置为MPOL_INTERLEAVE,而一旦Innodb buffer pool分配完毕,则策略重新设置回MPOL_DEFAULT。当然这个参数是否生效,必须建立在mysql是在支持numa特性的linux系统上编译的基础上。

        在MySQL5.7.17版本+, CMake编译软件新增了WITH_NUMA参数,可以在支持numa特性的linux系统上编译mysql。

        注:innodb_numa_interleave目前在mysql5.7.17的二进制包是不支持的,详细的bug信息:https://bugs.mysql.com/bug.php?id=80288 。如果需要规避这种情况,建议下载源码包,直接在系统上进行mysql编译。

网站栏目:mysql5.7.9+支持的新参数innodb_numa_interleave
文章分享:https://www.cdcxhl.com/article22/josejc.html

成都网站建设公司_创新互联,为您提供外贸建站网站设计小程序开发面包屑导航网站建设域名注册

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化