修改ubuntu服务器fs文件最大打开数

起因

在对项目进行压测的时候,请求异常 java.net.SocketException: socket closed,查看nginx代理服务器的日志。tail -f -n500 /var/log/nginx/error.log 显示 文件打开数太多socket() failed (24: Too many open files) while connecting to upstream
在这里插入图片描述

解决

通过查看linux系统限制命令ulimit 命令来查看系统文件限制

ulimit -Hn
ulimit -Sn
// 结果显示:1024,当前登陆用户不是root用户。

ulimit -Hn 是一个命令行命令,可以用来查看当前系统用户所能打开的最大文件描述符数量的硬限制。文件描述符是操作系统为了表示和操作文件而提供的一种机制,每个文件描述符都是一个非负整数,用来标识打开的文件或者管道。
-H 参数表示显示硬限制(hard limit),即系统管理员为当前用户设置的最大限制值。-n 参数表示显示文件描述符数量。通常情况下,硬限制是软限制(soft limit)的上限,也就是可以修改的最大。
-S 参数表示显示软限制(soft limit),即当前用户可以打开的文件描述符数量的默认值。-n 参数表示显示文件描述符数量。
软限制是当前用户可以打开的文件描述符数量的默认值,用户可以通过 ulimit -n 命令来查看和修改软限制。通常情况下,硬限制是软限制的上限,也就是可以修改的最大值。
如果想要修改软限制,一般可以使用 ulimit -n 命令进行修改。需要注意的是,软限制不能超过硬限制。如果软限制超过了硬限制,那么修改软限制时会失败。

编辑文件 /etc/security/limits.conf 修改用户打开文件数上限

* soft nofile 1048576
* hard nofile 1048576

修改ubuntu服务器fs文件最大打开数_第1张图片

⚠️ nginx服务器可以打开的文件数量受你操作系统的限制,编辑 /etc/sysctl.conf

fs.file-max = 6553560

在这里插入图片描述
最后 刷新文件配置

sysctl -p

当再次通过命令 ulimit -Sn 查看用户可以打开上限时,结果就是自己修改后的值。
⚠️ 如果是修改前的会话窗口 查看结果依然是 1024,可以重新打开一个窗口查看。

参考

你可能感兴趣的:(服务器,ubuntu,linux)