一台高配的MySQL数据库服务器,双CPU48线程.
CentOS 7
本机磁盘是一万五千转的Raid 0.系统文件,Swap都分配在了本机磁盘.
服务器挂载了一个SSD的磁盘阵列.数据库文件都存放在磁盘阵列中.
系统运行之后,发现系统Swap大量使用,并且本机磁盘的IO使用率持续100%.
权宜之计:
我把Swap挪到了盘阵中
原因:
swap insanity
NUMA架构
引用:
对于单CPU,多核心的情况,每个核心访问内存的速度是一样的,这种架构称为SMP(Symmetric multiprocessing, 对称多处理器),又叫UMA(Uniform Memory Architecture,与NUMA相对,一致性内存访问架构)。
可以看到,每个CPU都有一组配套的内存槽。每个CPU访问自身的内存插槽,速度都很快,但对于主板上的其他内存插槽,访问速度就会下降。这种架构被称为NUMA。
对于Linux来说,加载的时候就会检测内存,计算CPU到内存的访问开销,将CPU和内存分成一组组的。每个进程和线程,都会继承父进程的NUMA策略,这种策略包括这个进程/线程会在哪个CPU上运行,分配的内存应该用哪组插槽的。
面对内存分配,只要一经分配到指定的CPU—内存槽,就不会再挪动了。对于数据库这类应用,理想情况下是一个单一的多线程进程,吃掉了几乎所有的系统内存,并尽可能多的消耗其余的系统资源例如IO。
对于两个CPU的NUMA架构来说,如果一个核心分配的内存超过系统内存的一半,就会出现问题。而Linux的分配策略是,首先使用CPU 0,然后再使用CPU 1。这时候就会出现一种情况,CPU 0的内存组已经率先使用完了,但系统还有很多空闲内存,都在CPU 1上。这时候,Linux会选择将CPU 0的内存刷到磁盘上,以换取可用内存。但是,swap过程远比跨CPU访问内存要慢啊。这就会造成内存还没用光,但数据库疯狂刷盘的现象了。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机MySQL大量使用swap文件
数据库2024-04-02
使用java如何实现大量导出excel文件
数据库2023-05-31
怎么在Linux系统上使用交换文件扩展swap空间
数据库2023-06-12
linux如何启用一个新的swap文件系统
数据库2024-04-02
linux如何启用一个新的swap文件系统
数据库2024-04-02
mysql中如何使用spring存取大文件blob和clob
数据库2024-04-02
如何使用brotli压缩大文件
数据库2023-06-04
使用 MySQL 程序的选项文件?选项文件的使用
数据库2023-10-22
Python实现遍历包含大量文件的文件夹
数据库2023-05-15
plsql怎么导出大量csv文件
数据库2024-04-09
python对大文件的增量读取
数据库2023-01-31
如何利用Python文件索引快速加载大量数据文件?
数据库2023-09-28
怎么在Centos中利用文件实现一个swap功能
数据库2023-06-10
如何解决Mysql导入大容量SQL文件数据问题
数据库2024-04-02
如何使用bat得到文件大小
数据库2023-06-08
怎么使用java socket传输大文件
数据库2023-09-23
如何使用vue+springboot上传大文件
数据库2023-07-06
mysql怎么导入大sql文件
数据库2024-05-10
Python实现批量压缩文件/文件夹zipfile的使用
数据库2024-04-02
php使用yield处理大数据文件
数据库2023-09-04
咦!没有更多了?去看看其它编程学习网 内容吧