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 ...
随机推荐
- Java中关于HashMap的元素遍历的顺序问题
Java中关于HashMap的元素遍历的顺序问题 今天在使用如下的方式遍历HashMap里面的元素时 1 for (Entry<String, String> entry : hashMa ...
- 源程序出现各种奇怪的符号P
依次展开Windows->Preferences->General->Editors->Text Editor 将右边的Show whitespace characters的复 ...
- asp.net MVC动态路由
项目中遇到需要动态生成控制器和视图的. 于是就折腾半天,动态生成控制器文件和视图文件,但是动态生成控制器不编译是没法访问的. 找人研究后,得到要领: 1.放在App_Code文件夹内 2.不要命名空间 ...
- 真正理解linux的inode?
linux 在整个架构上可以看作是三层: 1.底层代码, (引导层strip) 跟硬件沟通的那一层的代码(可能是汇编+c), 驱动底层的; strain: n./v. 拉紧, 张力, 气质, 风格, ...
- [译]Mongoose指南 - 验证
开始前记住下面几点 Validation定义在SchemaType中 Validation是一个内部的中间件 当document要save前会发生验证 验证不会发生在空值上 除非对应的字段加上了 re ...
- List<List<double>> lsls = null; 根据double值来重新排序lsls...
"确定:Node-data = (7,2).具体是:根据x维上的值将数据排序, 6个数据的中值(所谓中值,即中间大小的值)为7, 所以Node-data域位数据点(,).这样, 该节点的分割 ...
- 网站SEO优化之Robots.txt文件写法。
作为网站开发者或网站管理员一定知道网站对搜索引擎的优化有多重要,好的网站不仅要有漂亮的界面,良好的用户体验,还要有较高的更新频率.要被百度.google这样的搜索引擎大量收录,才能增加网站展示量,访问 ...
- linux下的库冲突问题
lib1.c #include <stdio.h>int fun(){ printf("lib1\n"); return 0;} lib2.c #include < ...
- jquery 隐藏表单元素
1.html <label for="lbl" >电压等级:</label> <input class="easyui-combobox&q ...
- HttpClient连接池的连接保持、超时和失效机制
HTTP是一种无连接的事务协议,底层使用的还是TCP,连接池复用的就是TCP连接,目的就是在一个TCP连接上进行多次的HTTP请求从而提高性能.每次HTTP请求结束的时候,HttpClient会判断连 ...