linux中配置程序打开文件的句柄和创建进程的数量尤为重要,一般系统默认情况下值为1024。对于一些程序或者中间件系统1024的数量比较小,需要增大这个数量。尤其是部署中间件或者大数据的机器一定要增大该值。
本文的背景就是因为部署kafka的机器未做limit的优化,导致kafka集群拒绝连接。
直接进入正文
jps 查看运行的java程序的进程
lsof -p 849 |wc -l 查看进程号849这个程序打开的文件句柄数
ulimit -n 文件句柄数限制查看
ulimit -u 进程限制查看
ulimit -a 查看限制全部信息
a、配置文件/etc/security/limits.conf
- * soft nofile 65536
- * hard nofile 65536
- * soft nproc 65536
- * hard nproc 65536
* soft nofile 65536 #测试验证文件句柄是这行生效
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536 #测试验证进程数是这行生效
格式为[用户名/*] [soft/hard/-] [nofile/nproc] [数目]
也可以使用两行配置如下(建议)
- * - nofile 65536
- * - nproc 65536
数量上建议设置65536,也可以根据自己的业务情况设置大一些。
b、另外一个配置目录/etc/security/limits.d(一般自己配置不建议,建议统一配置)
limits.conf配置一般是配置全局的,在limits.d文件夹中可以配置每个用户独有的,如hive用户使用hive.conf文件配置,优先级最高,高于全局的配置。
配置之后需要退出,重新登录之后才能生效
参考:ssh登陆系统ulimit不生效的问题_贾己人的博客-CSDN博客_ssh ulimit 不生效
修改/etc/ssh/sshd_config文件
UsePAM yes
然后重启sshd
systemctl restart sshd
如果还是未生效,修改/etc/ssh/sshd_config文件
UseLogin yes
然后再重启sshd服务