为什么在 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 会话,不会持久化到服务启动时的环境。要永久更改限制,应通过上述系统或用户配置文件进行。

内核限制:

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

目录
相关文章
|
1天前
|
Linux 数据库
Linux服务如何实现服务器重启后的服务延迟自启动?
【10月更文挑战第25天】Linux服务如何实现服务器重启后的服务延迟自启动?
23 3
|
1天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
22 3
|
20天前
|
Ubuntu Linux 网络安全
Linux中服务管理问题
【10月更文挑战第4天】
15 2
|
2月前
|
Docker 容器
14 response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file speci
14 response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file speci
28 1
|
24天前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
55 0
|
2月前
|
NoSQL Linux Redis
Linux Redis 服务设置开机自启动
【9月更文挑战第2天】在 Linux 系统中,可使用两种方法设置 Redis 开机自启动:一是通过创建 `redis.service` 文件并利用 systemd 进行管理,包括定义服务参数和启动脚本;二是编辑 `/etc/rc.local` 文件,在其中添加启动命令。推荐使用 systemd 方法,因为它更符合现代 Linux 系统的设计理念。设置完成后,可通过 `sudo systemctl status redis.service` 检查服务状态。
198 3
|
2月前
|
编解码 Linux 开发工具
Linux平台x86_64|aarch64架构RTMP推送|轻量级RTSP服务模块集成说明
支持x64_64架构、aarch64架构(需要glibc-2.21及以上版本的Linux系统, 需要libX11.so.6, 需要GLib–2.0, 需安装 libstdc++.so.6.0.21、GLIBCXX_3.4.21、 CXXABI_1.3.9)。
|
3月前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
115 3
|
3月前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
|
3月前
|
存储 Linux 开发工具
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误