(转) Linux 内核运行参数修改——sysctl命令

原文:https://blog.csdn.net/u012707739/article/details/78254241

sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。它包含一些TCP/ip堆栈和虚拟内存系统的高级选项,用sysctl可以读取设置超过五百个系统变量。

sysctl命令

用法: 
sysctl [options] [variable[=value] …]

常用选项: 
-n:打印时只打印值,不打印参数名称; 
-e:忽略未知关键字错误; 
-N:打印时只打印参数名称,不打印值; 
-w:设置参数的值(不过好像不加这个选项也可以直接设置); 
-p:从配置文件“/etc/sysctl.conf”加载内核参数设置; 
-a:打印所有内核参数变量; 
-A:以表格方式打印所有内核参数变量。

示例

1、 设置socket接收缓冲最大值(rmem_max)为212992字节

sudo sysctl -w net.core.rmem_max=212992
  • 1

2、查看socket接收缓冲最大值(rmem_max)

sysctl net.core.rmem_max
  • 1

sysctl可以设置查看的内核参数都在目录/proc/sys中,每个文件都记录了一个参数,sysctl命令中其实也记录了参数的相对路径,只要将 . 换成 / 就是文件路径,比如记录net.core.rmem_max的文件就是/proc/sys/net/core/rmem_max,所以也可以直接查看文件内容来读取参数的值

cat /proc/sys/net/core/rmem_max
  • 1

如果不知道参数路径也可以这么做:

sysctl -a | grep rmem_max
  • 1

配置sysctl

编辑此文件vi /etc/sysctl.conf 
如果该文件为空,则输入以下内容,否则请根据情况自己做调整(复制自http://man.linuxde.net/sysctl):

# Controls source route verification
# Default should work for all interfaces
net.ipv4.conf.default.rp_filter = 1 # net.ipv4.conf.all.rp_filter = 1 # net.ipv4.conf.lo.rp_filter = 1 # net.ipv4.conf.eth0.rp_filter = 1 # Disables IP source routing # Default should work for all interfaces net.ipv4.conf.default.accept_source_route = 0 # net.ipv4.conf.all.accept_source_route = 0 # net.ipv4.conf.lo.accept_source_route = 0 # net.ipv4.conf.eth0.accept_source_route = 0 # Controls the System Request debugging functionality of the kernel kernel.sysrq = 0 # Controls whether core dumps will append the PID to the core filename. # Useful for debugging multi-threaded applications. kernel.core_uses_pid = 1 # Increase maximum amount of memory allocated to shm # Only uncomment if needed! # kernel.shmmax = 67108864 # Disable ICMP Redirect Acceptance # Default should work for all interfaces net.ipv4.conf.default.accept_redirects = 0 # net.ipv4.conf.all.accept_redirects = 0 # net.ipv4.conf.lo.accept_redirects = 0 # net.ipv4.conf.eth0.accept_redirects = 0 # Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets # Default should work for all interfaces net.ipv4.conf.default.log_martians = 1 # net.ipv4.conf.all.log_martians = 1 # net.ipv4.conf.lo.log_martians = 1 # net.ipv4.conf.eth0.log_martians = 1 # Decrease the time default value for tcp_fin_timeout connection net.ipv4.tcp_fin_timeout = 25 # Decrease the time default value for tcp_keepalive_time connection net.ipv4.tcp_keepalive_time = 1200 # Turn on the tcp_window_scaling net.ipv4.tcp_window_scaling = 1 # Turn on the tcp_sack net.ipv4.tcp_sack = 1 # tcp_fack should be on because of sack net.ipv4.tcp_fack = 1 # Turn on the tcp_timestamps net.ipv4.tcp_timestamps = 1 # Enable TCP SYN Cookie Protection net.ipv4.tcp_syncookies = 1 # Enable ignoring broadcasts request net.ipv4.icmp_echo_ignore_broadcasts = 1 # Enable bad error message Protection net.ipv4.icmp_ignore_bogus_error_responses = 1 # Make more local ports available # net.ipv4.ip_local_port_range = 1024 65000 # Set TCP Re-Ordering value in kernel to ‘5′ net.ipv4.tcp_reordering = 5 # Lower syn retry rates net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 3 # Set Max SYN Backlog to ‘2048′ net.ipv4.tcp_max_syn_backlog = 2048 # Various Settings net.core.netdev_max_backlog = 1024 # Increase the maximum number of skb-heads to be cached net.core.hot_list_length = 256 # Increase the tcp-time-wait buckets pool size net.ipv4.tcp_max_tw_buckets = 360000 # This will increase the amount of memory available for socket input/output queues net.core.rmem_default = 65535 net.core.rmem_max = 8388608 net.ipv4.tcp_rmem = 4096 87380 8388608 net.core.wmem_default = 65535 net.core.wmem_max = 8388608 net.ipv4.tcp_wmem = 4096 65535 8388608 net.ipv4.tcp_mem = 8388608 8388608 8388608 net.core.optmem_max = 40960
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74

如果希望屏蔽别人 ping 你的主机,则加入以下代码:

# Disable ping requests
net.ipv4.icmp_echo_ignore_all = 1
  • 1
  • 2

编辑完成后,请执行以下命令使变动立即生效:

/sbin/sysctl -p
/sbin/sysctl -w net.ipv4.route.flush=1
  • 1
  • 2

TCP/IP参数

所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),例如下面这些重要的参数:

参数(路径+文件)描述
/proc/sys/net/core/rmem_default默认的TCP数据接收窗口大小(字节)。
/proc/sys/net/core/rmem_max最大的TCP数据接收窗口(字节)。
/proc/sys/net/core/wmem_default默认的TCP数据发送窗口大小(字节)。
/proc/sys/net/core/wmem_max最大的TCP数据发送窗口(字节)。
/proc/sys/net/core/netdev_max_backlog在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
/proc/sys/net/core/somaxconn定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。
/proc/sys/net/core/optmem_max表示每个套接字所允许的最大缓冲区的大小。
/proc/sys/net/ipv4/tcp_mem确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。第一个值是内存使用的下限;第二个值是内存压力模式开始对缓冲区使用应用压力的上限;第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的BDP可以增大这些值(注意,其单位是内存页而不是字节)。
/proc/sys/net/ipv4/tcp_rmem为自动调优定义socket使用的内存。第一个值是为socket接收缓冲区分配的最少字节数;第二个值是默认值(该值会被rmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是接收缓冲区空间的最大字节数(该值会被rmem_max覆盖)。
/proc/sys/net/ipv4/tcp_wmem为自动调优定义socket使用的内存。第一个值是为socket发送缓冲区分配的最少字节数;第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max覆盖)。
/proc/sys/net/ipv4/tcp_keepalive_timeTCP发送keepalive探测消息的间隔时间(秒),用于确认TCP连接是否有效。
/proc/sys/net/ipv4/tcp_keepalive_intvl探测消息未获得响应时,重发该消息的间隔时间(秒)。
/proc/sys/net/ipv4/tcp_keepalive_probes在认定TCP连接失效之前,最多发送多少个keepalive探测消息。
/proc/sys/net/ipv4/tcp_sack启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用。
/proc/sys/net/ipv4/tcp_fack启用转发应答,可以进行有选择应答(SACK)从而减少拥塞情况的发生,这个选项也应该启用。
/proc/sys/net/ipv4/tcp_timestampsTCP时间戳(会在TCP包头增加12个字节),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT 的计算,为实现更好的性能应该启用这个选项。
/proc/sys/net/ipv4/tcp_window_scaling启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。
/proc/sys/net/ipv4/tcp_syncookies表示是否打开TCP同步标签(syncookie),内核必须打开了CONFIG_SYN_COOKIES项进行编译,同步标签可以防止一个套接字在有过多试图连接到达时引起过载。
/proc/sys/net/ipv4/tcp_tw_reuse表示是否允许将处于TIME-WAIT状态的socket(TIME-WAIT的端口)用于新的TCP连接 。
/proc/sys/net/ipv4/tcp_tw_recycle能够更快地回收TIME-WAIT套接字。
/proc/sys/net/ipv4/tcp_fin_timeout对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。
/proc/sys/net/ipv4/ip_local_port_range表示TCP/UDP协议允许使用的本地端口号
/proc/sys/net/ipv4/tcp_max_syn_backlog对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。
/proc/sys/net/ipv4/tcp_low_latency允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。
/proc/sys/net/ipv4/tcp_westwood启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化,对于WAN 通信来说应该启用这个选项。
/proc/sys/net/ipv4/tcp_bic为快速长距离网络启用Binary Increase Congestion,这样可以更好地利用以GB速度进行操作的链接,对于WAN通信应该启用这个选项。

转载于:https://www.cnblogs.com/liujiacai/p/9314822.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab求平均值函数mean

amean(A,1) %按列平均bmean(A,2) %按行平均cmean(A(:)) %全部平均

HDU 4514 湫湫系列故事——设计风景线

一次dfs判断有没有环 两次dfs求最长路 第一次记录最长路和次长路 第二次求出答案 #include <iostream>#include <string>#include <cstring>#include <algorithm>#include <cstdio>#define maxn 100010#pragma comment(linker, "/STACK:367…

numpy的使用数组的创建2

随机创建了长度为十的数组 获得十以类的随机整数 快速获取数组2乘3维的数组 生成20个1到10之间的数组 通过reshape 将这些数变成二位数组 shape这个方法可以查看数组中的元素是几行几列的 转载于:https://www.cnblogs.com/chenligeng/p/9315339.html

Tabs vs Spaces:如何在Google,Twitter,Mozilla和Pied Piper上编写Java

流行的Java代码样式中最有趣的亮点是什么&#xff1f; 尽管上面有暗示性的形象&#xff0c;我们也不想发动任何不必要的圣战。 当归结为编码样式时&#xff0c;大多数选择都是相当随意的&#xff0c;并取决于个人喜好。 是的&#xff0c;即使在编辑器之间制表符宽度改变了&…

Matlab数据标准化

zscore%据说就是原数据减去均值再除以标准差标准回归系数&#xff1a;1、标准化回归系数测度的是对被解释变量的重要性&#xff0c;只有标准化了&#xff0c;才能进行重要性对比。

matlab学习-线性规划

[x,fval,exitflag,output,lambda]linprog(f,a,b,aeq,beq,lb,ub) 其中f、x、b、beq、lb、ub为向量&#xff0c;a、aeq为矩阵。 min zf s.t. a*x<b aeq*xbeq lb<x<ub x:线性规划最优解 fval&#xff1a;线性规划最优值 exitflag&#xff1a;输出标…

bug单的提交

顶头信息 所属产品&#xff0c;所属项目&#xff0c;所属模块&#xff0c;影响版本&#xff0c;当前指派&#xff0c;bug类型&#xff1a;代码错误&#xff0c;界面优化&#xff0c;设计缺陷&#xff0c;性能问题&#xff0c;标准规范&#xff0c;其他&#xff0c;安全相关。bu…

Matlab各种随机数汇总

randn();%正态分布随机数R&#xff1d;normrnd(MU,SIGMA)R&#xff1d;normrnd(MU,SIGMA,m)R&#xff1d;normrnd(MU,SIGMA,m,n) 注&#xff1a;正态分布只需要2个参数。 randn() 是标准正态分布&#xff1b;normrnd()是自己可以指定均数和标准差的正太分布。rand();randi();是…

ES group分组聚合的坑

参考链接&#xff1a;https://blog.csdn.net/u010454030/article/details/71762838 ES group分组聚合的坑 原来知道Elasticsearch在分组聚合时有一些坑但没有细究&#xff0c;今天又看了遍顺便做个笔记和大家分享一下。 我们都知道Elasticsearch是一个分布式的搜索引擎&#xf…

使用tinylog 1.1改进您在Java EE应用程序中的登录

tinylog是Java的轻量级日志记录框架。 与Apache Log4j和Logback相反&#xff0c;tinylog由仅80KB的单个JAR文件组成&#xff0c;没有任何依赖性&#xff0c;并且具有静态logger类。 这意味着您无需使用任何样板代码为每个类创建记录器实例。 public static void main(String[]…

一般区域二重、三重积分MATLAB计算方法

这里讨论的计算方法指的是利用现有的MATLAB函数来求解&#xff0c;而不是根据具体的数值计算方法来编写相应程序。目前最新版的2009a有关于一般区域二重积分的计算函数quad2d&#xff0c;但没有一般区域三重积分的计算函数&#xff0c;而NIT工具箱似乎也没有一般区域三重积分的…

搜索时,怎样排除不需要的关键字

初阶搜索最基本的搜索&#xff0c;即查询包含单个关键字的信息。现在&#xff0c;进一步探讨多个关键字以及关键字间不同逻辑关系的查询。搜索结果要求包含两个及两个以上关键字一般搜索引擎需要在多个关键字之间加上“”。示例&#xff1a;搜索所有包含关键词“易筋经”和“吸…

Java集合类框架的基本接口有哪些?

总共有两大接口&#xff1a;Collection 和Map &#xff0c;一个元素集合&#xff0c;一个是键值对集合&#xff1b; 其中List和Set接口继承了Collection接口&#xff0c;一个是有序元素集合&#xff0c;一个是无序元素集合&#xff1b; 而ArrayList和 LinkedList 实现了List接口…

Matlab求对数

Matlab中只是提供了log、log10和log2&#xff0c;其他的都需要换底公式得到。logaBlogB/loga;

C# NTP时间同步类

添加类 NTPClient /// <summary>/// SNTPClient is a C# class designed to connect to time servers on the Internet and/// fetch the current date and time. Optionally, it may update the time of the local system./// The implementation of the protocol is ba…

字典树 ZOJ1109 HDU1251 PKU1204 HDU1075

又称单词查找树&#xff0c;Trie树&#xff0c;是一种树形结构&#xff0c;是一种哈希树的变种。典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串&#xff09;&#xff0c;所以经常被搜索引擎系统用于文本词频统计。它的优点是&#xff1a;…

jaxb需要jar包吗_JAXB –不需要注释

jaxb需要jar包吗似乎有一个误解&#xff0c;认为在模型上需要注释才能使用JAXB&#xff08;JSR-222&#xff09;实现。 事实是&#xff0c;JAXB是例外配置&#xff0c;因此仅当您要覆盖默认行为时才需要注释。 在此示例中&#xff0c;我将演示如何在不提供任何元数据的情况下使…

MATLAB均值和标准差

mean(); %均值std(); %标准差

Codeforces Round #498 (Div. 3) F. Xor-Paths

题目链接&#xff1a;F. Xor-Paths 题解&#xff1a;从起点和终点双向搜索在中间相遇时更新答案 1 #include<bits/stdc.h>2 #include<set>3 #include<cstdio>4 #include<iomanip>5 #include<iostream>6 #include<string>7 #include<cst…

创建健壮的微服务架构所涉及的组件

在本文中&#xff0c;我们将简要学习构建强大的微服务应用程序所需的各种软件组件。 在简要了解每个架构组件之前&#xff0c;我们将陈述设计微服务架构时出现的一般查询。 1.微服务架构组件 每当我们创建微服务应用程序时&#xff0c;我们都会想到以下问题 我们将如何注册微…