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

用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 内核参数调优

    通过调整 Linux 内核参数,可以提高系统的性能、安全性和稳定性。本文将详细讲解 Linux 内核参数的调整,包括网络、文件系统、TCP、内存等方面的优化。 一、前言 Linux 内核参数是 Linux 操作系统的核心组件之一,...

    Linux内核参数优化调整

    Linux内核参数优化是提升系统性能的关键步骤,尤其是在运行虚拟化环境或高负载网络服务时。本文主要讨论如何针对Linux内核进行优化,重点关注TCP网络性能和磁盘缓存策略。 首先,关于磁盘缓存策略,KVM虚拟化环境下...

    linux内核参数详解

    ### Linux内核参数详解 #### 一、引言 Linux作为一个功能强大且广泛使用的操作系统,其内核提供了丰富的参数配置选项来优化系统性能和资源管理。对于特定的应用场景,如安装Oracle数据库或运行大型PostgreSQL...

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

    Linux中的`sysctl`命令是管理员用来在操作系统运行时动态调整内核参数的工具。这些参数涵盖了许多系统层面的功能,包括TCP/IP堆栈、虚拟内存管理、安全性设置以及硬件交互等。通过`sysctl`,有经验的系统管理员能够...

    Linux内核优化是指通过调整内核的参数和设置,提高Linux系统的性能和效率

    Linux内核优化主要是指通过对Linux内核的参数进行调整和设置,从而提升系统的性能与效率的过程。这种优化可以通过动态或手动的方式来实现。 1. **动态优化**:系统会根据实时监测到的数据自动调整各项设置,比如CPU...

    Linux优化-修改内核参数.rar

    首先,我们要理解Linux内核参数的重要性。内核是操作系统的核心,它管理硬件资源,提供服务给用户空间的应用程序。内核参数是控制这些服务行为的关键,正确的设置可以提高系统的响应速度,减少资源浪费,甚至解决...

    优化Linux的内核参数来提高服务器并发处理能力

    其中一种方法就是调整Linux内核参数,特别是那些与TCP/IP协议栈相关的参数,因为它们直接影响网络通信的效率。 #### 如何识别并解决问题 首先,我们需要确定服务器是否存在大量TIME_WAIT状态的连接。可以通过以下...

    Linux内核参数调整方法

    Linux内核参数调整是优化系统性能的关键步骤,它涉及到系统的各种功能,如网络、内存管理、文件系统等。内核参数通常存储在内存中,通过命令行工具可以直接修改并立即生效,但这些改动不会持久化,也就是说,一旦...

    Linux内核解读入门

    Linux内核是开源操作系统Linux的核心部分,负责管理系统的硬件资源,提供基本的服务供上层应用程序使用。对于初学者来说,理解Linux内核的工作原理和功能是学习Linux系统的基础。本篇文章将从以下几个方面详细介绍...

    sysctl-cookbook-源码.rar

    通过研究这本书的源码,读者不仅可以掌握`sysctl`的基本用法,还能深入理解Linux内核参数对系统性能和稳定性的实际影响。这有助于系统管理员更好地管理和维护Linux环境,提升系统的可靠性和效率。同时,对于开发者来...

    oracle11g设置内核参数和limit的增强

    在Oracle 11g R2 for Linux版本中,针对Linux内核参数和用户限制(limit)的配置进行了显著的改进。本文将详细介绍这一改进的具体内容、实现方法以及实际应用效果。 #### Oracle 11g R2 for Linux内核参数与Limit配置...

    linux命令sysctl使用.docx

    sysctl 命令是 Linux 系统中一个非常重要的命令,它允许管理员动态地修改内核参数,从而提高系统性能。今天我们将深入探讨 sysctl 命令的使用方法和选项。 什么是 sysctl 命令? ------------------- sysctl 命令...

    sysctl:LinuxBSD内核调整和网络安全强化优化,通过优化的sysctl调整提高了服务器系统的性能

    在Linux和BSD操作系统中,`sysctl`是一个强大的工具,用于动态地查看和调整系统内核的参数。这些参数涵盖了网络、内存管理、安全性等多个方面,对于系统性能优化和网络安全强化至关重要。本篇文章将深入探讨如何利用...

    sysctl.conf:我们的服务器端 sysctl.conf 内核参数,如当前部署

    sysctl.conf是一个至关重要的配置文件,它在Linux系统中扮演着调整内核参数的角色。通过对sysctl.conf的精细调整,我们可以优化服务器性能,提升安全性,以及确保系统的稳定运行。本文将详细探讨sysctl.conf的结构、...

    Linux 下安装oacle 内核参数详解

    以下是对Linux内核参数的详细解释,特别是针对Oracle数据库安装的配置: 1. **kernel.shmmax**: 此参数定义了共享内存段的最大尺寸,单位为字节。在Oracle中,它应该大于SAG(System Global Area)的最大初始化参数...

    Linux内核的升级与优化.pdf

    内核优化涉及调整内核参数以提高系统性能,例如,可以通过调整内存管理、进程调度、网络性能等方面的设置来优化内核。这可能包括修改`/etc/sysctl.conf`文件中的参数,或者在编译内核时选择特定的选项来优化特定的...

    Linux内核配置文档

    "POSIX Message Queues"允许进程间有序的信息传递,"BSD Process Accounting"记录了进程的活动信息,而"Sysctl support"让你能够动态调整内核参数,无需重启系统。"Support for hot-pluggable devices"则是现代系统...

    Linux内核超时导致虚拟机无法正常启动问题及解决方案1

    【Linux内核超时导致虚拟机无法正常启动问题及解决方案】 在Linux环境中,虚拟机启动失败,特别是出现“task swapper:1 blocked for more than 120 seconds”这类超时错误,通常意味着系统中的一个任务(在此例中是...

Global site tag (gtag.js) - Google Analytics