admin 管理员组文章数量: 1086019
2024年12月25日发(作者:linux查找包含a但不包含b的内容)
Linux操作系统修改内核参数的三种方法详细说明
linux内核的参数设置怎么弄呢,Linux 操作系统修改内核参数有以下三
种方式:
修改 /etc/ 文件;
在文件中加入配置项,格式为 key = value,保存修改后的文件,执行命
令 sysctl -p 加载新配置。
使用 sysctl 命令临时修改;
如:sysctl -w _mem = “379008 505344 758016”直接修改
/proc/sys/ 目录中的文件。
如:echo “379008 505344 758016” 》 /proc/sys/net/ipv4/tcp_mem
注意:第一种方式在重启操作系统后自动永久生效;第二种和第三种方式在重启
后失效。
内核参数
_uses_pid = 1
core_uses_pid 可以控制 core 文件的文件名中是否添加 pid 作为扩展
名。设置为1,表示添加 pid 作为扩展名,生成的 core 文件格式为
;设置为0(默认),表示生成的 core 文件统一命名为 core。
_pattern = core
core_pattern 可以控制 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 time that the coredump occurred into filename 添
加 core 文件生成时的 unix 时间
%h - insert hostname where the coredump happened into filename 添
加主机名
%e - insert coredumping executable name into filename 添加命令名
= 8192
进程间的消息传递是在内核的内存中进行的。msgmax 指定了消息队列中消
息的最大值。(65536B=64KB)
= 16384
msgmnb 规定了一个消息队列的最大值,即一个消息队列的容量。msgmnb
控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段
的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是 16G,那
么需要共享内存页数是16GB / 4KB = 16777216KB / 4KB = 4194304(页),
也就是64Bit系统下16GB物理内存,设置 = 4194304才符合要
求。
= 1048576
表示在任何给定时刻,系统上可以使用的共享内存的总量(bytes)。
= 4294967295
表示内核所允许的最大共享内存段的大小(bytes)。用于定义单个共享内
存段的最大值,64位 linux 系统,可取的最大值为物理内存值 - 1byte,建
议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内
存-1byte。例如,如果为64GB物理内存,可取64 * 1024 * 1024 * 1024 - 1
= 68719476735。
实际可用最大共享内存段大小=shmmax * 98%,其中大约2%用于共享内存
结构。可以通过设置 shmmax,然后执行ipcs -l来验证。
= 0
控制系统调试内核的功能,不同的值对应不同的功能:
0 完全禁用 sysrq 组合键
1 启用 sysrq 组合键的全部功能
2 启用控制台日志级别控制
4 启用键盘控制(SAK、unraw)
8 启用进程的调试信息输出等
16 启用同步命令
32 启用重新挂载为只读
64 启用进程信号(终止、杀死、溢出杀死)
128 允许重启/关机
256 控制实时任务的优先级控制(nicing)
_max_backlog = 262144
表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允
许发送到队列的数据包的最大数目。
_default = 8388608
为 TCP socket 预留用于接收缓冲的内存默认值。
_max = 16777216
为 TCP socket 预留用于接收缓冲的内存最大值。
onn = 128
listen(函数)的默认参数,挂起请求的最大数量限制。web 应用中
listen 函数的 backlog 默认会给我们内核参数的 onn 限制
到128。nginx 服务器中定义的 NGX_LISTEN_BACKLOG 默认为511。
_default = 8388608
为 TCP socket 预留用于发送缓冲的内存默认值。
_max= 16777216
为 TCP socket 预留用于发送缓冲的内存最大值。
_source_route = 0、
_source_route = 0
处理无源路由的包。
_filter = 1、_filter
= 1
开启反向路径过滤。
_forward = 0、_redirects = 0、
_redirects = 0
不充当路由器。
_echo_ignore_broadcasts = 1
避免放大攻击。
_ignore_bogus_error_responses = 1
开启恶意 ICMP 错误消息保护。
_local_port_range = 1024 65535
增加系统 IP 端口限制。表示用于向外连接的端口范围。参考
_fin_TImeout = 30
如果套接字由本端要求关闭,这个参数决定了它保持在 FIN-WAIT-2 状态
的时间。对端可以出错并永远不关闭连接,甚至意外宕机。缺省值是 60s,2.2
内核通常是 180s,你可以按这个设置,但要记住的是,即使你的机器是一个轻
载的 WEB 服务器,也有因为大量的死套接字而内存溢出的风险,FIN-WAIT-2
的危险性比 FIN-WAIT-1 要小,因为它最多只能吃掉 1.5k 内存,但是它们的
生存期长些。
_keepalive_TIme = 1200
表示当 keepalive 起作用的时候,TCP 发送 keepalive 消息的频度。
(单位:秒,缺省值:2小时)
_max_orphans = 3276800
表示系统中最多有多少个 TCP 套接字不被关联到任何一个用户文件句柄
上。这个限制仅仅是为了防止简单的 DoS 攻击,不能郭飞依赖依靠它或者认为
地减小这个值,如果增加了内存之后,更应该增加这个值。
_max_syn_backlog = 262144
记录的是那些尚未收到客户端确认信息的连接请求的最大值。对于有 128M
内存的系统而言,缺省值是 1024,小内存的系统则是 128。
_max_tw_buckets = 6000
表示系统同时保持 TIME_WAIT 套接字的最大数量,默认是 180000。
_mem = 94500000 915000000 927000000
确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是
4KB):
第一个值是内存使用的下限。
第二个值是内存压力模式开始对缓冲区使用应用压力的上限。
第三个值是内存上限。在这个层次上可以将报文丢弃,从而减少对内存的
使用。对于较大的 BDP 可以增大这些值(但是要记住,其单位是内存页,而不
是字节)。
_sack = 1
启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文
来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选
项应该启用,但是会增加对CPU的占用。
_synack_retries = 1
为了打开对端的连接,内核需要发送一个 SYN 并附带一个回应前面一个
SYN 的 ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃
连接之前发送 SYN+ACK 包的数量。
_syncookies = 1
开启 SYN 洪水攻击保护。
_syn_retries = 1
在内核放弃建立连接之前发送 SYN 包的数量。
_TImestamps = 0
该参数用于设置时间戳,可以避免序列号的卷绕。一个1Gbps的链路肯定
会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。设
置为 0 表示将其关掉。
_tw_recycle = 0
是否开启 TCP 连接中 TIME-WAIT sockets 的快速回收,0 表示关闭,1
表示开启。当 tcp_tw_recycle 与 tcp_timestamp 同时开启时会降低连接成功
率。
_tw_reuse = 1
是否开启重用,允许将 TIME-WAIT sockets 重新用于新的 TCP 连接,0
表示关闭,1 表示开启。
_window_scaling = 1
启用 RFC 1323 定义的 window scaling,要支持超过 64KB 的 TCP 窗
口,必须启用该值(1表示启用),TCP窗口最大至 1GB,TCP 连接双方都启用
时才生效。
e_ipv6 = 1、
e_ipv6 = 1
禁用 IPv6
linux内核的功能有哪些
内核主要有以下4能:系统内存管理;软件程序管理;硬件管理;文件系统管
理;
(1)系统内存管理
内存管理是操作系统内核的主要功能之一。内核不仅能管理可用的物理内
存,还可以创建并管理虚拟内存。
内存管理必须使用硬盘空间,该空间被称为交换空间。内核不断的在该交
换空间和实际物理内存之间交换虚拟内存位置的内容。这样系统的可用内存比
实际内存多。
将内存位置分组为多个数据块,此操作被称为分页。内核定位物理内存或
交换空间中的每个内存分页,然后维护一个内存分页页表,此表说明位于物理
内存的分页和交换到磁盘的分页。内存跟踪使用的分页,并且自动将一段时间
没有用到的内存分页复制到交换空间区域,称为换出过程。即使内存够也执行
这个过程。当程序需要访问已经换出的分页时,内存必须换出另一个分页,以
在物理内存中为该内存分页腾出空间,然后从交换空间换入需要的分页。
在Linux系统上运行的每个进程都有自己的内存分页,一个进程不能访问
另一个进程正在使用的分页。内核也有自己的内存区域,出于安全考虑,任何
进程都不能访问内核进程正在使用的内存。
(2)软件程序管理
正在运行的程序被称为进程。进程可以在前台运行,也可以在后台运行。
内核创建的第一个进程被称为初始进程,该进程在系统上启动所有其它进
程。内核启动的时候,初始进程被加载到虚拟内存中,内存每启动一个其它进
程,都将在虚拟内存中为其分配一个唯一的空间,用于储存该进程的数据和代
码。
(3)硬件管理
Linux系统需要与之通信的设备都必须在内核代码中插入驱动程序代码。
驱动程序代码使内核能够向设备传输数据。在Linux中插入设备驱动的程序有
两种方法:
1.在内核中编译驱动程序。
2.向内核添加驱动程序模块。
Linux将硬件设备标识为特殊文件,称为设备文件。设备文件分为3种:
1.字符
2.块
3.网络
字符设备文件用于那些一次仅处理一个字符的设备。块文件用于那些一次
可处理大量数据块的设备。网络文件用于那些使用数据包发送和接收数据的设
备。
(4)文件系统管理
Linux系统可以使用不同类型的文件系统与硬盘传输数据。除了本身的文
件系统外,还可以通过其他的操作系统使用的文件系统传输数据。Linux内核
使用虚拟文件系统与每个文件系统进行连接。为内核与其他文件系统类型的通
信提供了一个标准接口,挂载和使用每个文件系统时。虚拟文件系统中缓存相
关的信息。
以上的内容你了解了吗?
版权声明:本文标题:Linux操作系统修改内核参数的三种方法详细说明 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1735201190a1641812.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论