为什么在 linux system service 启动服务,最大文件描述符变成了默认的 4096

简介: 修改系统或用户文件描述符限制可能未生效,需确保执行系统重启、systemd 重启或服务重启以加载新配置。注意服务运行账户的权限和配置文件中的限制,检查服务 unit 文件是否覆盖默认限制。临时 `ulimit` 调整不适用于服务启动,应修改配置文件。还要确认内核版本和配置是否允许更高的限制。

配置未生效

您可能已经尝试过修改系统或特定用户的文件描述符限制,如编辑 /etc/security/limits.conf 或 /etc/systemd/system.conf 文件,增加了 DefaultLimitNOFILE 参数的值。但如果没有正确应用这些更改,或者没有重启相应的服务以使新配置生效,系统仍然会使用旧的默认值。确保您在修改配置后执行了以下操作之一:
系统重启:重启整个系统可以确保新的系统级配置在整个系统启动时被加载。
重启 systemd:如果不想重启整个系统,可以尝试重启 systemd 以加载新的配置。这通常通过执行 systemctl daemon-reload 命令实现。
重启服务:针对某个具体服务,即使系统全局配置已更新,也需要重启该服务以使其遵循新的限制,例如 systemctl restart your-service-name.service。

用户与服务账户权限:

如果服务以非 root 用户身份运行,并且您仅在 root 用户或某个其他用户配置文件中调整了最大文件描述符限制,那么该服务所使用的用户账户可能仍受其自身用户配置文件中较低的限制约束。请确保在相应服务运行账户的配置文件(如 /etc/security/limits.d/ 目录下的特定用户或组配置文件)中也设置了适当的限制。

服务自身的配置覆盖:

有些服务可能会在其自身的 systemd unit 文件(.service 文件)中显式设置资源限制,这会覆盖系统级别的默认限制。检查服务的 unit 文件(通常位于 /lib/systemd/system/ 或 /etc/systemd/system/),看是否存在类似 LimitNOFILE= 的行,如果有且值设为 4096,则需要将其修改为期望的更高值。

临时 shell 会话限制:

如果您使用 ulimit 命令在终端中临时调整了文件描述符限制,这只是影响当前 shell 会话,不会持久化到服务启动时的环境。要永久更改限制,应通过上述系统或用户配置文件进行。

内核限制:

虽然不太常见,但某些较老的内核版本或特定内核配置可能对最大文件描述符数量有硬性限制。确认您的内核版本是否支持您想要设置的较高值,并检查内核编译选项是否有相关限制。

目录
相关文章
|
2月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
306 146
|
3月前
|
缓存 安全 Linux
六、Linux核心服务与包管理
在没有网络的情况下,使用系统安装光盘是获取RPM包的常用方法。场景二:配置本地文件镜像源 (使用系统安装光盘/ISO)(检查RPM包的GPG签名以保证安全) 或。YUM/DNF包管理工具 (yum/dnf)(此处可以放置您为本主题制作的思维导图)处理依赖问题的危险选项 (应极力避免)(覆盖文件、替换已安装包)。(list) 则是列出文件。(query file) 是。(假设系统安装光盘已挂载到。信息 (verbose)。(upgrade) 选项。(all) 已安装的包。(package) 选项
398 11
|
8月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
723 25
|
10月前
|
应用服务中间件 Linux nginx
【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?Web App Linux 默认使用的 Nginx 版本是由平台预定义的,无法更改这个版本。
289 77
|
10月前
|
消息中间件 Linux
Linux中的System V通信标准--共享内存、消息队列以及信号量
希望本文能帮助您更好地理解和应用System V IPC机制,构建高效的Linux应用程序。
424 48
|
10月前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
473 34
|
9月前
|
Linux iOS开发 MacOS
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
284 0
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
|
11月前
|
Linux Docker 容器
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
838 19
|
11月前
|
监控 Linux
Linux systemd 服务启动失败Main process exited, code=exited, status=203/EXEC
通过以上步骤,可以有效解决 systemd 服务启动失败并报错 `Main process exited, code=exited, status=203/EXEC` 的问题。关键在于仔细检查单元文件配置、验证可执行文件的有效性,并通过日志分析具体错误原因。确保可执行文件路径正确、文件具有执行权限,并且可以独立运行,将有助于快速定位和解决问题。
5027 7
|
Linux
【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
System V信号量的概念及其在Linux中的使用,包括 `semget()`、`semctl()`和 `semop()`函数的具体使用方法。通过实际代码示例,演示了如何创建、初始化和使用信号量进行进程间同步。掌握这些知识,可以有效解决多进程编程中的同步问题,提高程序的可靠性和稳定性。
664 19