sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。
它包含一些TCP/ip堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。
用sysctl可以读取设置超过五百个系统变量。
sysctl(选项)(参数)
选项
-n:打印值时不打印关键字;
-e:忽略未知关键字错误;
-N:仅打印名称;
-w:当改变sysctl设置时使用此项;
-p:从配置文件“/etc/sysctl.conf”加载内核参数设置;(编辑完配置即时生效)
-a:打印当前所有可用的内核参数变量和值;
-A:以表格方式打印当前所有可用的内核参数变量和值。
#最大的待发送TCP数据缓冲区空间 net.inet.tcp.sendspace=65536 #最大的接受TCP缓冲区空间 net.inet.tcp.recvspace=65536 #最大的接受UDP缓冲区大小 net.inet.udp.sendspace=65535 #最大的发送UDP数据缓冲区大小 net.inet.udp.maxdgram=65535 #本地套接字连接的数据发送空间 net.local.stream.sendspace=65535 #加快网络性能的协议 net.inet.tcp.rfc1323=1 net.inet.tcp.rfc1644=1 net.inet.tcp.rfc3042=1 net.inet.tcp.rfc3390=1 #最大的套接字缓冲区 kern.ipc.maxsockbuf=2097152 #系统中允许的最多文件数量 kern.maxfiles=65536 #每个进程能够同时打开的最大文件数量 kern.maxfilesperproc=32768 #当一台计算机发起TCP连接请求时,系统会回应ACK应答数据包。该选项设置是否延迟ACK应答数据包,把它和包含数据的数据包一起发送,在高速网络和低负载的情况下会略微提高性能,但在网络连接较差的时候,对方计算机得不到应答会持续发起连接请求,反而会降低性 能。 net.inet.tcp.delayed_ack=0 #屏蔽ICMP重定向功能 net.inet.icmp.drop_redirect=1 net.inet.icmp.log_redirect=1 net.inet.ip.redirect=0 net.inet6.ip6.redirect=0 #防止ICMP广播风暴 net.inet.icmp.bmcastecho=0 net.inet.icmp.maskrepl=0 #限制系统发送ICMP速率 net.inet.icmp.icmplim=100 #安全参数,编译内核的时候加了options TCP_DROP_SYNFIN才可以用 net.inet.icmp.icmplim_output=0 net.inet.tcp.drop_synfin=1 #设置为1会帮助系统清除没有正常断开的TCP连接,这增加了一些网络带宽的使用,但是一些死掉的连接最终能被识别并清除。死的TCP连接是被拨号用户存取的系统的一个特别的问题,因为用户经常断开modem而不正确的关闭活动的连接 net.inet.tcp.always_keepalive=1 #若看到net.inet.ip.intr_queue_drops这个在增加,就要调大net.inet.ip.intr_queue_maxlen,为0最好 net.inet.ip.intr_queue_maxlen=1000 #防止DOS攻击,默认为30000 net.inet.tcp.msl=7500 #接收到一个已经关闭的端口发来的所有包,直接drop,如果设置为1则是只针对TCP包 net.inet.tcp.blackhole=2 #接收到一个已经关闭的端口发来的所有UDP包直接drop net.inet.udp.blackhole=1 #为网络数据连接时提供缓冲 net.inet.tcp.inflight.enable=1 #如果打开的话每个目标地址一次转发成功以后它的数据都将被记录进路由表和arp数据表,节约路由的计算时间,但会需要大量的内核内存空间来保存路由表 net.inet.ip.fastforwarding=0 #kernel编译打开options POLLING功能,高负载情况下使用低负载不推荐SMP不能和polling一起用 #kern.polling.enable=1 #并发连接数,默认为128,推荐在1024-4096之间,数字越大占用内存也越大 kern.ipc.somaxconn=32768 #禁止用户查看其他用户的进程 security.bsd.see_other_uids=0 #设置kernel安全级别 kern.securelevel=0 #记录下任何TCP连接 net.inet.tcp.log_in_vain=1 #记录下任何UDP连接 net.inet.udp.log_in_vain=1 #防止不正确的udp包的攻击 net.inet.udp.checksum=1 #防止DOS攻击 net.inet.tcp.syncookies=1 #仅为线程提供物理内存支持,需要256兆以上内存 kern.ipc.shm_use_phys=1 # 线程可使用的最大共享内存 kern.ipc.shmmax=67108864 # 最大线程数量 kern.ipc.shmall=32768 # 程序崩溃时不记录 kern.coredump=0 # lo本地数据流接收和发送空间 net.local.stream.recvspace=65536 net.local.dgram.maxdgram=16384 net.local.dgram.recvspace=65536 # 数据包数据段大小,ADSL为1452。 net.inet.tcp.mssdflt=1460 # 为网络数据连接时提供缓冲 net.inet.tcp.inflight_enable=1 # 数据包数据段最小值,ADSL为1452 net.inet.tcp.minmss=1460 # 本地数据最大数量 net.inet.raw.maxdgram=65536 # 本地数据流接收空间 net.inet.raw.recvspace=65536 #ipfw防火墙动态规则数量,默认为4096,增大该值可以防止某些病毒发送大量TCP连接,导致不能建立正常连接 net.inet.ip.fw.dyn_max=65535 #设置ipf防火墙TCP连接空闲保留时间,默认8640000(120小时) net.inet.ipf.fr_tcpidletimeout=864000 $ /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/netdev_max_backlog 进入包的最大设备队列.默认是300,对重负载服务器而言,该值太低,可调整到1000. $ /proc/sys/net/core/somaxconn listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能.可调整到256. $ /proc/sys/net/core/optmem_max socket buffer的最大初始化值,默认10K. $ /proc/sys/net/ipv4/tcp_max_syn_backlog 进入SYN包的最大请求队列.默认1024.对重负载服务器,增加该值显然有好处.可调整到2048. $ /proc/sys/net/ipv4/tcp_retries2 TCP失败重传次数,默认值15,意味着重传15次才彻底放弃.可减少到5,以尽早释放内核资源. $ /proc/sys/net/ipv4/tcp_keepalive_time $ /proc/sys/net/ipv4/tcp_keepalive_intvl $ /proc/sys/net/ipv4/tcp_keepalive_probes 这3个参数与TCP KeepAlive有关.默认值是: tcp_keepalive_time = 7200 seconds (2 hours) tcp_keepalive_probes = 9 tcp_keepalive_intvl = 75 seconds 意思是如果某个TCP连接在idle 2个小时后,内核才发起probe.如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效.对服务器而言,显然上述值太大. 可调整到: /proc/sys/net/ipv4/tcp_keepalive_time 1800 /proc/sys/net/ipv4/tcp_keepalive_intvl 30 /proc/sys/net/ipv4/tcp_keepalive_probes 3 $ proc/sys/net/ipv4/ip_local_port_range 指定端口范围的一个配置,默认是32768 61000,已够大. net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为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小时,改为20分钟。 net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。 net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。 net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为 5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。
参考
http://man.linuxde.net/sysctl
http://blog.csdn.net/menxu_work/article/details/51140572
相关推荐
"Linux 内核参数" Linux 内核参数是指在 Linux 内核启动时可以传递给内核的命令行选项或启动参数。这些参数可以用来手动设置硬件参数、避免内核更改某些参数的值、或者传递某些特殊的参数给内核。这些参数可以以...
Linux 内核参数调优详解 Linux 内核参数是 Linux 操作系统的核心组件之一,它控制着系统的行为和性能。通过调整 Linux 内核参数,可以提高系统的性能、安全性和稳定性。本文将详细讲解 Linux 内核参数的调整,包括...
linux内核参数修改 linux 内核 参数 修改 /proc/sys/kernel/shmall 该文件是在任何给定时刻系统上可以使用的共享内存的总量(以字节为单位)。 缺省设置:2097152 /proc/sys/kernel/shmax 该文件指定内核所允许的...
Linux内核参数调整及ORACLE调优参数
### Linux内核参数详解 #### 一、引言 Linux作为一个功能强大且广泛使用的操作系统,其内核提供了丰富的参数配置选项来优化系统性能和资源管理。对于特定的应用场景,如安装Oracle数据库或运行大型PostgreSQL...
《Linux内核参数对Spark负载性能影响的研究》这篇文章主要探讨了如何通过调整Linux内核参数来优化Apache Spark的性能。Spark作为一个广泛应用于大数据处理的计算框架,其性能表现深受操作系统底层参数的影响。文章...
linux 内核 参数 模块 范例 #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL");
内容概要:本文档详尽介绍了针对高性能计算(HPC)环境下数据库运行所需要的多个关键Linux内核参数的调整方法,涵盖了异步IO请求上限(fs.aio-max-nr)、文件句柄限制(fs.file-max)、内存管理配置(vm.swappiness, vm....
Linux内核参数是控制操作系统行为的关键元素,它们允许用户在启动时自定义内核的行为,以适应特定的硬件配置或优化系统性能。这些参数通过命令行传递给内核,通常是通过引导加载器(如LILO或GRUB)完成。参数以空格...
初始化完成后,BootLoader 创建一个内核参数链表 (tagged list),并将其物理地址存放在寄存器 r2 中,通常为 0x20000100。接下来,BootLoader 将预先烧录在 NorFlash 中的内核映像和根文件系统映像搬移到 SDRAM 中,...
CentOS 优化 Linux 内核参数在末尾追加以下内容使配置立即生效。
Linux内核作为操作系统的核心部分,承担着管理和调度系统资源的重要职责。本文主要探讨了Linux内核的四个关键功能:系统内存管理、软件程序管理、硬件管理和文件系统管理。 首先,系统内存管理是Linux内核的基础...
Linux内核参数调整是优化系统性能的关键步骤,它涉及到系统的各种功能,如网络、内存管理、文件系统等。内核参数通常存储在内存中,通过命令行工具可以直接修改并立即生效,但这些改动不会持久化,也就是说,一旦...
Linux 下 系统参数的调优经验之谈,非常给力的!调优系统必备
首先,我们要理解Linux内核参数的重要性。内核是操作系统的核心,它管理硬件资源,提供服务给用户空间的应用程序。内核参数是控制这些服务行为的关键,正确的设置可以提高系统的响应速度,减少资源浪费,甚至解决...
9. **性能分析与调优**:讨论性能监控工具,如perf、sysfs和procfs,以及如何通过调整内核参数优化系统性能。 10. **安全与稳定性**:讲解Linux内核的安全机制,如SELinux、AppArmor等,以及内核崩溃调试和日志分析...
在将控制权交给Linux内核之前,U-Boot会向内核传递一些必要的启动参数。这些参数对内核正确引导和运行至关重要。 启动参数的传递可以通过两种方式进行:一种是较老的参数结构(parameter_struct)方式,主要用于...
这涉及到选择需要的内核模块、调整内核参数,然后编译和安装内核。 7. **设备驱动**:设备驱动程序是连接硬件设备和内核的桥梁,它们负责与硬件进行低级别通信,让内核能够管理和控制硬件。学习如何编写和调试设备...
### 优化Linux内核参数以提高服务器并发处理能力 #### 背景与目标 在IT运维领域,尤其是在处理高并发场景时,如何在现有硬件条件下最大化地利用资源成为了一个重要课题。对于运行Linux操作系统的服务器而言,通过...