linux open files 达到上限了怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux open files 达到上限了怎么办相关的知识,希望对你有一定的参考价值。

参考技术A 在数据库服务器上运行 sqlplus system/password@xe (其中 system 是数据库用户无需改变;password 是数据库密码应指定为实际密码;xe 是数据库实例名称) ,然后执行:查看一下数据库现有的进程数,是否已经达到参数processes的大小。1.select count(*) from v$process;取得数据库目前的进程数。2.select value from v$parameter where name = 'processes';取得进程数的上限。alter system set session_cached_cursors=200 scope=spfile;alter system set session_max_open_files=200 scope=spfile;alter system set sessions=20 scope=spfile;alter system set license_max_sessions=200 scope=spfile;alter system set license_sessions_warning=200 scope=spfile;alter system set processes=200 scope=spfile;执行后,重启 Oracle XE 数据库实例即可。要重启 Oracle XE 数据库实例:1. 如安装于 Windows 上,先运行 net stop oracleservicexe,再运行 net start oracleservicexe 即可。也可通过“服务”管理控制台重启 OracleServiceXE 服务。2. 如安装于 Linux 上,先运行 /etc/init.d/oracle-xe start,再运行 /etc/init.d/oracle-xe stop 即可。

Linux server上too many open files问题

之前测试遇到了"too many open files"的问题。ulimit -Hn 查了下发现server上最大open file数是4096。写了个简单的脚本检测发现进程创建的fd个数在不断增加,8分钟之后达到上限然后程序报错,其中绝大部分fd都是关于socket的。

 

在server上安装lsof查看当前进程打开文件,并定位出现频率最高的通信主机和端口。最后发现是一个Java程序bug,每两秒执行一次的方法会不断创建新的httpclient。修正bug后进程创建的fd数稳定在24。

 

lsof -i -a -p $PID 可以列出进程打开的所有network files。所用的简单检测脚本为

#!/bin/bash

cd /proc/$(ps -ef | grep appName | grep -v grep | awk {print $2})/fd

while true

do

ls -l | grep socket | wc -l

sleep 5

done 

 

 

以上是关于linux open files 达到上限了怎么办的主要内容,如果未能解决你的问题,请参考以下文章

Linux server上too many open files问题

打开的文件过多 Too many open files问题分析及解决方案

linux too many files

LINUX对硬件支持有上限么?最大多少内存?多大硬盘容量

Too many open files的四种解决办法

监控总是显示数据库连接达到上限怎么回事