linux的kernel参数是,linux kernel.shmall shemax shemin参数详解

linux kernel.shmall shemax shemin参数详解 (转)

Linux X86-64操作系统,Oracle

10g数据库,由8G加到16G,把kernel.shmmax参数改到17179869184(16G)后,发现只要修改sga_max_size和sga_target参数到超过8G,Oracle就会报内存不够无法启动,检查另外两个共享内存参数相关参数:kernel.shmall和kernel.shmmni,kernel.shmall参数是控制共享内存页数,kernel.shmmni参数是控制共享内存段总数,目前的参数值是4096,足够大了,那么问题应该是出在kernel.shmall上,用8589934592(8G)除以当前的参数值2097152,结果是4096,说明页大小是4K,现在要把SGA调到大于8G,就要调大kernel.shmall参数,调整到当前值的2倍(4194304)后,就可以成功地将sga设置到13G了。

对于32位系统,一页=4k,也就是4096字节。

kernel.shmall = 2097152 就是 2097152*4k/1024/1024 = 8G 就是说可用共享内存一共 8G

上面shmmax = 2G

512 32000 100 100 >/proc/sys/kernel/sem

分别是指什么

SEMMSL(每个用户拥有信号量最大数量),SEMMNS(系统信号量最大数量),SEMOPM(每次semop系统调用操作数),SEMMNI(系统信号量集最大数量)

REDHAT AS4 kernel.sem设置参考

在安装oracle

之前通常需要设置kernel.sem这个参数,下面对些作简单介绍

sem其实是semaphores的缩写,查看当前设置

[oracle@ebsse

oracle]$ cat /proc/sys/kernel/sem

250 32000 100 128

4个数据分别对应

SEMMSL

SEMMNS SEMOPM SEMMNI

如当oracle

DB初始化参数文件中PROCESSES参数设置较大时,需要调整SEMAPHORES设置

SEMMSL应该设置为服务器中各个实例中最大的PROCESSES参数+10,例如,当最大的PROCESSES参数为5000时,SEMMSL应设置为5010。

SEMMNS参数应设置为SEMMSL*SEMMNI,接上例SEMMSL为5010,SEMMNS参数应为(5010*128)=641280。

SEMOPM参数应设置与SEMMSL参数相同,接上例此处应设置为5010

更改当前SEMAPHORES参数设置:

[oracle@ebsse

oracle]$ su

Password:

[root@ebsse oracle]# echo "5010 641280 5010 128"

> /proc/sys/kernel/sem

[root@ebsse oracle]# cat

/proc/sys/kernel/sem

5010 641280 5010

128

如需启动时自动应用,可在/etc/sysctl.conf增加:

kernel.sem =5010 641280 5010 128

注解:

在postgresql中 启动时出现如下错误

FATAL: could not create semaphores: No space left on device

DETAIL: Failed

system call was semget(5831001, 17, 03600).

HINT: This error does *not* mean

that you have run out of disk space.

It occurs when either the system limit

for the maximum number of semaphore sets (SEMMNI), or the system wide maximum

number of semaphores (SEMMNS), would be exceeded. You need to raise the

respective kernel parameter. Alternatively, reduce PostgreSQL's consumption of

semaphores by reducing its max_connections parameter (currently 23).

The

PostgreSQL documentation contains more information about configuring your system

for PostgreSQL.

用上面的参数并不凑效,修改为如下后可以成功启动

# echo "2500 640000 2500 256" > /proc/sys/kernel/sem

由于这个机器安装的的数据库实例很多,重新调整为

echo "10000 10240000 10000 1024" > /proc/sys/kernel/sem

----------------------------------------------------------------------------------------------------------------------------------------

kernel.shmall = 2097152 # 可以使用的共享内存的总量。

kernel.shmmax = 2147483648 #

最大共享内存段大小。取物理内存大小的一半,单位为字节

kernel.shmmni = 4096 #

整个系统共享内存段的最大数目。

kernel.sem = 250 32000 100 128 #

每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操作数;系统范围内最大信号对象集数。

fs.file-max =

65536 # 系统中所允许的文件句柄最大数目。

net.ipv4.ip_local_port_range = 1024 65000 #

应用程序可使用的IPv4端口范围。

net.core.rmem_default = 1048576 #

套接字接收缓冲区大小的缺省值

net.core.rmem_max = 1048576 #

套接字接收缓冲区大小的最大值

net.core.wmem_default = 262144 #

套接字发送缓冲区大小的缺省值

net.core.wmem_max = 262144 # 套接字发送缓冲区大小的最大值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值