问题过程
操作系统是OpenEuler 20.03,内核由4.19.90-2112.8.0.0131.oe1.aarch64升级到kernel-4.19.90-2401.1.0.0233.oe1.aarch64后,重启系统后,重新开起来运行OceanBase就运行不起来了,提示open files must not be less than 20000 (Current value: 1024),明明升级前都是正常的。
分析步骤
查看/etc/security/limits.conf文件,内容是正确设置的
同时确认了 /etc/security/limits .d/目录下没有其它文件(避免相关文件内有相同配置覆盖掉)。
这时用命令ulimit -a和-n显示的open files值还是1024,百思不得其解。于是进行临时设置,ulimit -sHn 65535,这时ulimit -a的值已变为65535,如下图,但执行obd cluster start后运行,依然提示值低于20000错误,看来只是表象真实还没设置到。
问题解决
后来通过咨询官方,得到的相关类似案例的答案是ssh远程访问ulimit未生效,和OpenSSH有关。
参考链接:
https://ask.oceanbase.com/t/topic/35601761/3?_gl=1
https://www.jianshu.com/p/1bfe9db10fb8
里面提到,【OpenSSH】关于升级openssh后ulimit不生效问题的解决方法,难道升级内核的时候也升级了OpenSSH了吗?
于是先确认几个事情:
1、 /etc/ssh/sshd_config确认是否有UsePAM yes
2、/etc/pam.d/sshd里是否有session required pam_limits.so
通过第2条,发现系统里竟然没有sshd这个文件,难道OpenSSH丢了?不管了重新安装吧。
通过命令:
sudo yum install openssh-server
重新安装后,/etc/pam.d/sshd文件出现了,这时reboot重启一下系统(可能不需要),再次ulimit -a和-n,值终于是65535,正常了。