修改 /etc/sysctl.conf 文件之后,执行命令 # sysctl -p 立刻生效
1、kernel.shmmax
用于定义单个共享内存段的最大值
shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会
导致需要创建多个共享内存段,这样可能导致系统性能的下降。
2、kernel.shmall
控制共享内存页数。Linux 共享内存页大小为4KB, 共享内存段的大小都是共享内存页大小的整数倍。
例如:一个共享内存段的最大大小是16G,那么需要共享内存页数是 16GB/4KB=16777216KB/4KB=4194304 (页),也就是64Bit 系统下16GB 物理内存,设置 kernel.shmall = 4194304 才符合要求(几乎是原来设置2097152
的两倍)。这时可以将shmmax 参数调整到 16G 了,同时可以修改SGA_MAX_SIZE 和SGA_TARGET 为 12G(您想设置的SGA 最大大小,当然也可以是2G~14G 等,还要协调PGA参数及OS等其他内存使用,不能设置太满,比如16G)。
3、kernel.shmmni
是共享内存段的最大数量(注意这个参数不是 shmmin,是shmmni, shmmin 表示内存段最小大小 ) 。shmmni 缺省值4096 ,一般肯定是够用了。
参考:http://blog.zol.com.cn/1084/article_1083499.html
4、kernel.sem
是semaphores的缩写,
查看当前设置
# cat /proc/sys/kernel/sem
250 32000 100 128
4个数据分别对应
SEMMSL 250 表示每个信号集中的最大信号量数目
SEMMNS 32000 表示系统范围内的最大信号量总数目
SEMOPM 100 表示每个信号发生时的最大系统操作数目
SEMMNI 128 表示系统范围内的最大信号集总数目
如当oracle DB初始化参数文件中PROCESSES参数设置较大时,需要调整SEMAPHORES设置
SEMMSL,应该设置为服务器中各个实例中最大的PROCESSES参数+10,例如,当最大的PROCESSES参数为5000时,SEMMSL应
设置为5010。
SEMMNS,参数应设置为SEMMSL*SEMMNI,接上例SEMMSL为5010,SEMMNS参数应为(5010*128)=641280。
SEMOPM,参数应设置与SEMMSL参数相同,接上例此处应设置为5010
更改当前SEMAPHORES参数设置:
# echo "5010 641280 5010 128" > /proc/sys/kernel/sem
# cat /proc/sys/kernel/sem
5010 641280 5010 128
如需启动时自动应用,可在/etc/sysctl.conf增加:
kernel.sem =5010 641280 5010 128
参考:http://www.cnscn.org/htm_data/20/0905/47739.html
5、fs.file-max
可以分配的文件句柄的最大数目(文件系统最大可打开文件数)
6、net.ipv4.ip_local_port_range
表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
7、net.core.rmem_default和net.core.rmem_max
默认和最大的TCP数据接收缓冲
8、net.core.wmem_default和net.core.wmem_max
默认和最大的TCP数据发送缓冲