Linux内核 TCP/IP、Socket参数调优
Linux内核 TCP/IP、Socket参数调优
|
Doc1: /proc/sys/net目录所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),例如下面这些重要的参数:
/etc/sysctl.conf文件 /etc/sysctl.conf是一个允许你改变正在运行中的Linux系统的接口。它包含一些TCP/IP堆栈和虚拟内存系统的高级选项,可用来控制Linux网络配置,由于/proc/sys/net目录内容的临时性,建议把TCPIP参数的修改添加到/etc/sysctl.conf文件, 然后保存文件,使用命令“/sbin/sysctl –p”使之立即生效。具体修改方案参照上文: net.core.rmem_default = 256960 net.core.rmem_max = 513920 net.core.wmem_default = 256960 net.core.wmem_max = 513920 net.core.netdev_max_backlog = 2000 net.core.somaxconn = 2048 net.core.optmem_max = 81920 net.ipv4.tcp_mem = 131072 262144 524288 net.ipv4.tcp_rmem = 8760 256960 4088000 net.ipv4.tcp_wmem = 8760 256960 4088000 net.ipv4.tcp_keepalive_time = 1800 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_sack = 1 net.ipv4.tcp_fack = 1 net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_max_syn_backlog = 2048 Doc2: 可调优的内核变量存在两种主要接口:sysctl命令和/proc文件系统,proc中与进程无关的所有信息都被移植到sysfs中。IPV4协议栈的sysctl参数主要是sysctl.net.core、sysctl.net.ipv4,对应的/proc文件系统是/proc/sys/net/ipv4和/proc/sys/net/core。只有内核在编译时包含了特定的属性,该参数才会出现在内核中。 对于内核参数应该谨慎调节,这些参数通常会影响到系统的整体性能。内核在启动时会根据系统的资源情况来初始化特定的变量,这种初始化的调节一般会满足通常的性能需求。 应用程序通过socket系统调用和远程主机进行通讯,每一个socket都有一个读写缓冲区。读缓冲区保存了远程主机发送过来的数据,如果缓冲区已满,则数据会被丢弃,写缓冲期保存了要发送到远程主机的数据,如果写缓冲区已慢,则系统的应用程序在写入数据时会阻塞。可知,缓冲区是有大小的。 socket缓冲区默认大小: socket缓冲区最大值: /proc/sys/net/core/netdev_max_backlog 对应 net.core.netdev_max_backlog /proc/sys/net/core/somaxconn 对应 net.core.somaxconn /proc/sys/net/core/optmem_max 对应 net.core.optmem_max TCP/IPV4内核参数: /proc/sys/net/ipv4/tcp_mem socket的结构如下图:
/proc/sys/net/ipv4/tcp_window_scaling 对应net.ipv4.tcp_window_scaling /proc/sys/net/ipv4/tcp_sack 对应net.ipv4.tcp_sack /proc/sys/net/ipv4/tcp_dsack 对应net.ipv4.tcp_dsack /proc/sys/net/ipv4/tcp_fack 对应net.ipv4.tcp_fack TCP的连接管理: /proc/sys/net/ipv4/tcp_syn_retries 对应net.ipv4.tcp_syn_retries /proc/sys/net/ipv4/tcp_retries1 对应net.ipv4.tcp_retries1 /proc/sys/net/ipv4/tcp_retries2 对应net.ipv4.tcp_retries2 TCP连接的保持: /proc/sys/net/ipv4/tcp_keepalive_intvl 对应net.ipv4.tcp_keepalive_intvl /proc/sys/net/ipv4/tcp_keepalive_probes 对应net.ipv4.tcp_keepalive_probes /proc/sys/net/ipv4/ip_local_port_range 对应net.ipv4.ip_local_port_range TCP连接的回收: /proc/sys/net/ipv4/tcp_tw_reuse 对应net.ipv4.tcp_tw_reuse /proc/sys/net/ipv4/tcp_tw_recycle 对应net.ipv4.tcp_tw_recycle /proc/sys/net/ipv4/tcp_fin_timeout 对应net.ipv4.tcp_fin_timeout /proc/sys/net/ipv4/route/max_size /proc/sys/net/ipv4/ip_forward /proc/sys/net/ipv4/ip_default_ttl 虚拟内存参数: 在linux kernel 2.6.25之前通过ulimit -n(setrlimit(RLIMIT_NOFILE))设置每个进程的最大打开文件句柄数不能超过NR_OPEN(1024*1024),也就是100多w(除非重新编译内核),而在25之后,内核导出了一个sys接口可以修改这个最大值/proc/sys/fs/nr_open。shell里不能直接更改,是因为登录的时候pam已经从limits.conf中设置了上限,ulimit命令只能在低于上限的范围内发挥了。 Linux中查看socket状态: sockets: used 137 参考:http://www.mjmwired.net/kernel/Documentation/sysctl/ |
net.core.rmem_default = net.core.rmem_max = net.core.wmem_default = net.core.wmem_max = net.core.netdev_max_backlog = net.core.somaxconn = net.core.optmem_max = net.ipv4.tcp_mem = net.ipv4.tcp_rmem = net.ipv4.tcp_wmem = net.ipv4.tcp_keepalive_time = net.ipv4.tcp_keepalive_intvl = net.ipv4.tcp_keepalive_probes = net.ipv4.tcp_sack = net.ipv4.tcp_fack = net.ipv4.tcp_timestamps = net.ipv4.tcp_window_scaling = net.ipv4.tcp_syncookies = net.ipv4.tcp_tw_reuse = net.ipv4.tcp_tw_recycle = net.ipv4.tcp_fin_timeout = net.ipv4.ip_local_port_range = net.ipv4.tcp_max_syn_backlog =
Linux内核 TCP/IP、Socket参数调优的更多相关文章
- Linux内核、 TCP/IP、Socket参数调优
/proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),例如下面这 ...
- (转)Linux内核 TCP/IP、Socket参数调优
Doc1: /proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失) ...
- Linux内核Socket参数调优
可调优的内核变量存在两种主要接口:sysctl命令和/proc文件系统,proc中与进程无关的所有信息都被移植到sysfs中.IPV4协议栈的sysctl参数主要是sysctl.net.core.sy ...
- 用virtualbox+模拟串口+CDT调试linux内核 TCP/IP协议栈-起步
经常有人问一台机器如何将hello经网络发送给另一台机器,我确实是不知道,只能看代码了. 说明:本人对内核的研究学习也是刚刚起步,有很多不了解的,所以文中可能会有一些"一本正经的胡扯&quo ...
- Linux IPC tcp/ip socket 编程
模型 #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include < ...
- Linux内核TCP/IP参数分析与调优
转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/167.html?1456482565 如下图展示的是TCP的三个阶段.1,TCP三次握手. ...
- Linux内核 TCP/IP参数调优
http://www.360doc.com/content/14/0606/16/3300331_384326124.shtml
- linux针对TCP和 UDP的调优
- linux下TCP/IP及内核参数优化调优(转)
Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等. 如下配置是写在sysctl.con ...
随机推荐
- 一个label里有个链接,点这个特别颜色的一些字,会执行一些操作
这个label在sb中或者纯代码创建的时候要是TTTAttributedLabel 然后进行相关设置
- Robot Framework--10 万能的evaluate
转自:http://blog.csdn.net/tulituqi/article/details/10124559 这一讲我们重点来介绍一下一个常用的关键字evaluate. 我觉得这个关键字在RF里 ...
- jQuery/js 正则收集(邮件验证、)
var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; //验证邮箱的正则表达式if( ...
- Mongodb的Samus驱动
最近开始学习Mongodb方面的东西.. 看到有很多博主都说MongoDB的第三方驱动 Samus 对Linq的支持比较好..能够降低学习的成本..所以就想从这里开始.. 但是弊端在我学习了一半的时候 ...
- canvas代替img渲染图片
移动端用canvas代替img渲染图片,可以提高性能 var oImg = new Image(); oImg.src = url; oImg.onload = function(){ var cvs ...
- CentOS安装wordpress权限问题
最近在CentOS6.5上安装wordpress,遇上一个问题,安装好之后外网总是不能再网页进行配置,想了半天应该是源代码文件的权限问题,具体问题与解决如下: 如果你的wordpress安装目录是wo ...
- Java数据库连接池封装与用法
Java数据库连接池封装与用法 修改于抄袭版本,那货写的有点BUG,两个类,一个用法 ConnectionPool类: package com.vl.sql; import java.sql.Conn ...
- PHP输出缓冲(Output Buffering)
什么是缓冲区? 简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题~其实缓冲区最本质的作用就是,协调高速CPU和相对缓慢的IO设备 ...
- CSS文档流
文档流 将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流. 每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端. 若当前行容不下, 则另起新行再浮动. 内联元素也不 ...
- glusterFS分布式文件系统的搭建
准备工作 1.安装IBA yum install libradmacm librdmacm-devel libmlx4 infiniband-diags 2.配置IPOIB /etc/sysconfi ...
