linux 内核参数调整优化网络

标签: 极客互联 | 发表时间:2017-01-10 07:59 | 作者:shendao
出处:http://www.shellsec.com

Linux系统内核设置优化tcp网络:

# vi /etc/sysctl.conf,添加以下内容

默认值:net.ipv4.tcp_syncookies = 0

net.ipv4.tcp_syncookies = 1

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

默认值:net.ipv4.tcp_tw_reuse = 0

net.ipv4.tcp_tw_reuse = 1

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

默认值:net.ipv4.tcp_tw_recycle = 0

net.ipv4.tcp_tw_recycle = 1

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

net.ipv4.tcp_fin_timeout = 30

表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

net.ipv4.tcp_keepalive_time = 1200

表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时

net.ipv4.tcp_keepalive_intvl = 30

net.ipv4.tcp_keepalive_probes = 3

上面两行意思是,如果probe 3次(每次30秒)不成功,内核才彻底放弃。

原来的默认值为,显然太大

tcp_keepalive_time = 7200 seconds (2 hours)

tcp_keepalive_probes = 9

tcp_keepalive_intvl = 75 seconds

net.ipv4.ip_local_port_range = 1024 65000

表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。

net.ipv4.tcp_max_syn_backlog = 8192

表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

net.ipv4.netdev_max_backlog = 1000

表示进入包的最大设备队列,默认300,改大

net.core.tcp_max_tw_buckets = 5000

表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为 5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数 可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

另外可以参考优化内核配置:

/proc/sys/net/core/wmem_max    最大socket写buffer,可参考的优化值:873200

/proc/sys/net/core/rmem_max    最大socket读buffer,可参考的优化值:873200

/proc/sys/net/ipv4/tcp_wmem    TCP写buffer,可参考的优化值: 8192 436600 873200

/proc/sys/net/ipv4/tcp_rmem    TCP读buffer,可参考的优化值: 32768 436600 873200

/proc/sys/net/ipv4/tcp_mem    同样有3个值,意思是:

net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力.

net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段.

net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket.

上述内存单位是页,而不是字节.

可参考的优化值是:786432 1048576 1572864

/proc/sys/net/core/somaxconn

listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能.

可调整到256.

/proc/sys/net/core/optmem_max

socket buffer的最大初始化值,默认10K.

/proc/sys/net/ipv4/tcp_retries2

TCP失败重传次数,默认值15,意味着重传15次才彻底放弃.可减少到5,以尽早释放内核资源.

还有一个重要参数:net.core.somaxconn

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

该参数默认值128。在高突发的请求中可能会导致链接超时或者触发重传。比如nginx 定义NGX_LISTEN_BACKLOG默认到511, 却由于我们参数未曾优化会限制到128,显然这里限制了nginx的backlog,需要优化

net.core.somaxconn = 32768

相关 [linux 内核 参数] 推荐:

Linux 内核参数优化(for oracle)

- - CSDN博客数据库推荐文章
    Oracle 不同平台的数据库安装指导为我们部署Oracle提供了一些系统参数设置的建议值,然而建议值是在通用的情况下得出的结论,并非能完全满足不同的需求. 使用不同的操作系统内核参数将使得数据库性能相差甚远. 本文描述了linux下几个主要内核参数的设置,供参考.   共享内存是在系统内核分配的一块缓冲区,多个进程都可以访问该缓冲区.

Linux内核TCP/IP参数分析与调优

- - Linux - 操作系统 - ITeye博客
转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/167.html?1456482565. 如下图展示的是TCP的三个阶段.1,TCP三次握手. SYN:(同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立的时候有效.

linux 内核参数调整优化网络

- - 神刀安全网
Linux系统内核设置优化tcp网络:. # vi /etc/sysctl.conf,添加以下内容. 默认值:net.ipv4.tcp_syncookies = 0. 表示开启SYN Cookies. 当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击. 默认值:net.ipv4.tcp_tw_reuse = 0.

优化Linux下的内核TCP参数来提高服务器负载能力

- - Linux - 操作系统 - ITeye博客
提高服务器的负载能力,是一个永恒的话题. 在一台服务器CPU和内存资源额定有限的情况下,最大的压榨服务器的性能,是最终的目的. 要提高Linux系统下的负载能力,可以先启用Apache的Worker模式(参考我写的《Ubuntu下配置Apache的Worker模式》一文),来提高单位时间内的并发量.

Linux 内核优化

- - CSDN博客系统运维推荐文章
声明:本文档来自互联网整理部份加自已实验部份所得:. TCP 服务器 <---> 客户端通信状态.           ACK--------------->                                          建立连接.                    <---------------未回复.

Linux上TCP的几个内核参数调优 - 无毁的湖光-Al - 博客园

- -
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优. 光TCP的调优参数就有50多个. 在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数. 在此分享出来,希望对大家有所帮助. 请记住,这里只是笔者在内网进行TCP内核参数调优的经验,仅供参考. 同时,笔者还会在余下的博客里面详细解释了为什么要进行这些调优.

JVM内核参数说明

- - 编程语言 - ITeye博客
java虽然是自动回收内存,但是应用程序,尤其服务器程序最好根据业务情况指明内存分配限制. 表示JVM Heap(堆内存)最小尺寸128MB,初始分配. 表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配. 说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉.

Linux内核里的智能指针

- 浪客 - 博客园-首页原创精华区
众所周知,C/C++语言本身并不支持垃圾回收机制,虽然语言本身具有极高的灵活性,但是当遇到大型的项目时,繁琐的内存管理往往让人痛苦异常. 现代的C/C++类库一般会提供智能指针来作为内存管理的折中方案,比如STL的auto_ptr,Boost的Smart_ptr库,QT的QPointer家族,甚至是基于C语言构建的GTK+也通过引用计数来实现类似的功能.

“Linux”不等同于Linux内核:构建Linux系统的8个软件包

- - 极客范 - GeekFan.net
Linux发行版并不仅仅是Linux内核. 所有的Linux发行版都包含了除内核之外的一些必要的软件包,比如Grub引导程序、Bash shell、GNU shell工具软件、守护进程、X.org图形服务器和桌面环境等等. 所有这些不同的程序均由相互独立的开发小组开发. 这些程序被Linux发行版集成到一起从而形成一套完整的“Linux”操作系统.

Linux & Nginx 性能参数调优

- - Linux - 操作系统 - ITeye博客
主要针对linux 文件句柄以及网卡参数调优. 修改linux最大文件句柄数. 查看open files  参数. vi /etc/security/limits.conf 添加. 修改以后保存,注销当前用户,重新登录,执行ulimit -a ,ok ,参数生效了. use epoll; 使用epoll的I/O模型 如:.