【TiDB 使用环境】生产环境 /测试
【TiDB 版本】
【操作系统】
【部署方式】以no-sudo方式本地部署
【集群数据量】
【集群节点数】
【问题复现路径】
【遇到的问题:问题现象及影响】
按照文档修改/etc/security/limits.conf,但是需要重新登录才能生效,如何能保证立即生效?
试了直接ulimit -n 200000命令修改,然后启动集群sudo -iu tidb tiup cluster start tidb-test,
还是报错:
[FATAL] [common.rs:458] [“the maximum number of open file descriptors is too small, got 65535, expect greater or equal to 123880”] [thread_id=1]
这个是根据什么查出来的?明明已经配了
使用sudo -iu tidb ulimit -n查了,也已经是200000了
【资源配置】
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
tiup安装,主要我们希望无人值守全自动化安装,所以要搞清楚原因,不然到时候还要手动干预。
ulimit -n改的是当前会话,sudo -iu是开了新的会话
yg_2024
(yangguang)
2025 年9 月 17 日 00:38
7
cat /proc/$pid/limits
可以确认当前进程文件句柄使用情况,确认是参数设置没生效还是确实用的太多了。
执行tiup命令都是通过ssh连接到各个机器的,你ssh到各个机器,然后执行下ulimit -a看下
有猫万事足
2025 年9 月 17 日 14:01
9
TiDBer_ClfeGpQF:
以no-sudo方式本地部署
不是,没sudo权限的话,tiup打不开对应的limits文件吧?
所以就一直查不到,以为你设置的是一个默认值。
tiup检查,是通过查看配置文件检查的?难道不是执行ulimit命令检查的吗?配置文件也不准啊,改了不见得生效
lllzd
(时光旅行者)
2025 年9 月 23 日 06:03
13
试试在systemd服务配置 LimitNOFILE=200000。
哪个文档说需要修改这个配置文件呢?
集群的服务都是 systemd 管理的,tiup 会管理这些服务的 service unit 文件,通过 LimitNOFILE 来配置;例如在 tidb-server 服务运行的机器上
$ sudo systemctl cat tidb-4000.service
# /etc/systemd/system/tidb-4000.service
[Unit]
Description=tidb service
[Service]
LimitNOFILE=1000000
...
可以这样看下生效的值(例如在 tidb-server 运行的机器上):
# 默认值
sudo systemctl show --property=DefaultLimitNOFILE
DefaultLimitNOFILE=524288
# tidb 服务的,看到的应该就是 systemd 里配置的
sudo systemctl show --property=LimitNOFILE tidb-4000.service
LimitNOFILE=1000000
tiup 所在的集群控制机器上,tidb 账户无法直接使用吗?为啥还 sudo 一下
北极星DB
(Ti D Ber H0 A Jl5 Tn)
2025 年11 月 17 日 09:59
18
是的,一般修改系统配置是双管齐下的,修改配置文件可以确保重启后生效,执行sysctl -p确保当前会话临时生效,这样的好处就是总是生效的!
1 个赞