IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Linux内核参数调整

陈鹏个人博客 2016-03-19 22:50:41 累计浏览 1,661 次
本机暂存

ulimit设置

ulimit -n 要调整为100000甚至更大。 命令行下执行 ulimit -n 100000即可修改。如果不能修改,需要设置 /etc/security/limits.conf,加入

* soft nofile 262140

* hard nofile 262140

root soft nofile 262140

root hard nofile 262140

* soft core unlimited

* hard core unlimited

root soft core unlimited

root hard core unlimited

内核设置

net.unix.max_dgram_qlen = 100

swoole使用unix socket dgram来做进程间通信,如果请求量很大,需要调整此参数。系统默认为10,可以设置为100或者更大。
或者增加worker进程的数量,减少单个worker进程分配的请求量。

net.core.wmem_max

修改此参数增加socket缓存区的内存大小

net.ipv4.tcp_mem  =   379008       505344  758016

net.ipv4.tcp_wmem = 4096        16384   4194304

net.ipv4.tcp_rmem = 4096          87380   4194304

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_tw_reuse

是否socket reuse,此函数的作用是Server重启时可以快速重新使用监听的端口。如果没有设置此参数,会导致server重启时发生端口未及时释放而启动失败

net.ipv4.tcp_tw_recycle

使用socket快速回收,短连接Server需要开启此参数

消息队列设置

当使用消息队列作为进程间通信方式时,需要调整此内核参数

  • kernel.msgmnb = 4203520,消息队列的最大字节数

  • kernel.msgmni = 64,最多允许创建多少个消息队列

  • kernel.msgmax = 8192,消息队列单条数据最大的长度

FreeBSD/MacOS

  • sysctl -w net.local.dgram.maxdgram=8192

  • sysctl -w net.local.dgram.recvspace=200000 修改Unix Socket的buffer区尺寸

开启CoreDump

设置内核参数

kernel.core_pattern = /data/core_files/core-%e-%p-%t

通过ulimit -c命令查看当前coredump文件的限制

ulimit -c

如果为0,需要修改/etc/security/limits.conf,进行limit设置。

开启core-dump后,一旦程序发生异常,会将进程导出到文件。对于调查程序问题有很大的帮助

其他重要配置

  • net.ipv4.tcp_syncookies=1

  • net.ipv4.tcp_max_syn_backlog=81920

  • net.ipv4.tcp_synack_retries=3

  • net.ipv4.tcp_syn_retries=3

  • net.ipv4.tcp_fin_timeout = 30

  • net.ipv4.tcp_keepalive_time = 300

  • net.ipv4.tcp_tw_reuse = 1

  • net.ipv4.tcp_tw_recycle = 1

  • net.ipv4.ip_local_port_range = 20000 65000

  • net.ipv4.tcp_max_tw_buckets = 200000

  • net.ipv4.route.max_size = 5242880

查看配置是否生效

如:修改net.unix.max_dgram_qlen = 100后,通过

cat /proc/sys/net/unix/max_dgram_qlen

如果修改成功,这里是新设置的值。

来源:http://wiki.swoole.com/wiki/page/p-server/sysctl.html

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 如何成为Python高手 (累计阅读 54,992)
  2. Linux如何统计进程的CPU利用率 (累计阅读 16,307)
  3. 我的 RHCA 之路 (累计阅读 14,011)
  4. Linux内存点滴 用户进程内存空间 (累计阅读 13,228)
  5. 给程序员新手的一些建议 (累计阅读 13,087)
  6. Linux 性能监控、测试、优化工具 (累计阅读 13,010)
  7. 关于linux内存free的一些事情 (累计阅读 12,865)
  8. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,788)
  9. ps - 按进程消耗内存多少排序 (累计阅读 12,685)
  10. Google怎么用linux (累计阅读 12,580)