Systemd设置ulimit的方式与方法

systemd,设置,ulimit,方式,方法 · 浏览次数 : 455

小编点评

## Ulimit持久化参数设置 Ulimit 是 Linux 内核参数,控制着进程打开文件数的限制。可以设置 ulimit 以不同的方式: **1. 修改配置文件**: * 可以在 `/etc/security/limit.conf` 中增加如下信息: ``` hard nofile 65536* hard nproc 65536* soft nofile 65536* soft nproc 65536* ``` **注意:** * `*` 代表任何用户,可扩展非特权用户的打开文件数。 * `#` 可根据需要调整文件打开数。 **2. 修改系统服务配置文件**: * 可以将 `service` 文件中的 `LimitMEMLOCK` 和 `LimitNOFILE` 设置为 `infinity` 或 `unlimited`。 **3. 使用 systemctl daemon-reload 刷新配置文件**: * systemctl daemon-reload 命令会重启系统服务,刷新配置文件。 **4. 使用其他方法**: * 可以将 `service` 文件中的 `LimitMEMLOCK` 和 `LimitNOFILE` 设置为 `1048576/etc/systemd/system.conf` 或 `2097152/etc/systemd/system.conf.d/limits.conf[Manager]DefaultLimitNOFILE=1048576:2097152DefaultLimitNPROC=262144:524288。 **建议**: * 修改系统服务配置文件时,同步修改 `security` 的配置文件,避免两者去最小值导致环境运行异常。

正文

Systemd设置ulimit的方式与方法


摘要

Linux安装完成之后前面几件事情一般是处理selinux 以及处理ulimit
其实处理文件打开数有多种方法,之前也总结过, 但是最近因为systemd部署的服务问题
有一些疑惑 所以想着一起进行一下总结

ulimit持久化参数的设置

一般处理ulimit可以修改配置文件
vim  /etc/security/limit.conf
可以增加上如下信息
*   hard    nofile  65536
*   hard    nproc   65536
*   soft    nofile  65536
*   soft    nproc   65536

# 需要注意: * 代表任意用户, 这样其实会扩大非特权用户的打开文件数.
如果确定是那些用户,可以讲用户名替换到 * 上面来. 
# 注意修改完最后是重启一下机器

ulimit临时处理

如果有时候无法重启服务 可以使用如下命令进行处理

ulimit -HSn 65536
或者是
ulimit -HSn unlimited 
也可以, 

如果实在不想重启服务器进行处理
可以在程序启动脚本的最前方增加上这条命令也可以实现扩展的效果.

Systemd服务时的处理.

很多时候可以将产品作为 systemd控制的服务来运行. 
此时需要编写 service文件
但是经常会发现
service 方式运行的环境不受ulimit 命令的参数结果来处理.
这种情况下有两种方式进行优化:
1. 修改全局配置文件.
2. 修改单独一个服务的配置文件.

Systemd全局服务处理

/etc/systemd/user.conf
增加: DefaultLimitNOFILE=1048576
/etc/systemd/system.conf 
增加: DefaultLimitNOFILE=2097152
也可以在配置文件的 .d 目录下增加配置文件
/etc/systemd/system.conf.d/limits.conf
[Manager]
DefaultLimitNOFILE=1048576:2097152
DefaultLimitNPROC=262144:524288

然后执行 systemctl daemon-reload 就可以刷新生效
这种方式学习自:
https://unix.stackexchange.com/questions/366352/etc-security-limits-conf-not-applied/370652#370652

修改单独服务的配置文件.

有时候没有权限修改,或者是不想修改影响过大
可以单独修改一个微服务的设置:
# 需要在 Service下面添加设置
[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
然后执行
systemctl daemon-reload
执行
systemctl restart someapp
就可以了. 

总体建议

修改systemd服务时建议同步修改 security的配置文件
避免两者去最小值导致环境运行异常. 

与Systemd设置ulimit的方式与方法相似的内容:

Systemd设置ulimit的方式与方法

Systemd设置ulimit的方式与方法 摘要 Linux安装完成之后前面几件事情一般是处理selinux 以及处理ulimit 其实处理文件打开数有多种方法,之前也总结过, 但是最近因为systemd部署的服务问题 有一些疑惑 所以想着一起进行一下总结 ulimit持久化参数的设置 一般处理ul

[转帖]CentOS 7 systemd service 设置limit,不生效问题

https://www.jianshu.com/p/1d02c97f3573 问题简述:Centos7下修改系统的最大文件打开数的时候,对系统启动的进程不生效问题详述:Centos7下需修改系统最大文件打开数为100000,进程数为50000,于是做了如下操作 说 明:此问题只出现在centos7下

Linux systemd 定时任务

哈喽大家好,我是咸鱼。 说到 Linux 定时任务,大家用得最多的就是 crond 服务,但其实 systemd 也有类似的功能。我们不但可以通过 systemd 来管理服务,还能设置定时任务,那就是 systemd timer。 与 crond 相比,systemd 定时任务具有以下优点: 更高的

[转帖]ubuntu 时间同步- systemd-timesyncd配置

https://www.cnblogs.com/zhangzhiwei122/p/15886433.html 修改配置 root@HP:~# vi /etc/systemd/timesyncd.conf[Time]NTP=ntp.ntsc.ac.cn cn.ntp.org.cn ##只设置NTP这行

JVM启动参数脚本的再学习与研究

JVM启动参数脚本的再学习与研究 摘要 学无止境 前段时间一直再研究JVM参数调优. 但是最近也在想不应该仅研究如何调优. 因为不管怎么设置, 总有猪队友会把环境搞崩. 所以应该想办法在无人值守的情况下能够启动服务. systemd这种主流方式有时候不靠谱, 进程可能判断生死不准确. 所以还是想通过

[转帖]java -d 参数(系统属性) 和 环境变量

https://www.cnblogs.com/limeiyang/p/16565920.html 1. -d 参数说明 通过 java -h 查看可知: 注意:-D= : set a system property 设置系统属性。如果value是一个包含空格的字符串,则必须将该字符串括在双引号中。

小知识:设置archive_lag_target参数强制日志切换

为客户测试一个ADG场景问题,发现测试环境的日志切换频率过低,总是需要定期手工切换,这非常影响测试心情。 实际上,可以设置archive_lag_target参数强制日志切换。 比如设置: alter system set archive_lag_target=1800; 这样即使库没任何压力,半小

Asp.net MVC 跨域设置

.Net Core 跨域

.NET实现获取NTP服务器时间并同步(附带Windows系统启用NTP服务功能)

对某个远程服务器启用和设置NTP服务(Windows系统) 打开注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 将 Enabled 的值设置为 1,这将启用NTP服务器功

[转帖]Oracle 用户密码中包括了“@”字符串的错误提示解决方法

Oracle 用户密码设置了带有“@”符号,正常登陆总是无法登陆,提示无法解析的连接字符串错误 解决办法:1:修改密码:修改密码使密码中不包括@符号;2:增加转义即可,在密码前后增加 \"示例如下: CMD中输入:C:\Users\Administrator> exp system/\"ABC@X1