本文主要是介绍file-max设置过小导致oracle数据库hang住,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
服务器上ping报错ping: socket: Too many open files in system
[root@rac1 ~]# ping 192.168.238.254
ping: socket: Too many open files in system
正常情况下“Too many open files in system”报错都是open files参数设置过小导致。
root用户和oracle用户检查,配置正常,如下:
[oracle@rac1 ~]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 64054
max locked memory (kbytes, -l) 14788901
max memory size (kbytes, -m) unlimited
open files (-n) 65536 <===============配置正常
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) unlimited
cpu time (seconds, -t) unlimited
max user processes (-u) 16384
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
message日志报错:
Feb 1 20:53:50 rac1 systemd: Looping too fast. Throttling execution a little.
Feb 1 20:53:50 rac1 kernel: VFS: file-max limit 790770 reached
Feb 1 20:53:51 rac1 kernel: VFS: file-max limit 790770 reached
Feb 1 20:53:51 rac1 systemd: Looping too fast. Throttling execution a little.
Feb 1 20:53:52 rac1 kernel: VFS: file-max limit 790770 reached
Feb 1 20:53:52 rac1 kernel: VFS: file-max limit 790770 reached
Feb 1 20:53:53 rac1 systemd: Looping too fast. Throttling execution a little.
Feb 1 20:53:53 rac1 kernel: VFS: file-max limit 790770 reached
Feb 1 20:53:53 rac1 kernel: VFS: file-max limit 790770 reached
Feb 1 20:53:54 rac1 kernel: VFS: file-max limit 790770 reached
检查:
[root@rac1 ~]# sysctl -a | grep file-max
fs.file-max = 790770
[root@rac1 ~]# cat /proc/sys/fs/file-nr
2833920 0 790770
[root@rac1 ~]# cat /proc/sys/fs/file-nr
2838688 0 790770
[root@rac1 ~]# watch -n 1 cat /proc/sys/fs/file-nr
2993984 0 790770
当前打开的文件总数持续变大,超过了上限的默认值790770
修改fs.file-max值的大小:
sysctl -w fs.file-max = 6815744
或
vi /etc/sysctl.conf 增加
fs.file-max = 6815744
sysctl -p生效
修改后恢复正常,message异常告警消失。
另外:nr_open用于限制单个进程可以分配的最大文件打开数
cat /proc/sys/fs/nr_open
1048576
一个进程可以打开的文件数 < hard limit < nr_open,soft limit是告警值,可以超过这个值。
file-max操作系统对于文件打开数有一个全局的限制,可以通过/proc/sys/fs/file-max查看。
这篇关于file-max设置过小导致oracle数据库hang住的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!