linux 内核参数修改
Linux内核参数配置
Linux内核参数配置
Linux在系统运⾏时修改内核参数(/proc/sys与/etc/sysctl.conf),⽽不需要重新引导系统,这个功能是通过/proc虚拟⽂件系统实现的。
在/proc/sys⽬录下存放着⼤多数的内核参数,并且设计成可以在系统运⾏的同时进⾏更改, 可以通过更改/proc/sys中内核参数对应的⽂件达到修改内核参数的⽬的(修改过后,保存配置⽂件就马上⾃动⽣效),不过重新启动机器后之前修改的参数值会失效,所以只能是⼀种临时参数变更⽅案。(适合调试内核参数优化值的时候使⽤,如果设置值有问题,重启服务器还原原来的设置参数值了。简单⽅便。)
但是如果调试内核参数优化值结束后,需要永久保存参数值,就要通过修改/etc/sysctl.conf内的内核参数来永久保存更改。但只是修改sysctl⽂件内的参数值,确认保存修改⽂件后,设定的参数值并不会马上⽣效,如果想使参数值修改马上⽣效,并且不重启服务器,可以执⾏下⾯的命令:
#sysctl –p
下⾯介绍⼀下/proc/sys下内核⽂件与配置⽂件sysctl.conf中变量的对应关系:
由于可以修改的内核参数都在/proc/sys⽬录下,所以sysctl.conf的变量名省略了⽬录的前⾯部分(/proc/sys)。
即将/proc/sys中的⽂件转换成sysctl中的变量依据下⾯两个简单的规则:
1.去掉前⾯部分/proc/sys
2.将⽂件名中的斜杠变为点
这两条规则可以将/proc/sys中的任⼀⽂件名转换成sysctl中的变量名。
例如:
linux内核启用参数
linux内核启用参数
以Linux内核启用参数为标题的文章
一、背景介绍
Linux内核是操作系统的核心,负责管理计算机的硬件资源和提供系统调用接口。在Linux系统中,通过启用不同的内核参数,可以对系统的行为进行调整和优化,以满足特定的需求和提高系统性能。本文将介绍一些常用的Linux内核启用参数,并分析其作用和使用场景。
二、内核启用参数
1. acpi=off
ACPI(高级配置与电源接口)是一种用于电源管理和设备配置的标准。将acpi=off参数添加到内核启动参数中可以禁用ACPI功能。在某些老旧的计算机硬件上,ACPI可能会导致系统崩溃或不稳定,此时可以使用该参数来解决问题。
2. nomodeset
nomodeset参数用于禁用内核对显卡驱动的自动加载和切换。在某些笔记本电脑或显卡驱动不兼容的情况下,系统可能无法正常启动或出现黑屏等问题。使用nomodeset参数可以强制系统使用基本的VESA显卡驱动,以保证系统的稳定性。
3. noapic
APIC(高级可编程中断控制器)是用于管理中断信号的硬件设备。在某些计算机上,APIC可能导致中断冲突或系统不稳定的问题。通过添加noapic参数,可以禁用APIC功能,解决这些问题。
4. irqpoll
irqpoll参数用于解决某些计算机上的中断问题。当系统无法正确识别硬件的中断信号时,会导致设备无法正常工作或系统崩溃。通过添加irqpoll参数,系统会定期轮询中断信号,以确保中断的正确处理,提高系统的稳定性。
5. selinux=0
SELinux(安全增强型Linux)是一种强制访问控制机制,用于提高系统的安全性。但在某些情况下,SELinux可能导致系统的性能下降或应用程序无法正常运行。通过将selinux=0参数添加到内核启动参数中,可以禁用SELinux功能,提高系统的运行效率。
linux内核启用参数
linux内核启用参数
Linux内核启用参数是指在Linux系统启动时,可以通过设置参数来改变内核的行为和配置。这些参数可以通过修改启动脚本或者在引导时通过命令行参数传递给内核。
我们来介绍一些常用的Linux内核启用参数。
1. root:指定根文件系统所在的设备或分区。在启动时,内核会将根文件系统挂载到这个设备上,成为系统的根目录。可以使用设备名称(如/dev/sda1)或者UUID(Universally Unique Identifier)来指定。
2. init:指定系统初始化进程的路径。这个进程是系统启动后的第一个用户空间进程,负责初始化系统环境、启动其他进程等。一般情况下,它的路径是/bin/init。
3. quiet:禁用内核启动时的冗长输出信息。默认情况下,内核会将启动过程中的详细信息输出到控制台上,使用quiet参数可以减少这些输出,使启动过程更加简洁。
4. vga:指定启动时的图形模式。可以通过设置不同的参数值来改变显示分辨率和颜色深度。例如,vga=791表示使用1024x768分辨率,颜色深度为16位。
5. acpi:启用或禁用ACPI(Advanced Configuration and Power
Interface)功能。ACPI是一种能够管理电源、温度、风扇等硬件的标准,通过设置acpi参数,可以控制是否启用ACPI功能。
6. noapic:禁用APIC(Advanced Programmable Interrupt Controller)功能。APIC是用于处理系统中断的硬件设备,通过设置noapic参数,可以禁用APIC功能,解决一些不兼容的硬件问题。
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”。
如何优化 Linux 内核参数
如何优化 Linux 内核参数
随着计算机技术的不断发展,更多的人开始使用 Linux 操作系统。作为一个开源的操作系统, Linux 在保障安全性、稳定性和
可靠性方面表现出色。除此之外, Linux 操作系统也非常灵活,
用户可以根据自己的需求和喜好对其进行定制和优化。其中,内
核参数的优化尤为重要,因为它能直接影响到系统的性能和稳定性。那么,如何优化 Linux 内核参数呢?
一、理解内核参数的含义和作用
内核参数是一组指定操作系统内部参数的开关,通过改变这些
参数可以改善系统的性能和稳定性。内核参数有许多种,它们控
制着各种功能的行为和特性,如网络协议、文件系统、内存管理、I/O 等方面。对于不同的应用场景,其内核参数的优化方向也不同。比如,对于高负载的 web 服务器,应优化网络协议参数和内存管
理参数;而对于 I/O 密集型应用,应优化磁盘和文件系统相关参数。
二、查看和修改内核参数
在 Linux 操作系统中,用户可以通过 /proc 系统文件夹和 sysctl
命令查看和修改内核参数。具体方法如下:
1. 查看内核参数:使用 cat /proc/sys/[文件夹路径]/[参数名] 命
令即可。其中, [文件夹路径] 和 [参数名] 根据所需参数而不同。
举例来说,如果要查看 TCP 连接超时时间,可以使用 cat
/proc/sys/net/ipv4/tcp_keepalive_time 命令。输出结果为系统当前的TCP 连接超时时间。类似地,如果要查看系统的文件描述符限制,可以使用 cat /proc/sys/fs/file-max 命令。
Linux利用Sysctl命令调整内核参数
Linux利⽤Sysctl命令调整内核参数
前⾔
sysctl 命令被⽤于在内核运⾏时动态地修改内核的运⾏参数,可⽤的内核参数在⽬录 /proc/sys 中。它包含⼀些TCP/IP堆栈和虚拟内存系统的⾼级选项,这可以让有经验的管理员提⾼引⼈注⽬的系统性能。⽤sysctl可以读取设置超过五百个系统变量。
1、常见⽤法
列出所有的变量并查看
sysctl -a | less
修改某变量的值
sysctl -w 变量名=变量值
#sysctl -w vm.max_map_count=262144
读⼀个指定的变量,例如 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
linux 内核参数修改
使用“sysctl -a”命令可以查看所有正在使用的内核参数。内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4、 net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom 、dev.raid、kernel等等。相同的linux,安装的组件和使用的方式不一样,正在使用的
修改好内核以后,执行下面的命令使新的配置生效。
[root @linux1 /root]# /sbin/sysctl -p 以 root 用户身份运行以下命令来验证您的设置: /sbin/sysctl -a | grep shm /sbin/sysctl -a | grep sem /sbin/sysctl -a | grep file-max /sbin/sysctl -a | grep ip_local_port_range
########## 针对Oralce的一些内核参数的设置 ## 2007.01.10 add for oracle10g if [ "$db_version" = "oracle10g" ] then if ! grep -q "/proc/sys/net/core/rmem_max" /etc/rc.d/rc.local then echo "echo \"250 32000 100 128\" >/proc/sys/kernel/sem" >>/etc/rc.d/rc.local echo "echo \"1024 65000\" >/proc/sys/net/ipv4/ip_local_port_range" >>/etc/rc.d/rc.local echo "echo 1048576 >/proc/sys/net/core/rmem_max" >>/etc/rc.d/rc.local echo "echo 1048576 >/proc/sys/net/core/rmem_default" >>/etc/rc.d/rc.local echo "echo 262144 >/proc/sys/net/core/w mem_max" >>/etc/rc.d/rc.local echo "echo 262144 >/proc/sys/net/core/w mem_default" >>/etc/rc.d/rc.local fi fi
Liunx内核修改与编译
操作系统内核编译
新版本内核:linux-2.6.39
2、修改root权限
原本内核版本
1.原本内核版本
使用uname –a查看内核版本
2.升级到root权限
3.复制内核压缩包到“/usr/src”目录
4.解压压缩包并且软链接到本目录linux
5.下载并安装必要的工具
6.清除从前编译内核时残留的.o 文件和不必要的关联,确保源代码目录下没有不正确的.o文件
和文件依赖关系
7.在系统文件中插入编写好的新增加的系统函数/usr/src/linux/kernel/sys.c
Double 改成了int (double编译会出错)
8.将新添加的函数的入口地址加到系统调用入口表
9.修改相应的头文件
添加:#define __NR_mycall 341,并且修改#define NR_syscalls 342
10.是asm、linux、scsi链接重定向到要升级的内核的源代码
11.配置内核,修改相关参数
下面配置内核相关的参数
确认是否配置成功/usr/src/linux/.config
12.生成依赖信息,清除旧的编译结果
13.编译二进制内核文件
开始编译
等候一段时间编译完成
14.编译模块
需要很长时间才完成
需要一段时间才完成
15.将System.map、vmlinuz链接指向新版本的内核
16.修改grub引导文件,使系统进入新版本
17.重启后查看内核版本
18.测试新添加的系统函数
测试文件
结果25,测试成功!
linux kernel 参数
linux kernel 参数
Linux内核参数是用于调整和控制Linux操作系统内核行为的设置。这些参数可以在系统启动时通过启动脚本(如`init`进程)或在内核启动过程中通过命令行指定。它们影响系统的性能、稳定性、安全性以及资源管理等方面。
内核参数可以分为几个大类:
1. **进程管理**:例如,`max_map_count`限制了系统可以创建的最大文件映射数量,`nr_cpus`设置了系统中可用的CPU核心数。
2. **内存管理**:比如,`vm.swappiness`设置了系统倾向于使用交换空间的程度,`kmem.max`限制了内核可使用的最大内存量。
3. **文件系统**:`fs.file-max`设置了系统级别的文件描述符最大数量,`fs.aio-max-nr`限制了系统层面的异步I/O操作的最大数量。
4. **网络**:`net.ipv4.tcp_fin_timeout`设置了TCP连接中FIN包的超时时间,`net.ipv4.ip_local_port_range`定义了用于出口连接的本地端口范围。
5. **安全和稳定性**:`kernel.shmmax`和`kernel.shmall`限制了系统中的最大共享内存段和共享内存页的数量。
6. **虚拟化**:例如,`vm.dirty_ratio`和`vm.dirty_background_ratio`控制了内存中脏数据的最大比例和开始后台写入操作的比例。
这些参数可以通过编辑启动脚本(如`/etc/sysctl.conf`),使用`sysctl`命令实时调整,或者在引导时通过`init`系统的命令行接口设置。正确地设置这些参数可以优化系统性能,适应特定的硬件资源和workload 需求。不过,不当的设置也可能会导致系统不稳定或者其他问题。因此,在调整内核参数时需要谨慎,并确保理解每个参数的作用。
kernaim参数
kernaim参数
Kernel参数是Linux内核的配置选项,可以修改以更好地适应特定的硬件和软件环境。这些参数控制着内核的行为和性能,并影响系统的稳定性和安全性。以下是Kernel的一些参数及其说明:
:控制内核把哪些页面交换到磁盘中。默认值为60,调整到更低的值可以减少交换,提高系统性能,但也可能增加内存压力。建议设置为10-20之间。
:启用系统请求键。
如需了解更多关于Kernel参数的信息,建议咨询专业技术人员获取帮助。
Linux如何在系统运行过程中修改内核参数
Linux如何在系统运行过程中修改内核参数
和目的地都不是本机的数据包通过网络,RedHat 默认屏蔽此功能,在需要用本机作为路由器、NAT 等情况下需要开启此功能。
方法一:修改/proc 下内核参数文件内容
直接修改内核参数ip_forward 对应在/proc 下的文件
/proc/sys/net/ipv4/ip_forward。用下面命令查看ip_forward 文件内容:
# cat /proc/sys/net/ipv4/ip_forward
该文件默认值0 是禁止ip 转发,修改为1 即开启ip 转发功能。修改命令如下:
# echo 1 /proc/sys/net/ipv4/ip_forward
修改过后就马上生效,即内核已经打开ip 转发功能。但如果系统重启后则又恢复为默认值0,如果想永久打开需要通过修改/etc/sysctl.conf 文件的内容来实现。
方法二.修改/etc/sysctl.conf 文件
默认sysctl.conf 文件中有一个变量是
net.ipv4.ip_forward = 0
将后面值改为1,然后保存文件。因为每次系统启动时初始化脚本
/etc/rc.d/rc.sysinit 会读取/etc/sysctl.conf 文件的内容,所以修改后每次系统启动时都会开启ip 转发功能。但只是修改sysctl 文件不会马上生效,如果想使修改马上生效可以执行下面的命令:
# sysctl –p
在修改其他内核参数时可以向/etc/sysctl.conf 文件中添加相应变量即可,下面介绍/proc/sys 下内核文件与配置文件sysctl.conf 中变量的对应关系,由于可以
Linux内核参数优化
Linux内核参数优化
1.调整内核启动参数:
在引导过程中,可以使用GRUB或LILO等引导加载器来设置内核启动参数。
通过修改/etc/default/grub文件(对于使用GRUB的情况),或修改
/etc/lilo.conf文件(对于使用LILO的情况),可以设置内核启动参数。
常见的内核启动参数包括init=/bin/bash(在系统启动时使用bash作为init进程)和max_loop=256(增加文件系统挂载的最大数量)。
2.调整内存管理参数:
修改/etc/sysctl.conf文件,可以调整与内存管理相关的内核参数。
例如,可以增加vm.swappiness=10来减少交换空间的使用,提高系统性能。
3.调整文件系统参数:
修改/etc/fstab文件,可以设置文件系统的挂载选项。
使用noatime选项可以减少磁盘I/O操作,提高系统性能。
4.调整网络参数:
修改/etc/sysctl.conf文件,可以调整与网络相关的内核参数。
例如,可以增加net.ipv4.tcp_tw_reuse=1和
net.ipv4.tcp_fin_timeout=30来优化TCP连接。
5.启用硬件加速:
根据硬件配置,启用硬件加速可以显著提高系统性能。
例如,对于使用Intel或AMD处理器的系统,可以启用CPU硬件虚拟化支持。
6.关闭不必要的内核模块和服务:
禁用不需要的内核模块和服务可以减少系统的资源占用,提高性能。
使用工具如lsmod和systemctl可以查看已加载的内核模块和服务状态。
7.更新内核版本:
(转)Linux内核参数设置sysctl命令详解
(转)Linux内核参数设置sysctl命令详解
Linux内核参数设置sysctl命令详解
sysctl是⼀个允许您改变正在运⾏中的Linux系统的接⼝. 它包含⼀些 TCP/IP 堆栈和虚拟内存系统的⾼级选项, 这可以让有经验的管理员提⾼引⼈注⽬的系统性能. ⽤sysctl可以读取设置超过五百个系统变量. 基于这点, sysctl提供两个功能:读取和修改系统设置.
常⽤参数
-w 临时改变某个指定参数的值,如sysctl -w net.ipv4.ip_forward=1
-a 显⽰所有的系统参数
-p 从指定的⽂件加载系统参数,如不指定即从/etc/sysctl.conf中加载
以下是实例
$ sysctl -a #查看所有可读变量
$ sysctl net.ipv4.ip_forward #查看某个变量
net.ipv4.ip_forward = 1
$ sysctl -n net.ipv4.ip_forward #获取某个变量的值
1
$ sysctl -w kernel.yama.ptrace_scope=0 #临时修改某个变量的当前值,即虚拟⽂件系统/proc下的值,重启失效
kernel.yama.ptrace_scope = 0
$ echo 1 > /proc/sys/net/ipv4/ip_forward #临时修改某个变量的当前值,效果同上
#使⽤sed命令永久修改某值
#把kernel.yama.ptrace_scope开头的⾏修改为后⾯的值,注意第2个/后⾯有个c表⽰change
$ sudo sed -i "/^kernel.yama.ptrace_scope/ckernel.yama.ptrace_scope = 0" /etc/sysctl.d/10-ptrace.conf
Linux终端命令系统内核参数配置
Linux终端命令系统内核参数配置Linux作为一种强大而灵活的操作系统,其内核参数配置对于系统
性能的优化和调整至关重要。系统内核参数的配置可以影响到操作系
统的性能、稳定性和安全性,因此正确地配置和优化内核参数是保证
系统正常运行的重要一环。本文将介绍Linux终端命令下的系统内核参数配置方法,以帮助读者深入了解和灵活应用这些配置参数。
1. 如何查看当前系统的内核参数配置
在Linux终端下,可以运行以下命令查看当前系统的内核参数配置:```
sysctl -a
```
该命令会列出所有的内核参数及其当前值。通过查看当前配置,我
们可以了解系统的默认值,以便后续的优化和调整。
2. 内核参数配置文件
Linux系统的内核参数配置都保存在/sys/目录下的各个文件中。这
些文件可以通过编辑文本文件的方式进行修改。
例如,要修改TCP连接的超时时间,可以编辑
/sys/net/ipv4/tcp_keepalive_time文件:
```
vi /sys/net/ipv4/tcp_keepalive_time
```
3. 修改内核参数的方法
3.1 临时修改法
在终端中使用sysctl命令可以临时修改某个内核参数的值。例如,
要修改内核的TCP连接超时时间,可以运行以下命令:
```
sysctl -w net.ipv4.tcp_keepalive_time=300
```
3.2 永久修改法
如果要永久修改某个内核参数的值,需要修改对应的配置文件。常
用的配置文件有:
- /etc/sysctl.conf:针对整个系统设定的内核参数配置文件。
关于Linux内核参数调整
关于Linux内核参数调整
Linux内核参数调整
一、前言
1) Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的。
2) Linux性能诊断工具,介绍如何使用Linux自带的诊断工具进行性能诊断。
加粗斜体表示可以直接运行的命令。
下划线表示文件的内容。
二、/proc/sys/kernel/优化
1) /proc/sys/kernel/ctrl-alt-del
该文件有一个二进制值,该值控制系统在接收到ctrl+alt+delete 按键组合时如何反应。这两个值分别是:
零(0)值,表示捕获ctrl+alt+delete,并将其送至init 程序;这将允许系统可以安全地关闭和重启,就好象输入shutdown命令一样。
壹(1)值,表示不捕获ctrl+alt+delete,将执行非正常的关闭,就好象直接关闭电源一样。
缺省设置:0
建议设置:1,防止意外按下ctrl+alt+delete导致系统非正常重启。
2) proc/sys/kernel/msgmax
该文件指定了从一个进程发送到另一个进程的消息的最大长度(bytes)。进程间的消息传递是在内核的内存中进行的,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。
缺省设置:8192
3) /proc/sys/kernel/msgmnb
该文件指定一个消息队列的最大长度(bytes)。
缺省设置:16384
4) /proc/sys/kernel/msgmni
该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列。
linux 参数
linux 参数
Linux参数是指在Linux操作系统中,用于控制系统运行的参数设置。这些参数可以控制系统的性能、安全性、可靠性等方面,对于系统管理员和开发人员来说,了解和掌握这些参数是非常重要的。
一、Linux参数的分类
Linux参数主要分为内核参数和应用程序参数两类。
1. 内核参数
内核参数是Linux系统内核的参数,主要用于控制系统的性能和安全性。内核参数可以在系统启动时通过修改启动脚本来设置,也可以通过sysctl命令来动态修改。常见的内核参数包括:(1)网络参数:如tcp_max_syn_backlog、tcp_syncookies等,用于控制网络连接的建立和传输。
(2)文件系统参数:如inode、file-max等,用于控制文件系统的性能和可靠性。
(3)内存参数:如swappiness、vm.max_map_count等,用于控制内存的使用和分配。
(4)安全参数:如kernel.exec-shield、
kernel.randomize_va_space等,用于提高系统的安全性。
2. 应用程序参数
应用程序参数是指应用程序自身的参数设置,主要用于控制应用程序的性能和行为。应用程序参数通常在应用程序的配置文件中进行设置,也可以在启动应用程序时通过命令行参数来设置。常见的应用
程序参数包括:
(1)数据库参数:如innodb_buffer_pool_size、
max_connections等,用于控制数据库的性能和可靠性。
(2)Web服务器参数:如max_clients、keepalive_timeout等,用于控制Web服务器的性能和并发连接数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
suse11lw b:/home/zxin10/steven # sysctl -a|grep fs.file-nr
fs.file-nr = 5152 0 6815744
对于文件句柄的问题,对于要处理很多文件的接口机要注意,系统的文件句柄是否够用。以前短信网管项目就出现过文件句柄的问题,现
场是Solaris系统,而家里的测试是在HP-UX进行,由于Solaris默认支持的文件句柄比HP-UX少很多(如下图所示),家里测试没有发现,从
这行设置了每个用户的默认打开文件数为2048。 注意"nofile"项有两个可能的限制措施。就是项下的hard和soft。要使修改过的最大打开文 件数生效,必须对这两种限制进行设定。如果使用"-"字符设定, 则hard和soft设定会同时被设定。硬限制表明soft限制中所能设定的最大 值。soft限制指的是当前系统生效的设置值。hard限制值可以被普通用户降低。但是不能增加。soft限制不能设置的比hard限制更高。只有 root用户才能够增加hard限制值。
# cat /proc/sys/fs/file-max
如果设置值太小, 修改文件/etc/sysctl.conf的变量到合适的值。
2、在/etc/security/limits.conf文件中设置最大打开文件数, 下面是一行提示:
# 添加如下这行。
* - nofile 2048
修改好内核以后,执行下面的命令使新的配置生效。
[root @linux1 /root]# /sbin/sysctl -p 以 root 用户身份运行以下命令来验证您的设置: /sbin/sysctl -a | grep shm /sbin/sysctl -a | grep sem /sbin/sysctl -a | grep file-max /sbin/sysctl -a | grep ip_local_port_range
内核参数是不一样的。
所有的内核参数的说明文档是放到/usr/src/linux/Documentation/sysctl中的,如果想知道对内核参数的说明,可以到该目录下查看相应的说
明文档。
2 内核参数的的设置方法
由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。也可以通过文件的方式进行设置。下面就介
1 内核参数的查看方法
使用“sysctl -a”命令可以查看所有正在使用的内核参数。内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4、 net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom 、dev.raid、kernel等等。相同的linux,安装的组件和使用的方式不一样,正在使用的
这里,对每个参数值做个简要的解释和说明。
(1)shmmax:该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于orac le来说,该缺省值太低了,通常将其设置为2G。 (2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。 (3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。(共享内存段的数量,以页 为主,每个页是4K) (4)sem:该参数表示设置的信号量。一般大于maxproc 的一点就行了。 (5)file- max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。
文件。
2.2 文件设置的方式
更改的内核参数默认保存在/etc/sysctl.conf文件中。修改的时候可以直接用vi编辑sysctl.conf文件,增加要修改的内核参数内容,修改的格 式为:参数名=值。例如,把net.ipv4.ip_forward的值修改为1,在sysctl.conf中增加下面这行内容: net.ipv4.ip_forward=1 文件修改好后,进行保存。然后使用“sysctl -p 配置文件名”来使配置生效,如果配置文件是默认的,可以不用输配置文件名,即使 用“sysctl -p”。
linux 内核参数修改
配置 Linux 内核参数(2种方法),修改后不用重启动更新: /sbin/sysctl -p 第一种:打开/etc/sysctl.conf 复制如下内容 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net .c ore.rmem_default =262144 net .c ore.wmem_default =262144 net .c ore.rmem_max=262144 net .c ore.wmem_max=262144 第二种:打开终端 cat >> /etc/sysctl.conf< kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net .c ore.rmem_default =262144 net .c ore.wmem_default =262144 net .c ore.rmem_max=262144 net .c ore.wmem_max=262144 EOF
########## 针对Oralce的一些内核参数的设置 ## 2007.01.10 add for oracle10g if [ "$db_version" = "oracle10g" ] then if ! grep -q "/proc/sys/net/core/rmem_max" /etc/rc.d/rc.local then echo "echo \"250 32000 100 128\" >/proc/sys/kernel/sem" >>/etc/rc.d/rc.local echo "echo \"1024 65000\" >/proc/sys/net/ipv4/ip_local_port_range" >>/etc/rc.d/rc.local echo "echo 1048576 >/proc/sys/net/core/rmem_max" >>/etc/rc.d/rc.local echo "echo 1048576 >/proc/sys/net/core/rmem_default" >>/etc/rc.d/rc.local echo "echo 262144 >/proc/sys/net/core/w mem_max" >>/etc/rc.d/rc.local echo "echo 262144 >/proc/sys/net/core/w mem_default" >>/etc/rc.d/rc.local fi fi
3.2 平台内核参数
平台在安装的过程中,会调用一个专门的shell来负责系统内核参数的设置。这个shell是checkkernel,在平台上/home/zxin10/bin目录下能找 到。对于Linux,需要关注的是其中的check_linux_kernel函数。下面是涉及到设置内核参数的主要代码,除开设置了平台相关的一些内核参 数,另外针对Oracle数据库也进行了相应的设置,大家可以一起分析一下。
而导致故障泄漏到现场。
操作系统名称
So la ris AIX Suse Linux HP -U X NT
默认系统句柄数
256 2000 1024 2000 10000
下面介绍修改文件句柄限制的方法。
1、按照最大打开文件数量的需求设置内核参数,并且通过检查/proc/sys/fs/file-max文件来确认最大打开文件数已经被正确设置。
3 内核参数设置的实际应用 3.1 文件和网络类参数
我们一般需要关注的文件类的内核参数有fs.file-max和file-nr。fs.file-max是一个系统能申请到的最大文件句柄数;file-nr是只读的,它与filemax相关,仅用于显示已分配文件句柄的数目、已使用文件句柄的数目、文件句柄的最大数目,如下图所示。
##### 消息队列的设置 if ! grep -q "/proc/sys/kernel/shmmax" /etc/rc.d/rc.local then echo "echo $ShmMaxSizecfg > /proc/sys/kernel/shmmax" >> /etc/rc.d/rc.local fi if ! grep -q "/proc/sys/kernel/msgmni" /etc/rc.d/rc.local then echo "echo 300 > /proc/sys/kernel/msgmni" >> /etc/rc.d/rc.local fi if ! grep -q "/proc/sys/kernel/msgmnb" /etc/rc.d/rc.local then echo "echo 163840 > /proc/sys/kernel/msgmnb" >> /etc/rc.d/rc.local fi if ! grep -q "/proc/sys/kernel/msgmax" /etc/rc.d/rc.local then echo "echo 56383 > /proc/sys/kernel/msgmax" >> /etc/rc.d/rc.local fi
通过文件设置的方式修改的内核参数是在系统重启后将失效(我之前认为修改后的内核参数放在文件中,系统启动的时候会读这个文件,
重启后设置应该不会失效。但经过验证,一般会失效,但如果把将默认的boot.sysctl服务打开,所以系统启动时就会执行这个文件的设 置)。把我们修改参数的命令写入启动执行脚本文件里/etc/rc.local,这样系统重启后配置就不会失效。 文件方式的好处是内核参数设置的值可以用文件保留下来,调用“sysctl -p”可以使文件中的所有配置的值马上生效。
3、使用“ulimit -n 2048”来限制用户的最大文件打开数为2048。ulimit -n对非root用户有限制,对root用户则没有限制,能享受到整个系统可
以同时打开的文件数的好处。
设置句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,把上面命令加到最后。
绍这两Baidu Nhomakorabea修改方法。
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文件之后还是个空
例如:
# /sbin/sysctl -a | grep shm kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.shmmax = 2147483648
kernel.shm-use-bigpages = 0 # /sbin/sysctl -a | grep sem kernel.sem = 250 32000 100 128 # /sbin/sysctl -a | grep file-max fs.file-max = 65536 # /sbin/sysctl -a | grep ip_local_port_range net.ipv4.ip_local_port_range = 1024 65000 如果系统的参数设置的比上述参数值小,则编辑 /etc/sysctl.conf 文件,添加或更改这些参数。完成后,运行以下命令激活更改: /sbin/sysctl -p ============================================================================================