在安装 ORACLE 之前,我必须设置一些内核参数,例如
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
我已经搜索过它们是什么,但很难理解。
例如,我可以获得 的信息kernel.shmmni
,即最大段数。这很容易,但我不明白什么意思kernel.sem
以及net.core
为什么需要它们。
有人可以解释一下这些参数的含义吗?
这些参数都根据它们影响系统的哪个部分来加上前缀。
fs
=文件系统,net
=网络等。kernel.shmmni = 4096
这设置了系统范围内共享内存段的最大数量。在高层次上,共享内存段是多个进程可以同时附加到的一块内存。您可以使用命令查看 Linux 机器上所有当前的共享内存段ipcs -m
。kernel.sem = 250 32000 100 128
配置信号量。最好将信号量描述为:此链接 解释了如何使用信号量以及实际设置的 4 个不同值。
fs.file-max = 6815744
设置在任何给定时间点可以在系统范围内打开的最大文件数。一旦达到限制,尝试打开另一个文件将失败。fs.aio-max-nr = 1048576
是(为了这个答案而简化)可以在任何时间点进行的并发文件读/写操作的最大数量。net.ipv4.ip_local_port_range = 9000 65500
是用于传出连接的 IP 端口范围。因此,当进程打开与外界的连接时,它将使用 9000 到 65500 之间的端口。这解释了端口是什么。以下是网络参数,基本上控制了任意时间点可以传输多少网络数据。
net.core.rmem_default = 262144
是所有类型连接的默认操作系统接收缓冲区大小。net.core.rmem_max = 4194304
是所有类型连接的最大操作系统接收缓冲区大小。net.core.wmem_default = 262144
是所有类型连接的默认操作系统发送缓冲区大小。net.core.wmem_max = 1048576
是所有类型连接的最大操作系统发送缓冲区大小。如果您已经了解操作系统如何工作的基础知识,那么您也可以理解这些参数,不用担心。关于您的具体问题:
kernel.sem指的是什么是Semaphore:
net.core与网络栈有关。例如:
您可以在以下参考资料中获得更多信息:
- Oracle Linux 内核参数
- 优化的网络设置
- Sysctl 调整