linux 内核参数修改
- 格式:pdf
- 大小:117.41 KB
- 文档页数:5
linux系统内核参数优化-linux快速⼊门教程内核的 shmall 和 shmmax 参数SHMMAX= 配置了最⼤的内存segment的⼤⼩ ------>这个设置的⽐SGA_MAX_SIZE⼤⽐较好。
SHMMIN= 最⼩的内存segment的⼤⼩SHMMNI= 整个系统的内存segment的总个数SHMSEG= 每个进程可以使⽤的内存segment的最⼤个数配置信号灯( semphore )的参数:SEMMSL= 每个semphore set⾥⾯的semphore数量 -----> 这个设置⼤于你的process的个数吧,否则你不得不分多个semphore set,好像有process+n之说,我忘了n是⼏了。
SEMMNI= 整个系统的semphore set总数SEMMNS=整个系统的semphore总数shmall 是全部允许使⽤的共享内存⼤⼩,shmmax 是单个段允许使⽤的⼤⼩。
这两个可以设置为内存的 90%。
例如 16G 内存,16*1024*1024*1024*90% = 15461882265,shmall 的⼤⼩为 15461882265/4k(getconf PAGESIZE可得到) = 3774873。
修改 /etc/sysctl.confkernel.shmmax=15461882265kernel.shmall=3774873kernel.msgmax=65535kernel.msgmnb=65535执⾏ sudo sysctl -p可以使⽤ ipcs -l 看结果。
ipcs -u 可以看到实际使⽤的情况========================================================================linux 内存管理⼀、前⾔本⽂档针对OOP8⽣产环境,具体优化策略需要根据实际情况进⾏调整;本⽂档将在以下⼏个⽅⾯来阐述如何针对RedHat Enterprise Linux 进⾏性能优化。
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.msgmnbkern.maxproc: 65536要设置⼀个指定的变量,直接⽤variable=value这样的语法:[xt@butbueatiful ~]$ sudo sysctl kernel.msgmnb=1024kernel.msgmnb: 1024可以使⽤sysctl修改系统变量,也可以通过编辑sysctl.conf⽂件来修改系统变量。
sysctl.conf 看起来很像 rc.conf。
它⽤variable=value的形式来设定值。
指定的值在系统进⼊多⽤户模式之后被设定。
并不是所有的变量都可以在这个模式下设定。
sysctl 变量的设置通常是字符串、数字或者布尔型。
(布尔型⽤ 1 来表⽰'yes',⽤ 0 来表⽰'no')。
sysctl -w kernel.sysrq=0sysctl -w kernel.core_uses_pid=1sysctl -w net.ipv4.conf.default.accept_redirects=0sysctl -w net.ipv4.conf.default.accept_source_route=0sysctl -w net.ipv4.conf.default.rp_filter=1sysctl -w net.ipv4.tcp_syncookies=1sysctl -w net.ipv4.tcp_max_syn_backlog=2048sysctl -w net.ipv4.tcp_fin_timeout=30sysctl -w net.ipv4.tcp_synack_retries=2sysctl -w net.ipv4.tcp_keepalive_time=3600sysctl -w net.ipv4.tcp_window_scaling=1sysctl -w net.ipv4.tcp_sack=12、关于sysctl⽂件的配置sysctl设置定义在 sur/lib/sysctl.d/ , /run/sysctl.d 和 /etc/sysctrl.d ⽬录下。
核心参数说明shmmax - 共享内存段.shmmin - 最小的共享内存段.shmmni - 共享内存标志符的数量.shmseg - 一个进程可分配的最大内存段数.shmall - 最大可允许的内存数.semmns - 信号量.semmsl- 一个信号灯集中最大的信号量数.共享内存SHMMAX:单个共享内存段的最大字节数。
SHMSEG:每个进程可链接的最多共享内存段数SHMALL:操作系统内全部共享内存的大小,应大于SHMMAX*SHMSEG。
消息队列MSGTQL:一个队列中可存放消息的个数MSGMAX:一个消息队列的最大字节数, 大于消息个数×一个消息的字节数。
MSGMNB:一个消息队列的最大字节数,大于消息个数*一个消息的字节数。
信号灯SEMMNI:信号灯集的个数。
SEMMSL:每个信号灯集中信号灯的最大个数SEMMNS:操作系统中信号灯的总数一、Linux下核心参数的调整1)操作对于正在运行内核 2.4 或更高版本的 Linux 系统,作为 root 用户在命令行上发出下列命令:∙sysctl -w kernel.msgmni=2048∙sysctl -w kernel.shmmax=1073741824∙sysctl -w fs.file-max=32768∙sysctl -w kernel.sem="512 32000 32 1024"要自动执行命令,编辑/etc/rc.d/rc.local文件,并将上述命令放在文件末尾。
在后续的每次系统引导时,就会自动设置这些值。
二.Solaris下核心参数的调整修改Solaris里/etc/system,设置格式如下:set shmsys:shminfo_shmmax=4294967295set shmsys:shminfo_shmmin=1set shmsys:shminfo_shmmni=100set shmsys:shminfo_shmseg=15set semsys:seminfo_semmns=200set semsys:seminfo_semmni=70set ulimit=3000000set semsys:seminfo_semmni=315set semsys:seminfo_semmsl=300set semsys:seminfo_semmns=630set semsys:seminfo_semopm=315set semsys:seminfo_semvmx=32767set shmsys:shminfo_shmmax=4294967295set shmsys:shminfo_shmmni=315set shmsys:shminfo_shmseg=10set shmsys:shminfo_shmmin=1set maxusers = <以MB为单位计的可用物理内存数量>set max_nprocs = 10 + 16 * maxusers//set max_nprocs=1200 系统所允许的最大进程数,通常最多30000set maxuprc = max_nprocs –10//每个用户可以拥有的最大进程数(为超级用户保留10个)set rlim_fd_max=2048set rlim_fd_cur=1024solaris 7下select()可以使用最多达65536的文件句柄,64-bit 应用程序缺省情况如此。
linux修改配置文件常用的命令在Linux系统中,配置文件是非常重要的。
它们包含了系统的各种配置信息,如网络配置、服务配置等等。
在进行系统管理时,需要不断地修改这些配置文件。
下面是 Linux 修改配置文件常用的命令: 1. vi/vim:这是最常用的文本编辑器之一,可用于编辑任何文本文件。
可以使用以下命令打开一个文件:vi 文件名或 vim 文件名。
编辑完成后,可以按 ESC 键退出插入模式,然后输入 :wq 保存并退出,或者输入 :q! 放弃更改并强制退出。
2. nano:这是另一个常用的文本编辑器,它比 vi/vim 更简单易用。
可以使用以下命令打开一个文件:nano 文件名。
编辑完成后,可以按 Ctrl+X 键退出,然后输入 Y/N 来保存或放弃更改。
3. sed:这是一个强大的文本处理工具,可以用于修改配置文件中的文本。
可以使用以下命令来替换某个字符串:sed -i 's/旧字符串/新字符串/g' 文件名。
其中,-i 选项表示在原文件中直接修改,s 表示替换操作,g 表示替换所有匹配项。
4. awk:这是另一个文本处理工具,可以用于提取配置文件中的信息。
可以使用以下命令来查找某个关键字所在的行:awk '/关键字/{print}' 文件名。
其中,/关键字/ 表示查找含有该关键字的行,print 表示打印该行。
5. grep:这是一个强大的文本搜索工具,可以用于查找配置文件中的信息。
可以使用以下命令来搜索某个关键字:grep 关键字文件名。
其中,关键字表示要搜索的关键字,文件名表示要搜索的文件名。
总之,掌握这些 Linux 修改配置文件常用的命令,可以更加方便地进行系统管理。
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 需求。
不过,不当的设置也可能会导致系统不稳定或者其他问题。
因此,在调整内核参数时需要谨慎,并确保理解每个参数的作用。
Linxu内核参数详解1. #表⽰SYN队列的长度,默认为1024,加⼤队列长度,可以容纳更多等待连接的⽹络连接数。
2. net.ipv4.tcp_max_syn_backlog = 655363.4. #每个⽹络接⼝接收数据包的速率⽐内核处理这些包的速率快时,允许送到队列的数据包的最⼤数⽬5. dev_max_backlog = 327686.7. #默认128,这个参数会影响到所有AF_INET类型socket的listen队列8. net.core.somaxconn = 327689.10. #系统套接字写默认缓冲区11. net.core.wmem_default = 838860812.13. #系统套接字读默认缓冲区14. net.core.rmem_default = 838860815.16. #系统套接字读最⼤缓冲区17. net.core.rmem_max = 1677721618.19. #系统套接字写最⼤缓冲区20. net.core.wmem_max = 1677721621.22. #此参数与net.ipv4.tcp_wmem都是⽤来优化TCP接收/发送缓冲区,包含三个整数值,分别是:min,default,max:23. #tcp_rmem:min表⽰为TCP socket预留⽤于接收缓冲的最⼩内存数量,default为TCP socket预留⽤于接收缓冲的缺省内存数量,max⽤于TCP socket接收缓冲的内存最⼤值。
24. #tcp_wmem:min表⽰为TCP socket预留⽤于发送缓冲的内存最⼩值,default为TCP socket预留⽤于发送缓冲的缺省内存值,max⽤于TCP socket发送缓冲的内存最⼤值。
25. net.ipv4.tcp_rmem=4096 87380 419430426. net.ipv4.tcp_wmem=4096 16384 419430427.28. #时间戳可以避免序列号的卷绕。
linux 内核变量命令规则在Linux系统中,内核变量通常指的是/sys文件系统中的一些特殊文件,这些文件包含了系统内核运行时的参数和选项设置。
内核变量用于控制系统的行为,可以对系统的一些特性进行配置和调整。
在Linux系统中,可以通过读取和写入内核变量来对系统进行一些调优和配置。
内核变量的命令规则包括两个方面:读取内核变量的命令和设置内核变量的命令。
读取内核变量的命令在Linux系统中,可以通过命令行工具来读取内核变量的值。
常用的读取内核变量值的命令包括:1. cat命令cat命令可以用来查看文件的内容。
在/sys文件系统中,每个内核变量都对应一个文件,可以通过cat命令来查看文件内容,从而获取内核变量的值。
例如,可以使用以下命令来读取某个内核变量的值:shellcat /sys/kernel/variable_name2. echo命令echo命令可以将文本输出到文件中。
在/sys文件系统中,一些内核变量是可写的,可以使用echo命令来设置这些内核变量的值。
例如,可以使用以下命令来设置某个内核变量的值:shellecho "new_value" > /sys/kernel/variable_name3. sysctl命令sysctl命令是一个用于管理系统内核参数的工具。
通过sysctl命令可以查看和设置内核变量的值。
例如,可以使用以下命令来查看某个内核变量的值:shellsysctl kernel.variable_name4. proc文件系统除了/sys文件系统之外,还可以通过/proc文件系统来查看系统的内核变量。
/proc文件系统包含了系统内核运行时的信息,其中包括一些内核变量的值。
可以通过cat命令来查看/proc文件系统中的特定文件,从而获取内核变量的值。
设置内核变量的命令有一些内核变量是可以通过命令行工具来设置的,常用的设置内核变量值的命令包括:1. echo命令如上所述,可以使用echo命令来设置/sys文件系统中可写的内核变量的值。
Linux操作系统修改内核参数的三种方法详细说明linux内核的参数设置怎么弄呢,Linux 操作系统修改内核参数有以下三种方式:修改 /etc/sysctl.conf 文件;在文件中加入配置项,格式为 key = value,保存修改后的文件,执行命令 sysctl -p 加载新配置。
使用 sysctl 命令临时修改;如:sysctl -w net.ipv4.tcp_mem = “379008 505344 758016”直接修改/proc/sys/ 目录中的文件。
如:echo “379008 505344 758016” 》 /proc/sys/net/ipv4/tcp_mem 注意:第一种方式在重启操作系统后自动永久生效;第二种和第三种方式在重启后失效。
内核参数kernel.core_uses_pi d = 1core_uses_pid 可以控制 core 文件的文件名中是否添加 pid 作为扩展名。
设置为1,表示添加 pid 作为扩展名,生成的 core 文件格式为core.xxx;设置为0(默认),表示生成的 core 文件统一命名为 core。
kernel.core_pat te rn = corecore_pattern 可以控制 core 文件的保存位置和文件格式。
如:kernel.core_pattern = “/corefile/core-%e-%p-%t”,表示将core 文件统一生成到 /corefile 目录下,产生的文件名为 core-命令名-pid-时间戳。
以下是参数列表:%p - insert pid into filename 添加 pid%u - insert current uid into filename 添加当前 uid%g - insert current gid into filename 添加当前 gid%s - insert signal that caused the coredump into the filename 添加导致产生 core 的信号%t - insert UNIX ti me that the coredump occurred into filename 添加 core 文件生成时的 unix 时间%h - insert hostname where the coredump happened into filename 添加主机名%e - insert coredumping executable name into filename 添加命令名kernel.msgmax = 8192进程间的消息传递是在内核的内存中进行的。
一、什么是initinit是Linux系统操作中不可缺少的程序之一。
是一个由内核启动的用户级进程。
内核启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式来启动其他用户级的进程或服务。
所以,init始终是第一个进程(其PID始终为1)。
内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。
如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。
二、运行级别运行级就是操作系统当前正在运行的功能级别。
这个级别从1到6,具有不同的功能。
其功能级别如下:# 0 - 停机(千万不能把initdefault 设置为0 )# 1 - 单用户模式# 2 - 多用户,没有NFS# 3 - 完全多用户模式(标准的运行级)# 4 - 没有用到# 5 - X11 (xwindow)# 6 - 重新启动(千万不要把initdefault 设置为6——把被你黑掉的linux的initdefault 设置为0或6也算是拒绝服务攻击噢!)除此之外还有ABC三个运行级别,但在RHLinux中都没有意义。
这些级别在/etc/inittab 文件里指定。
这个文件是init 程序寻找的主要文件,最先运行的服务是放在/etc/rc.d目录下的文件。
在大多数的Linux 发行版本中,启动脚本都是位于/etc/rc.d/init.d中的。
这些脚本被用ln 命令连接到/etc/rc.d/rcn.d 目录。
(这里的n 就是运行级0-6)三、运行级别的配置运行级别的配置是在/etc/inittab行内进行的,如下所示:12 : 2 : wait : / etc / init.d / rc 2各字段解释如下:id:runlevels:action:processid:是一个任意指定的四个字符以内的序列标号,在本文件内必须唯一;使用老版本的libc5(低于5.2.18)或a.out库编译出来的sysvinit限制为2字符。
(转)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$ sysctl -p #将sysctl.conf⽂件中的修改读取到系统中,即虚拟⽂件系统/proc下的值从如上的命令也可以看出, 所有的变量都可以在/proc/sys中找到, 例如/proc/sys/kernel/yama/ptrace_scope, 如果要把它写⼊/etc/sysctl.conf⽂件中, 需要把前⾯的/proc/sys去掉, 同时写成kernel.yama.ptrace_scope的形式.。