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 ...
随机推荐
- Android签名总结
signapk.jar与eclipse export插件默认赋予程序一个DEBUG权限的签名 signapk.jar包含有系统权限(system api, permission),而eclipse e ...
- 学海无涯的整理Ing..........
1.文章:Understanding JavaScript Function Invocation and “this” http://yehudakatz.com/2011/08/11/unders ...
- django_web代码更新
- MVC下分页的自定义分页一种实现
1.引言 在MVC开发中我们经常会对数据进行分页的展示.通过分页我们可以从服务端获取指定的数据来进行展示.这样既节约了数据库查询的时间也节约了网络传输的数据量.在MVC开发中使用的比较多的应该是MVC ...
- 密钥文件snk
1.(what)是什么? 由一个程序集的标识组成并通过公钥和数字签名(针对该程序集生成)加强的名称,其中的标识包括程序集的简单文 本名称.版本号和区域性信息(如果提供的话). 2.(why)为什么 ...
- SQLSERVER2008R2正确使用索引
T1表 10000000万条数据,(插入时间36分钟,count(*)查询19秒,空间占用670M左右) 1.真正充分的利用索引比如like '张%' 就是符合SARG(符合扫描参数)标准而like ...
- MySQL创建一个用户,指定一个数据库 授权
Mysql 创建一个用户 hail,密码 hail,指定一个数据库 haildb 给 hail mysql -u root -ppassworduse mysql;insert into user(h ...
- Lnmp的安装、配置
一.首先在本地安装好虚拟机,在虚拟机上安装centos6.5,由于习惯问题,不喜欢直接在虚拟机上操作linux系统,习惯了ssh过去,直接用xshell操作,这完全是个人习惯问题: 1. 用xshe ...
- TP框架整合Swagger UI接口文档
1.下载swagger ui:http://swagger.io/swagger-ui/: 2.在应用目录里新建一个目录xxx:如图 3.解压后把dist目录的所有文件拷贝到新建的目录里面: 4.在新 ...
- Linux(Red Hat)-中安装Vmware Tools
0. 会弹出 ***1.在弹出的文件夹中找到"VMwwareTools9.6.2-1688356.tar.gz",右击"解压缩到"...我解压缩到了" ...