docker容器一直重启的解决办法
项目通过docker compose部署上线时,出现了容器疯狂重启的情况,昨天是nacos不断挂掉重启,连带着seata也一直重启,排查发现是内存不足的原因,重新分配内存后得以解决。
今天seata和Sentinel又开始了,我寻思内存已经够用了啊,nacos都没事了,怎么这两个又出问题了,搜索一番终于解决,记录一下原因和解决方案。
错误信息
使用docker logs seata查看日志,只有一行错误信息:
unable to allocate file descriptor table - out of memorylibrary initialization failed
系统级修改
错误信息表示系统的文件描述符(file descriptor)限制不足,可能导致服务(如 Seata)无法正常启动或运行。
使用 ulimit -n 查看当前用户的文件描述符限制,只有1024
修改系统级别的ulimit参数:vim /etc/security/limits.conf ,设置
1 | |
编辑 /etc/pam.d/common-session 和 /etc/pam.d/common-session-noninteractive 文件,添加
1 | |
编辑 /etc/sysctl.conf 文件,添加
1 | |
重启sudo sysctl -p,并重启系统
修改docker-compose.yml文件
为重启的容器添加ulimits:字段限制:
1 | |
重新启动docker compose,修改成功,容器正常运行
1 | |
docker容器一直重启的解决办法
https://payfish.github.io/2024/08/22/docker容器一直重启的解决办法/