当前位置: 首页 > news >正文

linux 系列服务器 高并发下ulimit优化文档

系统输入 ulimit -a 结果如下
在这里插入图片描述
解除或提高 Linux 系统的最大进程数
在高并发场景中,合理设置 Linux 系统的最大进程数对于提升服务器性能至关重要。以下是具体步骤:

  1. 临时修改 ulimit 设置
    可以通过 ulimit 命令临时调整当前会话的最大进程数。
    查看当前会话的最大进程数限制:
ulimit -u

设置新的最大进程数(例如设置为 65535):

ulimit -u 65535

注意: 这种方法仅对当前会话有效,重启后设置会恢复默认值。
2. 永久修改 /etc/security/limits.conf
修改 /etc/security/limits.conf 文件使设置永久生效。添加以下内容:

* soft nproc 65535
* hard nproc 65535

对于特定用户,可以指定用户名进行配置:

username soft nproc 65535
username hard nproc 65535

解释:
soft:用户可调整的限制。
hard:管理员才能调整的限制。
3. 确保 PAM 模块加载
某些系统需要确保 PAM 模块加载 limits.conf 设置。编辑以下文件并确保包含:

session required pam_limits.so

修改的文件:

/etc/pam.d/common-session
/etc/pam.d/common-session-noninteractive
  1. 修改 /etc/sysctl.conf(内核级限制)
    调整系统级资源限制。在 /etc/sysctl.conf 文件中添加:
fs.file-max = 2097152

加载设置:

sysctl -p
  1. 配置 systemd 服务限制
    对使用 systemd 的系统,需修改 system.conf 和 user.conf。
    编辑 /etc/systemd/system.conf/etc/systemd/user.conf 文件,添加或修改以下内容:
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
DefaultLimitCORE=infinity

重新加载 systemd 配置:

systemctl daemon-reexec
  1. 核心文件大小(core file size)
    高并发程序可能需要记录崩溃信息用于调试。
    临时调整:
ulimit -c unlimited

永久调整: 在 /etc/security/limits.conf 中添加:

* soft core unlimited
* hard core unlimited
  1. 堆栈大小(stack size)
    某些应用可能需要较大的堆栈空间。
    临时调整:
ulimit -s 8192

永久调整: 在 /etc/security/limits.conf 中添加:

* soft stack 8192
* hard stack 8192
  1. 内核参数优化(网络高并发)
    对于高并发网络连接,优化内核参数。在 /etc/sysctl.conf 中添加:
fs.file-max = 2097152
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15

应用更改:

sysctl -p
  1. 验证配置
    验证所有更改是否生效:

查看 ulimit 配置:

ulimit -a

查看系统级文件描述符配置:

cat /proc/sys/fs/file-max

监控文件描述符使用情况:

lsof | wc -l

注意事项

  1. 调整参数时需根据实际业务需求和服务器资源进行测试。

  2. 设置过高可能会浪费资源或引发系统不稳定。

  3. 修改系统级配置后,建议重启服务或服务器以确保所有设置生效。

http://www.lryc.cn/news/498527.html

相关文章:

  • 人工智能入门数学基础:统计推断详解
  • Spark区分应用程序 Application、作业Job、阶段Stage、任务Task
  • 【Liunx篇】基础开发工具 - yum
  • docker学习笔记(五)--docker-compose
  • 电子商务人工智能指南 4/6 - 内容理解
  • Hadoop3集群实战:从零开始的搭建之旅
  • Kotlin设计模式之桥接模式
  • 详解组合模式
  • 【系统架构设计师论文】云上自动化运维及其应用
  • 交换排序----快速排序
  • ES 与 MySQL 在较大数据量下查询性能对比
  • C# 新语法中的字符串内插$和{}符号用法详解
  • Nacos源码学习-本地环境搭建
  • windows 好工具
  • 计算机运行时提示错误弹窗“由于找不到 quazip.dll,无法继续执行代码。”是什么原因?“quazip.dll文件缺失”要怎么解决?
  • 创造未来:The Sandbox 创作者训练营如何赋能全球创造者
  • R语言对简·奥斯汀作品中人物对话的情感分析
  • 股指期货基差为正数,这是啥意思?
  • 黑马程序员MybatisPlus/Docker相关内容
  • 使用 Vue 和 Canvas-Confetti 实现烟花动画特效
  • 【银河麒麟操作系统真实案例分享】内存黑洞导致服务器卡死分析全过程
  • 如何加强游戏安全,防止定制外挂影响游戏公平性
  • SpringBoot整合knife4j,以及会遇到的一些bug
  • 城电科技|光伏廊道是什么?安装光伏廊道有什么好处?
  • 当DHCP服务器分配了同一个IP地址
  • 储能能量自动化调配装置功能介绍
  • vite5+vue3+Ts5 开源图片预览器上线
  • 【深度学习】深入解析长短期记忆网络(LSTMs)
  • 从Web3到智能合约:探索新一代数据交互模式
  • 排查bug的通用思路