一、修改最大进程数

系统允许创建的最大进程数量即是max user processes 这个参数。 我们可以使用 ulimit -u 65535 修改max user processes的值,但是只能在当前终端的这个session里面生效,重新登录后仍然是使用系统默认值。

正确的一次性修改是在/etc/security/limits.d/90-nproc.conf文件中, 该文件修改如下:

* soft nproc 65535

root soft nproc unlimited

*代表任意用户,也可以指定某一个用户,如root不限制

二、修改文件最大打开数

大家知道linux默认打开的文件数是1024,而实际生产环境中,服务器使用充分的情况下,该值肯定是不够用,往往有时会报too many open files

正确的一次性修改是在/etc/security/limits.conf,改文件修改如下:

* soft nofile 327680

* hard nofile 327680

三、系统内核修改

系统优化是在/etc/sysctl.conf中

net.core.somaxconn

net.core.somaxconn是Linux中的一个kernel参数,表示socket监听(listen)的backlog上限。什么是backlog呢?backlog就是socket的监听队列,当一个请求(request)尚未被处理或建立时,他会进入backlog。而socket server可以一次性处理backlog中的所有请求,处理后的请求不再位于监听队列中。当server处理请求较慢,以至于监听队列被填满后,新来的请求会被拒绝。

我们需要在sysctl.conf中增加如下:

net.core.somaxconn = 32786

net.ipv4.tcp_tw_reuse

开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认是0,表示关闭

我们需要在sysctl.conf中增加如下:

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle

开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭

我们需要在sysctl.conf中增加如下:

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_fin_timeout

对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。

我们需要在sysctl.conf中增加如下:

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_max_orphans

最大孤儿套接字(orphan sockets)数,单位是个,当cat /proc/net/sockstat看到的orphans数量达到net.ipv4.tcp_max_orphans的约一半时,就会报:Out of socket memory

我们需要在sysctl.conf中增加如下:

net.ipv4.tcp_max_orphans = 327680

fs.file-max

file-max是设置 系统所有进程一共可以打开的文件数量

我们需要在sysctl.conf中增加如下:

fs.file-max = 6553560

net.ipv4.tcp_max_tw_buckets

系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息

我们需要在sysctl.conf中增加如下:

net.ipv4.tcp_max_tw_buckets = 200000

net.ipv4.tcp_syncookies

开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭

我们需要在sysctl.conf中增加如下:

net.ipv4.tcp_syncookies = 1

net.unix.max_dgram_qlen

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

我们需要在sysctl.conf中增加如下:

net.unix.max_dgram_qlen = 20000

net.ipv4.tcp_max_syn_backlog

端口最大 backlog 内核限制。此参数限制 服务端应用程序 可以设置的端口最大 backlog 值 (对应于端口的 syn_backlog 和 backlog 队列长度)。动机是在内存有限的服务器上限制/避免应用程序配置超大 backlog 值而耗尽内核内存。如果应用程序设置 backlog 大于此值,操作系统将自动将之限制到此值。

我们需要在sysctl.conf中增加如下:

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_mem

内核分配给TCP连接的内存,单位是Page,1 Page = 4096 Bytes,该值一般是三个数值。

第一个数字表示,当 tcp 使用的 page 少于 196608 时,kernel 不对其进行任何的干预

第二个数字表示,当 tcp 使用了超过 262144 的 pages 时,kernel 会进入 “memory pressure” 压力模式

第三个数字表示,当 tcp 使用的 pages 超过 393216 时(相当于1.6GB内存),就会报:Out of socket memory

4G的虚拟机,我们需要在sysctl.conf中增加如下:

net.ipv4.tcp_mem = 196608       262144  393216

8G的虚拟机,我们需要在sysctl.conf中增加如下:

net.ipv4.tcp_mem = 524288     699050  1048576

net.ipv4.ip_local_port_range

本地可用端口极限值,默认值是32768到61000,说明这台机器本地能向外连接61000-32768=28232个连接,高并发的服务明显就不够用.关于端口的文章,我之前写过一篇,https://it.baiked.com/system/62.html

我们需要在sysctl.conf中增加如下:

net.ipv4.ip_local_port_range= 1024 65000

综上所述,sysctl.conf增加完成后,执行:

sysctl -p

ok,到此结束

linux内核优化哪些参数,linux内核参数优化 互联网技术圈 互联网技术圈相关推荐

  1. linux追加内核参数,Linux设置内核参数的方法

    1 内核参数的查看方法 使用"sysctl -a"命令可以查看所有正在使用的内核参数.内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4.net.ip ...

  2. linux 内核空间 sy,在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysf...

    级别: 初级 燚 杨 (), 计算机科学硕士 2006 年 2 月 16 日 本系列文章包括两篇,它们文详细地介绍了 Linux 系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数.模块参数 ...

  3. linux 内核位置无关,常用的设备无关启动时参数 - Linux操作系统内核启动参数详解_Linux教程_Linux公社-Linux系统门户网站...

    常用的设备无关启动时参数. 1.init=... 设置内核执行的初始化进程名,如果该项没有设置,内核会按顺序尝试/etc/init, /bin/init,/sbin/init, /bin/sh,如果所 ...

  4. linux设置sfq队列参数,Linux内核中流量控制(5)

    本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性, 5.5 SFQ(Stochastic Fairness Queueing discipline ...

  5. 【Linux 内核 内存管理】优化内存屏障 ③ ( 编译器屏障 | 禁止 / 开启内核抢占 与 方法保护临界区 | preempt_disable 禁止内核抢占源码 | 开启内核抢占源码 )

    文章目录 一.禁止 / 开启内核抢占 与 方法保护临界区 二.编译器优化屏障 三.preempt_disable 禁止内核抢占 源码 四.preempt_enable 开启内核抢占 源码 一.禁止 / ...

  6. linux c绑定cpu_Linux内核路径优化之多核心平台TCP优化

    1.Linux的TCP实现 1.1.Linux的TCP实现在协议层面分为两个部分 1).连接握手处理 TCP首先会通过三次握手建立一个连接,然后就可以传输数据了.TCP规范并没有指定任何的实现方式,当 ...

  7. linux内核设计与实现 epub_mongodb内核源码设计实现、性能优化、最佳运维系列-网络传输层模块源码实现四...

    1. 说明 本文分析网络传输层模块中的最后一个子模块:service_executor服务运行子模块,即线程模型子模块.在阅读该文章前,请提前阅读下<<Mongodb网络传输处理源码实现及 ...

  8. linux裁剪内核和移植,嵌入式Linux内核裁剪及移植的研究与实现

    摘要: 嵌入式操作系统是嵌入式系统的软件核心,它管理系统中所有的软件和硬件资源,并且满足嵌入式系统的专用性和可裁剪性.嵌入式Linux以其开源,可裁剪以及模块化设计等特点,吸引了国内外众多研发人员的青 ...

  9. linux中内核4c,一台Linux服务器(4C8G配置)可以负载百万个连接?

    首先我们来看如何标识一个TCP连接?系统是通过一个四元组来识别,(src_ip,src_port,dst_ip,dst_port)即源IP.源端口.目标IP.目标端口.比如我们有一台服务192.168 ...

  10. linux内核中的jiffies,Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解

    在LINUX的时钟中断中涉及至二个全局变量一个是xtime,它是timeval数据结构变量,另一个则是jiffies,首先看timeval结构 struct timeval { time_t tv_s ...

最新文章

  1. 4个月原生weex混合开发终结()
  2. centos 查看mysql 服务器配置_在CentOS上MySQL数据库服务器配置方法
  3. 测试博客园Markdown 表格
  4. 【spring boot】支持webjars
  5. 如何安装mysql5.7.25_Centos7 yum安装MySQL5.7.25
  6. Eclipse中activiti插件的安装
  7. 基于51单片机的八位流水灯(三种形式)
  8. signature=4c9125bac76ec40553ba356eaca47964,2008 SEM Honorary Members Conversations
  9. spring aop实例讲解_【好好面试】手把手调试,教你分析Spring-Aop
  10. 点击更多显示更多内容
  11. 使用openssl模拟CA和CA证书的签发
  12. Visual Studio(VS2017/VS2019) C++ 配置 CPLEX 教程
  13. xsd文件生成class
  14. 微控制器和微处理器的区别(含课本原图)
  15. #91;#12304;#26469;#20998;#26399;#23458;#26381;#30005;#35805;#12305;#93;
  16. FCAA答题练习收集记录
  17. 一文读懂 Kafka 事务机制
  18. 基于注意力机制的深度协同推荐模型
  19. 使用VirtualBox搭建分布式集群环境记录
  20. Chrome 扩展程序——Imagus:图片放大预览工具

热门文章

  1. zblog如何调用HTML,Zblog调用栏目文章的方法
  2. 输入法画面_搜狗输入法去广告版,流畅再无弹窗打扰
  3. ASP.NET Web API中展示实体Link相关的方面
  4. centos 修改语言、时区
  5. window10 vs2013 SIFTGPU
  6. 《mysql必知必会》学习_第11章_20180801_欢
  7. 2018/3/18 noip模拟赛 20分
  8. Vue.js组件学习
  9. 为 Neutron 准备物理基础设施(II) - 每天5分钟玩转 OpenStack(76)
  10. Cocos2d-x内置粒子系统