官方参考

注意事项

TiDB不允许修改 操作系统内存分配策略为 2,只允许为 01

TUG修改内存使用策略导致 TiDB自动下线

什么是操作系统内存分配策略?


调整TiDB-Server的内存使用上限tidb3.0
1 修改 inventory.ini

inventory.ini配置文件最后添加MemoryLimit=25G

  • 根据自己机器实际的内存来设置
  • 当 TiDB-Server 进程的 常驻内存 超过这个限制,进程将被杀死
  • 并且在TiDB-Server的日志中抛出 OOM 异常

[root@test ~]# cat /etc/systemd/system/tidb-4000.service
[Unit]
Description=tidb-4000 service
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
# 常驻内存上限
MemoryLimit=25G
LimitNOFILE=1000000
#LimitCORE=infinity
LimitSTACK=10485760
User=tidb
ExecStart=/home/tidb/deploy/scripts/run_tidb.sh
Restart=always
RestartSec=15s

[Install]
WantedBy=multi-user.target
[root@dev11 ~]#

注:这个操作改变的是 /etc/systemd/system/tidb-4000.service 文件中的配置

[root@hostname ~]# cat /etc/systemd/system/tidb-4000.service | grep MemoryLimit
MemoryLimit=25G
[root@hostname ~]#

TiDB Server 常驻内存与实际堆内存相差较大

2 滚动更新 tidb (修改完配置文件一定要更新配置)
[root@hostname ~]# ansible-playbook rolling_update.yml --tags=tidb

修改日志保存天数、设置最大索引长度

修改tidb.yml 一定要对应版本的配置来配置
tidb3.0修改

设置日志保留天数
max-days: 10
以字节为单位设置查询的内存配额。默认32G
mem-quota-query: 1073741824
设置最大索引长度
max-index-length: 12288
[root@hostname ~]# ansible-playbook rolling_update.yml --tags=tidb

tidb4.0修改
执行:

 tiup cluster edit-config test-cluster

添加以下配置

server_configs:
  tidb:
    # 以字节为单位设置查询的内存配额。4.0默认1G
    mem-quota-query: 1073741824
    # 设置最大索引长度
    max-index-length: 12288
    # 最长的 SQL 输出长度。(变更)4.0需要修改
    log.query-log-max-len: 6000
    # 设置日志保留天数
    log.file.max-days: 10

  tikv:

  pd:

重新加载配置文件

tiup cluster reload tidb-dev -R tidb,tikv

tiup cluster reload tidb-dev -N ip:port

mem-quota-query

  • 单条 SQL 语句可以占用的最大内存阈值,单位为字节。
    默认值:1073741824
    超过该值的请求会被 oom-action 定义的行为所处理。
    该值作为系统变量 tidb_mem_quota_query 的初始值。
Logo

更多推荐