当前位置:文档之家› Linux设置内核参数的方法

Linux设置内核参数的方法

Linux设置内核参数的方法1内核参数的查看方法使用“sysctl -a”命令可以查看所有正在使用的内核参数。

内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4、net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom 、dev.raid、kernel等等。

相同的linux,安装的组件和使用的方式不一样,正在使用的内核参数是不一样的。

所有的内核参数的说明文档是放到/usr/src/linux/Documentation/sysctl中的,如果想知道对内核参数的说明,可以到该目录下查看相应的说明文档。

2内核参数的的设置方法由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。

也可以通过文件的方式进行设置。

下面就介绍这两种修改方法。

2.1命令设置的方式可以用两种方法实现。

1、使用“sysctl -w 参数名=值”的方式假设我们把net.ipv4.ip_forward的值修改为1,使用命令“sysctl -w net.ipv4.ip_forward=1”。

2、修改内核参数对应的proc文件内核参数位于/proc/sys/之下,参数名称是以文件所在的路径,并将“/”以“.”来取代。

举例来说,/proc/sys/net/ip_forward的参数名称为net.ipv4.ip_forward。

同样把net.ipv4.ip_forward的值修改为1,使用命令“echo “1”> /proc/sys/net/ipv4/ip_forward”。

注意,这里proc文件跟普通的文件不一样。

一般一个文件用echo写入内容之后,会变成一个文本文件,但echo修改proc文件之后还是个空文件。

2.2文件设置的方式更改的内核参数默认保存在/etc/sysctl.conf文件中。

修改的时候可以直接用vi编辑sysctl.conf文件,增加要修改的内核参数内容,修改的格式为:参数名=值。

例如,把net.ipv4.ip_forward的值修改为1,在sysctl.conf中增加下面这行内容:net.ipv4.ip_forward=1文件修改好后,进行保存。

然后使用“sysctl -p 配置文件名”来使配置生效,如果配置文件是默认的,可以不用输配置文件名,即使用“sysctl -p”。

通过文件设置的方式修改的内核参数是在系统重启后将失效(我之前认为修改后的内核参数放在文件中,系统启动的时候会读这个文件,重启后设置应该不会失效。

但经过验证,一般会失效,但如果把将默认的boot.sysctl服务打开,所以系统启动时就会执行这个文件的设置)。

把我们修改参数的命令写入启动执行脚本文件里/etc/rc.local,这样系统重启后配置就不会失效。

文件方式的好处是内核参数设置的值可以用文件保留下来,调用“sysctl -p”可以使文件中的所有配置的值马上生效。

3内核参数设置的实际应用3.1文件和网络类参数我们一般需要关注的文件类的内核参数有fs.file-max和file-nr。

fs.file-max是一个系统能申请到的最大文件句柄数;file-nr是只读的,它与file-max相关,仅用于显示已分以前短信网管项目就出现过文件句柄的问题,现场是Solaris系统,而家里的测试是在HP-UX 进行,由于Solaris默认支持的文件句柄比HP-UX少很多(如下图所示),家里测试没有发1、按照最大打开文件数量的需求设置内核参数,并且通过检查/proc/sys/fs/file-max 文件来确认最大打开文件数已经被正确设置。

# cat /proc/sys/fs/file-max如果设置值太小,修改文件/etc/sysctl.conf的变量到合适的值。

2、在/etc/security/limits.conf文件中设置最大打开文件数,下面是一行提示:#<domain> <type> <item> <value>添加如下这行。

* - nofile 2048这行设置了每个用户的默认打开文件数为2048。

注意"nofile"项有两个可能的限制措施。

就是<type>项下的hard和soft。

要使修改过的最大打开文件数生效,必须对这两种限制进行设定。

如果使用"-"字符设定<type>, 则hard和soft设定会同时被设定。

硬限制表明soft限制中所能设定的最大值。

soft限制指的是当前系统生效的设置值。

hard限制值可以被普通用户降低。

但是不能增加。

soft限制不能设置的比hard限制更高。

只有root用户才能够增加hard限制值。

3、使用“ulimit -n 2048”来限制用户的最大文件打开数为2048。

ulimit -n对非root 用户有限制,对root用户则没有限制,能享受到整个系统可以同时打开的文件数的好处。

设置句柄数量后,系统重启后,又会恢复默认值。

如果想永久保存下来,可以修改.bash_profile文件,把上面命令加到最后。

3.2平台内核参数平台在安装的过程中,会调用一个专门的shell来负责系统内核参数的设置。

这个shell 是checkkernel,在平台上/home/zxin10/bin目录下能找到。

对于Linux,需要关注的是其中的check_linux_kernel函数。

下面是涉及到设置内核参数的主要代码,除开设置了平台相echo "echo $ShmMaxSizecfg > /proc/sys/kernel/shmmax" >> /etc/rc.d/rc.localfiif ! grep -q "/proc/sys/kernel/msgmni" /etc/rc.d/rc.localthenecho "echo 300 > /proc/sys/kernel/msgmni" >> /etc/rc.d/rc.localfiif ! grep -q "/proc/sys/kernel/msgmnb" /etc/rc.d/rc.localthenecho "echo 163840 > /proc/sys/kernel/msgmnb" >> /etc/rc.d/rc.localfiif ! grep -q "/proc/sys/kernel/msgmax" /etc/rc.d/rc.localthenecho "echo 56383 > /proc/sys/kernel/msgmax" >> /etc/rc.d/rc.localfi########## 针对Oralce的一些内核参数的设置## 2007.01.10 add for oracle10gif [ "$db_version" = "oracle10g" ]thenif ! grep -q "/proc/sys/net/core/rmem_max" /etc/rc.d/rc.localthenecho "echo \"250 32000 100 128\" >/proc/sys/kernel/sem" >>/etc/rc.d/rc.localecho "echo \"1024 65000\" >/proc/sys/net/ipv4/ip_local_port_range" >>/etc/rc.d/rc.localecho "echo 1048576 >/proc/sys/net/core/rmem_max" >>/etc/rc.d/rc.localecho "echo 1048576 >/proc/sys/net/core/rmem_default" >>/etc/rc.d/rc.localecho "echo 262144 >/proc/sys/net/core/wmem_max" >>/etc/rc.d/rc.localecho "echo 262144 >/proc/sys/net/core/wmem_default" >>/etc/rc.d/rc.localfifi下面是网上一篇redhat linux as 4.7 静默安装 oracle 10g的过程中涉及到内核参数下面对上面涉及到的内核参数进行说明。

shmmax:共享内存段的最大字节数,建议设大点,甚至可以大过物理内存的字节数。

该参数定义了共享内存段的最大尺寸(以字节为单位)。

缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。

shmmin:共享内存段的最小尺寸。

这个参数的设置一般不会出问题。

shmmni:共享内存段的最大数目。

这个内核参数用于设置系统范围内共享内存段的最大数量。

该参数的默认值是4096 。

通常不需要更改。

shmseg:每个进程可分配的最大共享内存段数目shmall:最大的并发共享内存段数目,比SGA还要大。

该参数表示系统一次可以使用的共享内存总量(以页为单位,一个页大小为4KB)。

缺省值就是2097152,通常不需要修改。

sem:是semaphores的缩写,该参数表示设置的信号量。

它包含四个值:semmsl、semmns、semopm:系统调用允许的信号量最大个数。

至少100;或者等于SEMMSLsemmni:系统信号量set最大个数。

最少128semmsl:每个信号灯集合中最多的信号灯数目。

最小250;对于processes参数设置较大的系统建议设置为processes+10。

msgmni:指定消息队列标识的最大数目。

缺省设置:16msgmax:从一个进程发送到另一个进程的消息的最大长度。

进程间的消息传递是在内核的内存中进行,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。

缺省设置:8192msgmnb:一个消息队列中最大的字节数。

缺省设置:16384optmem_max:每个socket的最大缓存大小rmem_default:接收socket的缺省缓存大小(字节)rmem_max:接收socket的最大缓存大小(字节)wmem_default:发送的socket缺省缓存大小(字节)wmem_max:发送的socket最大缓存大小(字节)p_local_port_range:表示用于向外连接的端口范围。

相关主题