`
字符串
  • 浏览: 36341 次
文章分类
社区版块
存档分类
最新评论

用sysctl调整linux内核参数

 
阅读更多

转自:http://blog.csdn.net/bb6lo/article/details/46929273

sysctl是一个允许您改变正在运行中的Linux系统的接口。它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。基于这点,sysctl(8) 提供两个功能:读取和修改系统设置。

常用

查看所有可读变量:
[xt@butbueatiful ~] sysctl -a

读一个指定的变量,例如 kernel.msgmnb:
[xt@butbueatiful ~]$ sysctl kernel.msgmnb
kern.maxproc: 65536

要设置一个指定的变量,直接用 variable=value 这样的语法:
[xt@butbueatiful ~]$ sudo sysctl kernel.msgmnb=1024
kernel.msgmnb: 1024

可以使用sysctl修改系统变量,也可以通过编辑sysctl.conf文件来修改系统变量。sysctl.conf 看起来很像 rc.conf。它用 variable=value 的形式来设定值。指定的值在系统进入多用户模式之后被设定。并不是所有的变量都可以在这个模式下设定。

sysctl 变量的设置通常是字符串、数字或者布尔型。 (布尔型用 1 来表示'yes',用 0 来表示'no')。

sysctl -w kernel.sysrq=0
sysctl -w kernel.core_uses_pid=1
sysctl -w net.ipv4.conf.default.accept_redirects=0
sysctl -w net.ipv4.conf.default.accept_source_route=0
sysctl -w net.ipv4.conf.default.rp_filter=1
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_synack_retries=2
sysctl -w net.ipv4.tcp_keepalive_time=3600
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.ipv4.tcp_sack=1

配置sysctl

[root@butbueatiful ~] vi /etc/sysctl.conf

如果该文件为空,则输入以下内容,否则请根据情况自己做调整:
# 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


如果希望屏蔽别人 ping 你的主机,则加入以下代码:
# Disable ping requests
net.ipv4.icmp_echo_ignore_all = 1

执行以下命令使变动立即生效:

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

我们常常在 Linux 的 /proc/sys 目录下,手动设定一些 kernel 的参数或是直接 echo 特定的值给一个 proc下的虚拟档案,俾利某些档案之开启,常见的例如设定开机时自动启动 IP Forwarding:
echo “1” > /proc/sys/net/ipv4/ip_forward

其实,在 Linux 我们还可以用 sysctl command 便可以简易的去检视、设定或自动配置特定的 kernel 设定。我们可以在系统提示符号下输入「sysctl -a」

sysctl 的表示法乃把目录结构的「/」以「.」表示,一层一层的连结下去。当然以echo 特定的值给一个 proc下的虚拟档案也是可以用 sysctl加以表示,例如:

#sysctl –w net.ipv4.ip_forward =”1”

或是直接在 /etc/sysctl.conf 增删修改特定档案的 0,1值亦可: 
# Enables packet forwarding

net.ipv4.ip_forward = 1

# Enables source route verification

net.ipv4.conf.default.rp_filter = 1

# Disables the magic-sysrq key

kernel.sysrq = 0

当然如果考虑 reboot 后仍有效, 直接在 /etc/sysctl.conf 增删修改特定档案的 0,1值才可使之保留设定(以RedHat 为例,每次开机系统启动后, init 会执行 /etc/rc.d/rc.sysinit,便会使用 /etc/sysctl.conf 的预设值去执行 sysctl)

分享到:
评论

相关推荐

    Linux利用Sysctl命令调整内核参数

    Sysctl指令是对系统核心参数的设置,下面这篇文章主要给大家介绍了关于Linux利用Sysctl命令调整内核参数的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。

    Linux内核参数调整方法

    由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。但是,当系统重新启动后,原来设置的参数值就会丢失,而系统每次启动时都会自动去/etc/sysctl.conf文件中读取内核参数,因此...

    Linux 服务器网络有关的内核参数

    我们可以通过命令sysctl -a 查看所有这些内核参数。下面说明与网络编程关系较为紧密的部分内核参数。  一、 / proc/sys/fs 目录下的部分文件  /proc/sys/fs 目录下的内核参数都与文件系统有关。对于服务器程序...

    浅谈Nginx10m+高并发内核优化详解

    默认的Linux内核参数考虑的是最通用场景,不符合用于支持高并发访问的Web服务器,所以需要修改Linux内核参数,这样可以让Nginx拥有更高的性能; 在优化内核时,可以做的事情很多,不过,我们通常会根据业务特点来...

    linux下oracle优化

    下面的步骤给出了如何去校验并设置这些...注意:下表显示的是内核参数以及shell 限制所需的最小值。对于生产数据库,Oracle建议去调整这些值使得数据库性能达到最优。有关优化内核参数更多信息请参考操作系统相关文档。

    Ubuntu权威指南(2/2)

    10.4.2 系统内核可调参数 277 10.4.3 sysctl命令 281 10.5 其他重要的子目录 282 第11章 磁盘空间管理 285 11.1 查询磁盘空间信息 286 11.1.1 常用的磁盘空间 ??管理工具 286 11.1.2 使用df命令检查磁盘 ??空间的...

    Ubuntu权威指南(1/2)

    10.4.2 系统内核可调参数 277 10.4.3 sysctl命令 281 10.5 其他重要的子目录 282 第11章 磁盘空间管理 285 11.1 查询磁盘空间信息 286 11.1.1 常用的磁盘空间 ??管理工具 286 11.1.2 使用df命令检查磁盘 ??空间的...

    UbuntuChina12

    10.4.2 系统内核可调参数 277 10.4.3 sysctl命令 281 10.5 其他重要的子目录 282 第11章 磁盘空间管理 285 11.1 查询磁盘空间信息 286 11.1.1 常用的磁盘空间 ??管理工具 286 11.1.2 使用df命令检查磁盘 ??空间的...

    oracle 11g安装配置

    fs.file-max = 6815744 文件句柄设置代表linux系统中可以打开的文件的数量。 kernel.shmmni = 4096 共享内存的总页数 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 ...

Global site tag (gtag.js) - Google Analytics