OracleLinux的MTU问题
问题描述
近期有两次出现
OS system dependent operation:sendmsgfailed with status: 105
OS failure message: No buffer spaceavailable
的问题。
具体报错:
ORA-00603: Oracle server session terminatedby fatal error
ORA-27504: IPC error creating OSD context
ORA-27300: OS system dependentoperation:sendmsg failed with status: 105
ORA-27301: OS failure message: No bufferspace available
ORA-27302: failure occurred at: sskgxpsnd2
问题共性
在其他集群中又出现了同样的问题。
经过排查,和上一次的故障内容相似。
1、 主机操作系统都是Oraclelinux
2、 都是在内存使用紧张的时候,出现进程无法正常工作,根本原因为OS failure message: No buffer space available。
3、 主机loopback 网卡的MTU 都是65536。
来自官方的回复
On servers with High Physical Memory, the parameter vm.min_free_kbytes should be set in the order of 0.4% of total Physical Memory.
This helps in keeping a larger range of de-fragmented memory pages available for network buffers reducing the probability of a low-bu
ffer-space conditions
需知
注意上面的共性。
1、 oracle Linux
2、 lo MTU=65536
3、 内存资源紧张
4、 修改lo MTU的值后,进程启动正常
现在发现的两例状况是Oracle linux,lo MTU=65536,Oracle RAC。但是单机数据库,或者应用服务器在内存资源紧张的时候,如果调用了系统的
sendmsg()也可能出现同样的问题。所以,每一个Oracle Linux都需要看一下本机的loopback 网卡的MTU值。
那么需要做的事情如下:
1、 查看自己拥有的OracleLinux的服务器
2、 查看loopback 网卡的MTU值
3、 修改loopback 网卡的MTU值(当前生效),以及ifcfg文件(重启生效)。无需servicenetwork restart
4、 修改/etc/sysctl.conf文件,增加vm.min_free_kbytes参数,值为物理内存的0.4%。(例如8g内存,vm.min_free_kbytes=8*1024*1024*0.004=33554)。如官方文档所示增加此参数可以减少问题出现的概率。
修改方法
ifconfig lo mtu 16436
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1636660 errors:0 dropped:0 overruns:0 frame:0
TX packets:1636660 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1676007844 (1.5 GiB) TX bytes:1676007844 (1.5 GiB)
vi /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
# If you're having problems with gatedmaking 127.0.0.0/8 a martian,
# you can change this to something else(255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
MTU=16436--------------------------最重要
问题描述
近期有两次出现
OS system dependent operation:sendmsgfailed with status: 105
OS failure message: No buffer spaceavailable
的问题。
具体报错:
ORA-00603: Oracle server session terminatedby fatal error
ORA-27504: IPC error creating OSD context
ORA-27300: OS system dependentoperation:sendmsg failed with status: 105
ORA-27301: OS failure message: No bufferspace available
ORA-27302: failure occurred at: sskgxpsnd2
问题共性
在其他集群中又出现了同样的问题。
经过排查,和上一次的故障内容相似。
1、 主机操作系统都是Oraclelinux
2、 都是在内存使用紧张的时候,出现进程无法正常工作,根本原因为OS failure message: No buffer space available。
3、 主机loopback 网卡的MTU 都是65536。
来自官方的回复
On servers with High Physical Memory, the parameter vm.min_free_kbytes should be set in the order of 0.4% of total Physical Memory.
This helps in keeping a larger range of de-fragmented memory pages available for network buffers reducing the probability of a low-bu
ffer-space conditions
需知
注意上面的共性。
1、 oracle Linux
2、 lo MTU=65536
3、 内存资源紧张
4、 修改lo MTU的值后,进程启动正常
现在发现的两例状况是Oracle linux,lo MTU=65536,Oracle RAC。但是单机数据库,或者应用服务器在内存资源紧张的时候,如果调用了系统的
sendmsg()也可能出现同样的问题。所以,每一个Oracle Linux都需要看一下本机的loopback 网卡的MTU值。
那么需要做的事情如下:
1、 查看自己拥有的OracleLinux的服务器
2、 查看loopback 网卡的MTU值
3、 修改loopback 网卡的MTU值(当前生效),以及ifcfg文件(重启生效)。无需servicenetwork restart
4、 修改/etc/sysctl.conf文件,增加vm.min_free_kbytes参数,值为物理内存的0.4%。(例如8g内存,vm.min_free_kbytes=8*1024*1024*0.004=33554)。如官方文档所示增加此参数可以减少问题出现的概率。
修改方法
ifconfig lo mtu 16436
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1636660 errors:0 dropped:0 overruns:0 frame:0
TX packets:1636660 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1676007844 (1.5 GiB) TX bytes:1676007844 (1.5 GiB)
vi /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
# If you're having problems with gatedmaking 127.0.0.0/8 a martian,
# you can change this to something else(255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
MTU=16436--------------------------最重要