在线QQ客服:1922638
专业的SQL Server、MySQL数据库同步软件
1.日志如下:
120327 11:42:04 [ERROR]/usr/coolpad/mysql/bin//mysqld:排序中止
InnoDB:HugeTLB:警告:无法分配4194304字节。 Errno 12
InnoDB HugeTLB:警告:使用常规内存池
现象:主服务器(192.168.0.27),从服务器(192.168.0.26)
数据可以从主机同步到主机,但不能从主机同步。使用显示从站状态\\\\ G进行查看。一切正常。当时的负载也很小。在互联网上发现了一个案例。耗时的sql(如果未完成)会发现错误,并终止sql的操作,从而使主节点受到写保护并重新启动。
2.结果,主从数据库不一致,并且重新启动后仍未解决,并且数据仍然不一致。我将删除从节点的数据库,然后再次导入主节点的备份数据。
3.请问英雄们是否有解决此情况的好方法。导入备份数据很愚蠢,需要很长时间,从而导致业务中断。
期待! !
首先说明
InnoDB:HugeTLB:警告:无法分配4194304字节。 Errno 12
InnoDB HugeTLB:警告:使用常规内存池
这时,使用大页面的原因是有人说大页面可以提高性能,但是我几乎测试了性能,但是使用它有好处,可以防止mysqld在交换中使用。是什么原因?
因为大页是一次性的,而分配内存时是排他的,所以一次是什么?一次性是指当mysqld启动时,缓冲池所需的所有内存的总和将一次分配,并且分配的内存不能被其他进程占用。因此,它是一次性的且排他的。一次分配缓冲池所需的内存时,肯定不会使用交换。
好的,使用常规内存池意味着什么?因为您的大页内存不足以容纳缓冲池大小,所以请使用常规内存。
要查看当前的大页面大小,可以使用以下命令:
grep-i hugepage/proc/meminfo
设置其大小以使用:
vi/etc/sysctl.conf然后有一个巨大的页面设置行。
生效sysctl-p
博学,表达对楼上的尊重
我被教导了,谢谢
我被教导了,谢谢
二,配置Hugepage
因为大页面部分的共享内存不能被交换使用,也不能被其他进程使用,所以如果大页面共享内存设置太大,将导致系统挂起。
为了考虑性能而不浪费内存,请确保将大页部分中的共享内存设置为最佳值。以下是一些参考:
1)如果它是32位操作系统,并且未使用VLM,则设置此服务器上运行的所有实例的hugetlb_pool = SGA总和。如果有一个ASM,则每个ASM实例将再增加200M
2)如果它是32位操作系统,并且使用了VLM,则对服务器上运行的所有实例(数据缓冲区除外)设置hugetlb_pool = SGA sum。如果有一个ASM,则每个ASM实例将再增加200M
3)如果它是64位操作系统,则无论是否启用了VLM,都应设置hugetlb_pool =服务器上运行的SGA的所有实例的总和。如果有一个ASM,则每个ASM实例将再增加200M
在RHEL 2.1/3/4中设置大页面的方法有所不同,因为2.1版本太低,因此在此不再赘述。
1.在RHEL3中设置大页
非常简单,只需在/etc/sysctl.conf中添加以下行:
#SET 1024M巨页内存
vm.hugetlb_pool = 1024
执行sysctl-p使修改生效。
目前,您可以从/proc/meminfo验证设置是否生效:
$ more/proc/meminfo | grep-i HugePage
HugePages_Total: 512
HugePages_Free: 512
超大尺寸:\\ ubsp; 2048 kB
因为设置了1024M的hugepage_pool,所以每页为2M,因此将有512页。
理想情况下,当oracle实例启动时,HugePages_Free应该等于或接近0。
2.在RHEL4中设置大页面
与RHEL3类似,在RHEL4中配置大页面也非常简单,
1)在/etc/sysctl.conf中添加以下行:
#SET 1024M巨页内存
vm.nr_hugepages = 512
在RHEL4中,直接设置大页面的页数。
执行sysctl-p使修改生效。
2)在/etc/security/limits.conf中添加以下行
oracle \ 柔和的记忆锁 1048576
oracle \ 硬\\ n 记忆锁 1048576
必须设置此项,否则启动数据库时可能会报告错误:
ORA-27103:内部错误
Linux错误:11:资源暂时不可用
目前,您可以从/proc/meminfo验证设置是否生效:
$ more/proc/meminfo | grep-i HugePage
HugePages_Total: 512
HugePages_Free: 512
超大尺寸:\\ ubsp; 2048 kB
理想情况下,当oracle实例启动时,HugePages_Free应该等于或接近0。
如果您不想设置大页面,只需设置vm.nr_hugepages =0。
有几点要注意:
1)无论RHEL3还是RHEL4,只要设置了hugepage_pool或nr_hugepages,就意味着将指定大小的内存固定在内存中。即使SGA所需的共享内存小于设置的hugepage_pool,这部分内存也不能被其他进程使用。因此,有必要计算所需的尺寸。设置过多的大页共享内存以避免浪费是不合适的。