导航:首页 > 操作系统 > linux关闭句柄

linux关闭句柄

发布时间:2023-04-19 17:09:54

linux 文件句柄数高怎么解决

打开文件做文件操作后请及时释放文件句柄。
检查一下有哪些文件操作,哪些操作完成后没有释放文件句柄。

㈡ linux高并发http调用接口句柄不释放

题主是否想询问“linux高并发http调用接口句柄不释放的解决办法”。册租
1、设置连接超时时间:可以设置合理的连接超时时间,例如5秒或者10秒等,超过这州李兆个时间就主动断开连扰袭接并释放句柄,避免长时间占用资源。
2、增加进程限制:可以通过修改系统参数,增加进程可使用的文件句柄数量限制,使程序能够处理更多的并发请求。可以通过ulimit命令或者修改/etc/security/limits.conf文件来实现。

㈢ linux中文件句柄未释放,会导致什么问题

linux删除文件后没有释放空间

今天发现一台服务器的home空间满了,于是要清空没用的文件,当我删除文件后,发现可用空间没有变化

os:centos4.7

现象:

发现当前磁盘空间使用情况:

[root@ticketb ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 981M 203M 729M 22% /
none 16G 0 16G 0% /dev/shm
/dev/sda9 2.9G 37M 2.7G 2% /tmp
/dev/sda7 4.9G 1.9G 2.7G 42% /usr
/dev/sda8 2.9G 145M 2.6G 6% /var
/dev/mapper/vghome-lvhome
20G 19G 11M 100% /home
/dev/mapper/vgoradata-lvoradata
144G 48G 90G 35% /u01/oradata
/dev/mapper/vgbackup-lvbackup
193G 7.8G 175G 5% /u01/backup

通过以下的命令找到没用的文件,然后删除

[root@ticketb ~]# find /home/oracle/admin/dbticb/ump/ -name "dbticb_*.trc" -mtime +50 | xargs rm -rf

然后在查看磁盘空间使用情况,发现没有/home空间没有变化

[root@ticketb ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 981M 203M 729M 22% /
none 16G 0 16G 0% /dev/shm
/dev/sda9 2.9G 37M 2.7G 2% /tmp
/dev/sda7 4.9G 1.9G 2.7G 42% /usr
/dev/sda8 2.9G 145M 2.6G 6% /var
/dev/mapper/vghome-lvhome
20G 19G 11M 100% /home
/dev/mapper/vgoradata-lvoradata
144G 48G 90G 35% /u01/oradata
/dev/mapper/vgbackup-lvbackup
193G 7.8G 175G 5% /u01/backup

这个郁闷啊,明明删除文件了,怎么空间没有被释放啊,rm命令应该是直接删除啊,在查看下/home下还有什么占用空间

[root@ticketb ~]# -h --max-depth=1 /home
16K /home/lost+found
2.6G /home/oracle
2.6G /home

可这里显示空间已经释放了啊,于是google下,

未释放磁盘空间原因:

在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的文件夹结构上解除链接(unlink).然而假设文件是被
打开的(有一个进程正在使用),那么进程将仍然能够读取该文件,磁盘空间也一直被占用。而我删除的是oracle的告警log文件
删除的时候文件应该正在被使用

解决方法

首先获得一个已经被删除可是仍然被应用程序占用的文件列表,例如以下所看到的:

[root@ticketb ~]# lsof |grep deleted
oracle 12639 oracle 5w REG 253,0 648 215907 /home/oracle/admin/dbticb/ump/dbticb_ora_12637.trc (deleted)
oracle 12639 oracle 6w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bmp/alert_dbticb.log (deleted)
oracle 12639 oracle 7u REG 253,0 0 36282 /home/oracle/oracle/proct/10.2.0/db_1/dbs/lkinstdbticb (deleted)
oracle 12639 oracle 8w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bmp/alert_dbticb.log (deleted)
oracle 12641 oracle 5w REG 253,0 648 215907 /home/oracle/admin/dbticb/ump/dbticb_ora_12637.trc (deleted)
oracle 12641 oracle 6w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bmp/alert_dbticb.log (deleted)



oracle 23492 oracle 6w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bmp/alert_dbticb.log (deleted)
oracle 23492 oracle 7u REG 253,0 0 36282 /home/oracle/oracle/proct/10.2.0/db_1/dbs/lkinstdbticb (deleted)
oracle 23492 oracle 8w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bmp/alert_dbticb.log (deleted)
oracle 23494 oracle 10u REG 253,0 0 36307 /home/oracle/oracle/proct/10.2.0/db_1/dbs/lkinstrmandb (deleted)

从输出结果能够看到/home/oracle/admin/dbticb/bmp/alert_dbticb.log还被使用,未被释放空间

怎样让进程释放呢?

一种方法是kill掉相应的进程,或者停掉使用这个文件的应用,让os自己主动回收磁盘空间
我这个环境有非常多进程在使用的这个文件,停掉进程有点麻烦,再有就是风险非常大

当linux打开一个文件的时候,Linux内核会为每个进程在/proc/ ‘/proc/nnnn/fd/文件夹(nnnn为pid)’建立一个以其pid
为名的文件夹用来保存进程的相关信息,而其子文件夹fd保存的是该进程打开的全部文件的fd(fd:file descriptor)。
kill进程是通过截断proc文件系统中的文件能够强制要求系统回收分配给正在使用的的文件。
这是一项高级技术,仅到管理员确定不会对执行中的进程造成影响时使用。应用程序对这样的方
式支持的并不好,当一个正在使用的文件被截断可能会引发不可预知的问题

所以我还是采用停应用来解决

restart oracle数据库,发现/home/oracle/admin/dbticb/bmp/alert_dbticb.log相应的空间被释放

在查看磁盘空间的使用情况,发现空间已经回收了

[root@ticketb ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 981M 203M 729M 22% /
none 16G 0 16G 0% /dev/shm
/dev/sda9 2.9G 37M 2.7G 2% /tmp
/dev/sda7 4.9G 1.9G 2.7G 42% /usr
/dev/sda8 2.9G 145M 2.6G 6% /var
/dev/mapper/vghome-lvhome
20G 2.6G 16G 15% /home
/dev/mapper/vgoradata-lvoradata
144G 48G 90G 35% /u01/oradata
/dev/mapper/vgbackup-lvbackup
193G 7.8G 175G 5% /u01/backup

ok,问题解决,然后做下收尾工作就可以

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

学习下lsof命令

lsof全名list opened files,也就是列举系统中已经被打开的文件。我们都知道,linux环境中,不论什么事物都是文件,
设备是文件,文件夹是文件,甚至sockets也是文件。所以,用好lsof命令,对日常的linux管理非常有帮助。

lsof是linux最常常使用的命令之中的一个,通常的输出格式为:

引用
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

㈣ Linux之文件句柄

ulimit:


1,查看进程允许打开的最大文件句柄数


ulimit -n


2,设置进程能打开的最大文件句柄数


ulimit -n xxx


-H 指定资源的硬限制


-S 指定资源的软限制


hard 代表当前硬限制


soft 代表当前软件限制


unlimited 代表不限制.


3, 文件限制配置文件


/etc/security/limits.conf



4,文件句柄最大数据配置


配置文件:/proc/sys/fs/file-max


这个参数的默认值和内存大小有氏谈早关系,可以使用公式:file-max 内存大小/ 10k.


4.1 建议将整个系统的文件句柄值至少设置为 65536


4.2 echo "65536" > /proc/sys/fs/file-max


4.3 sysctl -w fs.file-max=65536


4.4 echo "fs.file-max=65536" >> /etc/sysctl.conf



5,文件句柄使用情况配置文件:/proc/sys/fs/file-nr



这三个值分别指:系统已经分配出去的句柄数、已经分配但是还没有使用的句柄数以及系统最大的句柄数歼雀(和file-max一侍滚样)。


6,查看进程打开的文件句柄数


lsof:列出当前系统打开文件的工具。


㈤ 文件句柄数是什么东东怎样才能把Linux的文件句柄数给消耗完(不修改文件)或者说有什么工具模拟消耗

文件句柄那是windows的东西吧, linux下一般叫做文件描述符(File Descriptor), 使用ulimit -n可查看这个最大打开文件数限制. 只要你多次调用fopen,并且不调用fclose,很快就可以把它消耗完.不过这是对单个程序的限制.

㈥ linux socket 文件句柄是全局的吗

不是。
在文件I/O中,要从敬丛一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开明稿乱文件。该函数取回一个顺序号,即文件句柄(filehandle),该文件句柄对于打开的文件是唯一的识别依据。要从文件中读取一块数据,应用程激档序需要调用函数ReadFile,并将文件句柄在内存中的地址和要拷贝的字节数传送给操作系统。当完成任务后,再通过调用系统函数来关闭该文件。

㈦ Linux系统上文件已删除句柄已释放空间未释放是什么原因

在Linux系统上,如果一个文件已经被删除,但是该文件的句柄仍然被某个进程所持有,那么这个文件的空间不会被立即释放。这是因为在Linux系统中消腊,文件的删除并不是真正的删除,而是将文件的链接数减少1。只有当文件的链接数为0时,文件的空间才会被释放。
当一个进程打开一个文件时,内核会为该进程分配拿缓滑一个文件句柄,该句柄包含了文件的元数据信息和文件的位哪梁置信息等。当进程关闭该文件时,内核会释放该文件句柄,并将文件的链接数减少1。如果该文件的链接数为0,那么该文件的空间会被释放。
但是,如果一个进程打开了一个文件,并且在该文件被删除之前一直持有该文件的句柄,那么该文件的链接数不会减少,文件的空间也不会被释放。这种情况下,文件的空间只有在该进程关闭该文件句柄时才会被释放。
因此,如果一个文件已经被删除,但是该文件的句柄仍然被某个进程所持有,那么该文件的空间不会被立即释放。只有当该进程关闭该文件句柄时,文件的空间才会被释放。

㈧ linux 文件句柄 是哪个线程打开

我想可能是这两个原因造成的: 1:你在线程中打开句柄后又关闭,那么在后面线程创建句柄时因为之前这个使用的句柄已经释放,则后面线程可以继续使用。 2:没有加线程锁的原因,前一个线程打开文件创建句柄时后一个线程也已经启动并同时创建句柄...

㈨ linux 重复关闭句柄会有什么问题

首先确弊蠢定此java程序的PID,pidof java 然后去到/proc/`pidof java`/fd目录,wc -l看歼歼看打氏卜冲开的文件句柄数。

㈩ linux文件句柄数限制

一、修改文件句柄数限制,使用/etc/security/limits.conf文件
添加一下内容,表示paas用户可以打开文件数为65535
paas soft nofile 65535
paas hard nofile 65535

1.可以不指定paas用户,直接使用*,表示所有用户
2.可以不指定soft hard ,直接使用-表示所有
3.nofile表示可以打开的文件句柄数,nproc表示可以打开的进程数(包括线程,线庆薯程属于轻量级进程)

二、修改用户可以羡碧打开的进程数,使用/誉派者etc/security/limits.conf
添加以下内容:

对于普通用户,优先级更高的是
/etc/security/limits.d/20-nproc.conf(低版本系统,如centos6)
/etc/security/limits.d/90-nproc.conf(高版本系统,如centos7)

阅读全文

与linux关闭句柄相关的资料

热点内容
html5即时通讯源码 浏览:142
python编程基础豆瓣 浏览:710
程序员乱码是什么意思 浏览:372
交友app怎么删除动态 浏览:92
男士穿衣哪个app好 浏览:38
如何把桌面软件改造成app 浏览:742
我的世界如何打开最近玩的服务器 浏览:386
程序员试用期汇报问题协助怎么写 浏览:129
抖音算法到底是什么 浏览:130
哪个vlan技术对报文加密 浏览:574
单片机定时电路 浏览:676
山西平台服务器云主机 浏览:704
按摩肚脐解压视频 浏览:993
php55安装教程 浏览:141
云服务器怎么查找本机域名 浏览:26
qd123y压缩机参数 浏览:389
程序员妈妈怀孕 浏览:492
金普国际编程 浏览:541
java什么是引用类型 浏览:948
这是命令吗txt 浏览:318