温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何调优内存参数

发布时间:2026-10-14 01:53:44 来源:亿速云 阅读:104 作者:小樊 栏目:数据库

“调优内存参数”涉及的范围很广,具体做法取决于你使用的系统/平台和应用场景。下面我按常见场景给你一个系统性的调优思路和实用参数示例。


一、Linux 系统内存调优

1. 查看内存使用情况

free -h
top
htop
vmstat 1
cat /proc/meminfo

2. 关键内存参数(/proc/sys/vm)

常用调优项:

# 虚拟内存参数
vm.swappiness = 10        # 默认60,降低可减少swap使用(数据库建议10)
vm.dirty_ratio = 10       # 脏页占内存比例上限
vm.dirty_background_ratio = 5
vm.overcommit_memory = 0/1/2
vm.min_free_kbytes = 65536

修改方式:

sysctl -w vm.swappiness=10
# 永久生效
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

3. swap 调优

  • 数据库/高并发服务:减少 swap
  • 内存紧张机器:保留一定 swap 防 OOM

二、JVM(Java)内存调优

1. 常用参数

-Xms2g -Xmx2g        # 堆初始和最大
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512m
-Xss256k             # 线程栈
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200

2. 调优思路

  • 避免频繁 Full GC
  • 堆大小不超过物理内存 70%
  • 观察 GC 日志:
-XX:+PrintGCDetails -Xloggc:gc.log

三、数据库内存调优(以 MySQL 为例)

1. 关键参数

innodb_buffer_pool_size = 4G   # 通常设为物理内存的60-70%
key_buffer_size = 256M
query_cache_size = 0          # MySQL 8已移除
tmp_table_size = 64M
max_connections = 500

2. 原则

  • 热数据尽量放内存
  • 避免 swap
  • 监控命中率:
SHOW STATUS LIKE 'Innodb_buffer_pool%';

四、容器(Docker / K8s)内存调优

1. Docker

docker run -m 2g --memory-swap=2g app

2. Kubernetes

resources:
  requests:
    memory: "1Gi"
  limits:
    memory: "2Gi"

⚠️ JVM 需配合:

-XX:+UseContainerSupport
-Xmx=your_limit*0.75

五、通用调优原则

  1. 先监控,后调优
  2. 一次只改一个参数
  3. 留有余量,防 OOM
  4. 结合业务峰值
  5. 文档化变更

如果你能告诉我:

  • 是 Linux / Windows / 容器
  • 是 Java / 数据库 / Web 服务 / 大数据
  • 当前内存问题和现象(OOM?swap?慢?)

我可以直接给你针对性的参数配置方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手