導航:首頁 > 操作系統 > 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關閉句柄相關的資料

熱點內容
正版我的世界如何進伺服器地址 瀏覽:658
雲文檔怎樣加密 瀏覽:294
ip協議的遠程登錄命令 瀏覽:286
阿里雲伺服器可以幫別人備案嗎 瀏覽:391
臟數據java 瀏覽:290
游戲解壓怎麼設置 瀏覽:782
會聲會影如何壓縮視頻 瀏覽:57
閱讀app小說怎麼轉換成txt 瀏覽:65
c語言編程數字變時間 瀏覽:655
迷你編程第五天初級寶箱怎麼弄 瀏覽:839
刺激體驗服如何更新伺服器 瀏覽:934
怎麼把照片做成新的文件夾 瀏覽:466
安卓手機沒有聲音均衡器怎麼辦 瀏覽:506
吃雞國際服為什麼會伺服器匆忙 瀏覽:248
微信中如何打開定位伺服器 瀏覽:203
java並發編程書籍 瀏覽:280
android601源碼 瀏覽:788
程序員離職了還能幹嘛 瀏覽:156
少林功法pdf 瀏覽:471
安卓80版本小游戲怎麼玩 瀏覽:632