linux下内核参数,Linux 内核参数

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_pid = 1

​ core_uses_pid 可以控制 core 文件的文件名中是否添加 pid 作为扩展名。设置为1,表示添加 pid 作为扩展名,生成的 core 文件格式为 core.xxx;设置为0(默认),表示生成的 core 文件统一命名为 core。

kernel.core_pattern = core

​ core_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 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 添加命令名

kernel.msgmax = 8192

​ 进程间的消息传递是在内核的内存中进行的。msgmax 指定了消息队列中消息的最大值。(65536B=64KB)

kernel.msgmnb = 16384

​ msgmnb 规定了一个消息队列的最大值,即一个消息队列的容量。msgmnb 控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是 16G,那么需要共享内存页数是16GB / 4KB = 16777216KB / 4KB = 4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求。

kernel.shmall = 1048576

​ 表示在任何给定时刻,系统上可以使用的共享内存的总量(bytes)。

kernel.shmmax = 4294967295

​ 表示内核所允许的最大共享内存段的大小(bytes)。用于定义单个共享内存段的最大值,64位 linux 系统,可取的最大值为物理内存值 - 1byte,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte。例如,如果为64GB物理内存,可取64 * 1024 * 1024 * 1024 - 1 = 68719476735。

​ 实际可用最大共享内存段大小=shmmax * 98%,其中大约2%用于共享内存结构。可以通过设置 shmmax,然后执行ipcs -l来验证。

kernel.sysrq = 0

​ 控制系统调试内核的功能,不同的值对应不同的功能:

0 完全禁用 sysrq 组合键

1 启用 sysrq 组合键的全部功能

2 启用控制台日志级别控制

4 启用键盘控制(SAK、unraw)

8 启用进程的调试信息输出等

16 启用同步命令

32 启用重新挂载为只读

64 启用进程信号(终止、杀死、溢出杀死)

128 允许重启/关机

256 控制实时任务的优先级控制(nicing)

net.core.netdev_max_backlog = 262144

​ 表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目。

net.core.rmem_default = 8388608

​ 为 TCP socket 预留用于接收缓冲的内存默认值。

net.core.rmem_max = 16777216

​ 为 TCP socket 预留用于接收缓冲的内存最大值。

net.core.somaxconn = 128

​ listen(函数)的默认参数,挂起请求的最大数量限制。web 应用中 listen 函数的 backlog 默认会给我们内核参数的 net.core.somaxconn 限制到128。nginx 服务器中定义的 NGX_LISTEN_BACKLOG 默认为511。

net.core.wmem_default = 8388608

​ 为 TCP socket 预留用于发送缓冲的内存默认值。

net.core.wmem_max= 16777216

​ 为 TCP socket 预留用于发送缓冲的内存最大值。

net.ipv4.conf.all.accept_source_route = 0、net.ipv4.conf.default.accept_source_route = 0

​ 处理无源路由的包。

net.ipv4.conf.all.rp_filter = 1、net.ipv4.conf.default.rp_filter = 1

​ 开启反向路径过滤

net.ipv4.conf.all.send_redirects = 0、v4.conf.default.send_redirects = 0

net.ipv4.icmp_echo_ignore_broadcasts = 1

net.ipv4.icmp_ignore_bogus_error_responses = 1

net.ipv4.ip_forward = 0

net.ipv4.ip_local_port_range = 1024 65535

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_max_orphans = 3276800

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_sack = 1

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_tw_recycle = 0

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_window_scaling = 1

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

------------恢复内容结束------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值