高并发架构实战 Day 47

我们的服务在 Linux 申请的内存不会立刻从物理内存划分出来。系统数据修改时,才会发现物理内存没有分配,此时 CPU 会产生缺页中断,操作系统才会以 page 为单位把物理内存分配给程序。系统这么设计,主要是为了降低系统的内存碎片,并且减少内存的浪费。 不过系统分配的页很小,一般是 4KB,如果我们一次需要把 1G 的数据插入到内存中,写入数据到这块内存时就会频繁触发缺页中断,导致程序响应缓慢、服务状态不稳定的问题。 所以,当我们确认需要高并发读写内存时,都会先申请一大块内存并填 0,然后再使用,这样可以减少数据插入时产生的大量缺页中断。我额外补充一个注意事项,这种申请大内存并填 0 的操作很慢,尽量在服务启动时去做。

相关推荐
间彧18 分钟前
Kubernetes的Pod与Docker Compose中的服务在概念上有何异同?
后端
间彧22 分钟前
从开发到生产,如何将Docker Compose项目平滑迁移到Kubernetes?
后端
间彧28 分钟前
如何结合CI/CD流水线自动选择正确的Docker Compose配置?
后端
间彧29 分钟前
在多环境(开发、测试、生产)下,如何管理不同的Docker Compose配置?
后端
间彧30 分钟前
如何为Docker Compose中的服务配置健康检查,确保服务真正可用?
后端
间彧34 分钟前
Docker Compose和Kubernetes在编排服务时有哪些核心区别?
后端
间彧40 分钟前
如何在实际项目中集成Arthas Tunnel Server实现Kubernetes集群的远程诊断?
后端
brzhang1 小时前
读懂 MiniMax Agent 的设计逻辑,然后我复刻了一个MiniMax Agent
前端·后端·架构
草明2 小时前
Go 的 IO 多路复用
开发语言·后端·golang
蓝-萧2 小时前
Plugin ‘mysql_native_password‘ is not loaded`
java·后端