国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux報(bào)too many open files的解決方案及 lsof、sysctl 命令介紹

這篇具有很好參考價(jià)值的文章主要介紹了Linux報(bào)too many open files的解決方案及 lsof、sysctl 命令介紹。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Too many open files in system 問(wèn)題處理

服務(wù)器異常:
一串的etc下的shell文件報(bào)
/etc/profile.d/bash_completion.sh: Too many open files in system

查看當(dāng)前操作系統(tǒng)允許打開的文件數(shù)

# 用戶級(jí)查看:
ulimit -n
# 系統(tǒng)級(jí)查看:
cat /proc/sys/fs/file-max

發(fā)現(xiàn)設(shè)置為655360,執(zhí)行l(wèi)sof|wc -l命令為871031,和設(shè)定的值還有很大差距,為什么還會(huì)報(bào)too many open files呢,突然想起還有一個(gè)地方設(shè)置最大文件數(shù)

使用命令

cat /proc/sys/fs/file-max
65536

這個(gè)時(shí)候大概知道為啥出現(xiàn)異常了

echo 655360 > /proc/sys/fs/file-max

直接增大一倍,這樣可以馬上生效,但是如果操作系統(tǒng)重啟,又會(huì)失效
如果需要永久生效,修改

vim /etc/sysctl.conf
fs.file-max = 655360
sysctl -p

修改文件句柄數(shù)方法:
1、用戶級(jí)修改

# 1、臨時(shí)生效方式
ulimit -SHn 65535
# -H:硬限制(就是實(shí)際真正的限制閾值),-S:軟限制(警告限制,它只會(huì)給出警告),
# 如果運(yùn)行ulimit命令沒(méi)有加-H和-S,就是兩個(gè)參數(shù)一起變,soft的限制不能比hard限制高。
# 2、永久生效方式
#(1)
vim /etc/security/limits.conf
#(2)添加如下配置:
# *號(hào)代表任何用戶,soft:軟限制,hard:硬限制
* hard nofile 655360 #任何用戶可以打開的最大句柄數(shù)(超過(guò)會(huì)報(bào)錯(cuò))
* soft nofile 655360 #任何用戶可以打開的最大句柄數(shù)(超過(guò)會(huì)警告)

* hard nproc 655360 #任何用戶可用的最大進(jìn)程數(shù)量(超過(guò)會(huì)報(bào)錯(cuò))
* soft nproc 655360 #任何用戶可用的最大進(jìn)程數(shù)量(超過(guò)會(huì)警告)
hxapp hard nofile 655360
hxapp soft nofile 655360
hxapp hard nproc 655360
hxapp soft nproc 655360
#(3)重啟服務(wù)器 
reboot
#(4)查看是否生效:
ulimit -a

2、系統(tǒng)級(jí)修改

# 1、臨時(shí)生效方式
vim /proc/sys/fs/file-max
# 2、永久生效方式
#(1)
vim /etc/sysctl.conf
#(2)
fs.file-max = 655360
#(3)
重啟服務(wù)器 reboot
#(4)
查看系統(tǒng)級(jí)文件句柄數(shù)是否生效 sudo sysctl -p

lsof 命令介紹

lsof 是 linux 下的一個(gè)非常實(shí)用的系統(tǒng)級(jí)的監(jiān)控、診斷工具。
它的意思是 List Open Files,很容易你就記住了它是 “l(fā)s + of”的組合,它可以用來(lái)列出被各種進(jìn)程打開的文件信息,記?。簂inux 下 “一切皆文件”,包括但不限于 pipes, sockets, directories, devices, 等等。
因此,使用 lsof,你可以獲取任何被打開文件的各種信息,只需輸入 lsof 就可以生成大量的信息,因?yàn)?lsof 需要訪問(wèn)核心內(nèi)存和各種文件,所以必須以 root 用戶的身份運(yùn)行它才能夠充分地發(fā)揮其功能。
適應(yīng)條件:lsof訪問(wèn)的是核心文件和各種文件,所以必須以root用戶的身份運(yùn)行才能充分發(fā)揮其功能。

lsof /path/to/file 找出誰(shuí)在使用某個(gè)文件

只需要執(zhí)行文件的絕對(duì)路徑,lsof就會(huì)列出所有使用這個(gè)文件的進(jìn)程,你也可以列出多個(gè)文件,lsof會(huì)列出所有使用這些文件的進(jìn)程。

lsof /home/hxapp/logs/onlApp/sys/ltts_slowSql.log
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
java    56255 hxapp  223w   REG  253,0    40218 3418082 /home/hxapp/logs/onlApp/sys/ltts_slowSql.log

COMMAND :進(jìn)程名稱
PID:進(jìn)程標(biāo)識(shí)符
USER:進(jìn)程所有者
FD:文件描述符,應(yīng)用程序通過(guò)文件描述符識(shí)別到該文件。如cwd、txt等
TYPE:文件類型,如DIR,REG
DEVICE:指定磁盤名稱
SIZE:文件大小
NODE:索引節(jié)點(diǎn)(文件在磁盤上的標(biāo)識(shí))
NAME:打開文件的確切名稱
補(bǔ)充:FD列中的文件描述cwd值表示應(yīng)用程序的當(dāng)前工作目錄,這是該程序啟動(dòng)的目錄,除非它本身對(duì)這個(gè)目錄進(jìn)行更改。txt類型的是程序代碼,如應(yīng)用程序二進(jìn)制文件本身或者共享庫(kù)。其次數(shù)值表示應(yīng)用程序的文件描述符,這是打開文件時(shí)一個(gè)返回的一個(gè)整數(shù)。

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
java    22266 hxapp  cwd       DIR              253,0        4096 1046562 /home/hxapp/logs/jobSrv2/sys
java    22266 hxapp  mem       REG              253,0       96221 1308284 /home/hxapp/frw/lib/2.4.17-RELEASE/third/commons-pool-1.5.4.jar
java    22266 hxapp    0r      CHR                1,3         0t0    1028 /dev/null
java    22266 hxapp    1u      REG              253,0       37168 1046570 /home/hxapp/logs/jobSrv2/sys/ltts-app.out
java    22266 hxapp    2u      REG              253,0       37168 1046570 /home/hxapp/logs/jobSrv2/sys/ltts-app.out
java    22266 hxapp    3w      REG              253,0      592700 1050251 /home/hxapp/logs/jobSrv2/sys/gc-jobSrv2.log2023-12-04
bash    85671 hxapp    0u      CHR              136,0         0t0       3 /dev/pts/0
bash    85671 hxapp    1u      CHR              136,0         0t0       3 /dev/pts/0
bash    85671 hxapp    2u      CHR              136,0         0t0       3 /dev/pts/0
java    22266 hxapp  241u     IPv6             112696         0t0     TCP cbsuatapp1:62313->3.1.11.8:ncube-lm (ESTABLISHED)
java    22266 hxapp  242u     IPv6              83345         0t0     TCP cbsuatapp1:62317->3.1.11.8:ncube-lm (ESTABLISHED)
lsof    86283 hxapp    4r     FIFO                0,9         0t0 1914234 pipe

其中u表示該文件被打開處于讀取\寫入模式,而不是只讀或只寫模式;r 只讀 ; w 只寫 ;W表示該應(yīng)用程序具有對(duì)整個(gè)文件的寫鎖(確保每次只能打開一次應(yīng)用程序?qū)嵗?。初始打開每個(gè)應(yīng)用程序時(shí),都具有三個(gè)文件描述符,從0到2,分別表示標(biāo)準(zhǔn)輸入、輸出和錯(cuò)誤流。因此,大多數(shù)應(yīng)用程序所打開的FD都是從3開始!
TYPE:REG、DIR、CHR、BLK、UNIX、FIFO、IPV

lsof -h 查看命令詳解

lsof 列出所有打開的文件

不帶任何參數(shù)運(yùn)行l(wèi)sof會(huì)列出所有進(jìn)程打開的所有文件

lsof +D /usr/lib 遞歸查找某個(gè)目錄中所有打開的文件

加上+D參數(shù),lsof會(huì)對(duì)指定目錄進(jìn)行遞歸查找,注意這個(gè)參數(shù)要比grep版本慢:

lsof -u pkrumins 列出某個(gè)用戶打開的所有文件

-u選項(xiàng)限定只列出所有被用戶pkrumins打開的文件,你可以通過(guò)逗號(hào)指定多個(gè)用戶

lsof -u gwds,esbagent

lsof -c apache 查找某個(gè)程序打開的所有文件

-c選項(xiàng)限定只列出以apache開頭的進(jìn)程打開的文件:
所以你可以不用像下面這樣寫:

lsof | grep foo

而使用下面這個(gè)更簡(jiǎn)短的版本:

lsof -c foo

事實(shí)上,你可以只制定進(jìn)程名稱的開頭:

lsof -c apa

這會(huì)列出所有以apa開頭的進(jìn)程打開的文件
你同樣可以制定多個(gè)-c參數(shù):

lsof -c apache -c python

這會(huì)列出所有由apache和python打開的文件

lsof -u pkrumins -c apache 列出所有由某個(gè)用戶或某個(gè)進(jìn)程打開的文件

lsof -a -u pkrumins -c bash列出所有由一個(gè)用戶與某個(gè)進(jìn)程打開的文件

-a參數(shù)可以將多個(gè)選項(xiàng)的組合條件由或變?yōu)榕c,上面的命令會(huì)顯示所有由pkrumins用戶以及bash進(jìn)程打開的文件

lsof -u ^root 列出除root用戶外的所有用戶打開的文件

lsof -p 1 列出所有由某個(gè)PID對(duì)應(yīng)的進(jìn)程打開的文件

-p選項(xiàng)讓你可以使用進(jìn)程id來(lái)過(guò)濾輸出。記住你也可以用逗號(hào)來(lái)分離多個(gè)pid。

lsof -i 列出所有網(wǎng)絡(luò)連接

lsof的-i選項(xiàng)可以列出所有打開了網(wǎng)絡(luò)套接字(TCP和UDP)的進(jìn)程

lsof -i tcp 列出所有TCP網(wǎng)絡(luò)連接

也可以為-i選項(xiàng)加上參數(shù),比如tcp、udp,tcp選項(xiàng)會(huì)強(qiáng)制lsof只列出打開TCP sockets的進(jìn)程,同樣udp讓lsof只列出使用UDP socket的進(jìn)程

lsof -i :25 找到使用某個(gè)端口的進(jìn)程

:25和-i選項(xiàng)組合可以讓lsof列出占用TCP或UDP的25端口的進(jìn)程。
你也可以使用/etc/services中制定的端口名稱來(lái)代替端口號(hào),比如:

lsof -i :smtp

找到使用某個(gè)udp端口號(hào)的進(jìn)程

lsof -i udp:53

同樣的,也可以找到使用某個(gè)tcp端口的進(jìn)程:

lsof -i tcp:80

lsof -a -u hacker -i 找到某個(gè)用戶的所有網(wǎng)絡(luò)連接

使用-a將-u和-i選項(xiàng)組合可以讓lsof列出某個(gè)用戶的所有網(wǎng)絡(luò)行為

lsof -N 列出所有NFS(網(wǎng)絡(luò)文件系統(tǒng))文件

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
bash    71716 hxapp  cwd    DIR   0,42     4096 1576048 /aft_files/CBS/loan/ln_data/20231108 (3.1.12.154:/data2)

lsof -U 列出所有UNIX域Socket文件

lsof -g 1234 列出所有對(duì)應(yīng)某個(gè)組id的進(jìn)程

進(jìn)程組用來(lái)來(lái)邏輯上對(duì)進(jìn)程進(jìn)行分組,這個(gè)例子查找所有PGID為1234的進(jìn)程打開的文件。

lsof -d 2 列出所有與某個(gè)描述符關(guān)聯(lián)的文件

這個(gè)命令會(huì)列出所有以描述符2打開的文件。
你也可以為描述符指定一個(gè)范圍:

lsof -d 0-2

這會(huì)列出所有描述符為0,1,2的文件。
-d選項(xiàng)還支持其它很多特殊值,下面的命令列出所有內(nèi)存映射文件:

lsof -d mem

txt則列出所有加載在內(nèi)存中并正在執(zhí)行的進(jìn)程:

lsof -d txt

lsof -t -i 輸出使用某些資源的進(jìn)程pid

-t選項(xiàng)輸出進(jìn)程的PID,你可以將它和-i選項(xiàng)組合輸出使用某個(gè)端口的進(jìn)程的PID,下面的命令將會(huì)殺掉所有使用網(wǎng)絡(luò)的進(jìn)程:

kill -9 'lsof -t -i'

lsof -r 1 循環(huán)列出文件

-r選項(xiàng)讓lsof可以循環(huán)列出文件直到被中斷,參數(shù)1的意思是每秒鐘重復(fù)打印一次,這個(gè)選項(xiàng)最好同某個(gè)范圍比較小的查詢組合使用,比如用來(lái)監(jiān)測(cè)網(wǎng)絡(luò)活動(dòng):

lsof -r 1 -u john -i -a

sysctl 命令介紹

# sysctl(選項(xiàng))(參數(shù))
## 獲取某個(gè)變量
sysctl fs.file-max
## 設(shè)置某個(gè)變量
sysctl -w fs.file-max=655360
sysctl -w net.ipv4.ip_forward=1 #(布爾型用 1 來(lái)表示’yes’,用 0 來(lái)表示’no’)

-n:打印值時(shí)不打印關(guān)鍵字;
-e:忽略未知關(guān)鍵字錯(cuò)誤;
-N:僅打印名稱;
-w:當(dāng)改變sysctl設(shè)置時(shí)使用此項(xiàng);
-p:從配置文件“/etc/sysctl.conf”加載內(nèi)核參數(shù)設(shè)置;
-a:打印當(dāng)前所有可用的內(nèi)核參數(shù)變量和值;
-A:以表格方式打印當(dāng)前所有可用的內(nèi)核參數(shù)變量和值。

配置sysctl
編輯此文件:/etc/sysctl.conf
執(zhí)行:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-834173.html

sysctl -p

到了這里,關(guān)于Linux報(bào)too many open files的解決方案及 lsof、sysctl 命令介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • GATK BaseRecalibratorSpark 過(guò)程中因Too many open files終止

    GATK BaseRecalibratorSpark 過(guò)程中因Too many open files終止

    Error: GATK BaseRecalibratorSpark 過(guò)程中因Too many open files終止 執(zhí)行命令: 日志信息: 錯(cuò)誤分析: GATK 集成的Spark運(yùn)行過(guò)程中會(huì)打開多個(gè)文件,而我使用的服務(wù)器版RStudio的Terminal限制了打開的文件數(shù)量最多為4096 可以通過(guò)命令 ulimit -n 查看當(dāng)前用戶能打開的最多文件數(shù)量。 解決方法

    2024年02月13日
    瀏覽(26)
  • 使用 python multiprocessing.Queue 出現(xiàn) too many open files 錯(cuò)誤

    問(wèn)題描述 使用 python 子進(jìn)程 multiprocessing.Process 執(zhí)行任務(wù),并使用 multiprocessing.Queue 回傳任務(wù)執(zhí)行結(jié)果。程序執(zhí)行時(shí)間長(zhǎng)以后,出現(xiàn) Too many open files 錯(cuò)誤。使用 lsof -p 進(jìn)程號(hào) 能看到有很多未關(guān)閉的 pipe。后經(jīng)排查發(fā)現(xiàn)大概率是 multiprocessing.Queue的問(wèn)題,為了驗(yàn)證想法,寫了一個(gè)測(cè)

    2024年02月09日
    瀏覽(22)
  • 【LaTeX 問(wèn)題解決方案】I couldn‘t open file name `.aux‘

    最近用 vscode 的 latex 插件編譯論文的時(shí)候發(fā)現(xiàn),編譯 bibtex 時(shí)總會(huì)報(bào)錯(cuò):I couldn’t open file name “.aux”。但是在編譯 xelatex 時(shí)發(fā)現(xiàn)已經(jīng)產(chǎn)生了一個(gè) aux 文件,那么為什么 latex 插件無(wú)法找到 aux 文件呢? 經(jīng)過(guò)一番摸索,我發(fā)現(xiàn)問(wèn)題出現(xiàn)在設(shè)置文件中。 可以發(fā)現(xiàn),設(shè)置中默認(rèn)會(huì)清

    2023年04月18日
    瀏覽(41)
  • 解決TortoiseGit軟件Git Show log時(shí)顯示Too many files to display的問(wèn)題

    解決TortoiseGit軟件Git Show log時(shí)顯示Too many files to display的問(wèn)題

    有時(shí)代碼提交修改的文件比較多,當(dāng)查看log時(shí)無(wú)法顯示出來(lái)修改的文件列表,如下所示: 將LogTooManyItemsThreshold盡可能配置得大一些。 https://gitlab.com/tortoisegit/tortoisegit/-/issues/3878

    2024年04月12日
    瀏覽(105)
  • 報(bào)錯(cuò):java: 讀取D:\XX\XXX.jar時(shí)出錯(cuò); error in opening zip file[有效解決方案]

    報(bào)錯(cuò):java: 讀取D:\XX\XXX.jar時(shí)出錯(cuò); error in opening zip file[有效解決方案]

    一般是在idea構(gòu)建項(xiàng)目時(shí)報(bào)的錯(cuò)誤。 原因:1、在構(gòu)建項(xiàng)目時(shí)中止構(gòu)建,導(dǎo)致jar下載失敗或者下載的jar包殘缺無(wú)法打開使用。 ? ? 2、構(gòu)建好項(xiàng)目后,更換idea的maven版本,導(dǎo)致maven的本地倉(cāng)庫(kù)改變,無(wú)法加載之前構(gòu)建好的環(huán)境,或者打不開之前下載的jar包 ? ? 3、依賴的jar因?yàn)槟?/p>

    2024年02月11日
    瀏覽(23)
  • 1.Linux開機(jī)卡在/dev/sda1:clean,***files,***blocks解決方案

    ##1. 出現(xiàn)原因 linux開機(jī)時(shí)顯示器卡在卡在/dev/sda1:clean,***files,***blocks無(wú)法進(jìn)入系統(tǒng)的原因可能是顯卡驅(qū)動(dòng)的問(wèn)題或者系統(tǒng)升級(jí)的原因(近期內(nèi)沒(méi)有修改文件大概率是系統(tǒng)升級(jí)導(dǎo)致的驅(qū)動(dòng)問(wèn)題),也可能是磁盤空間問(wèn)題。 linux開機(jī)時(shí)顯示器卡在卡在/dev/sda1:clean,***files,***blo

    2024年02月15日
    瀏覽(10)
  • SparkSQL列數(shù)量比較多引發(fā)的Too many arguments in method signature in class file問(wèn)題

    我在寫一個(gè)Spark程序的時(shí)候,做兩個(gè)表的關(guān)聯(lián),其中一個(gè)表為feature表,一共有96個(gè)特征,我使用下面的 代碼片 的時(shí)候 在運(yùn)行的時(shí)候會(huì)報(bào)錯(cuò) 在運(yùn)行日志里面還有下面的錯(cuò)誤提示 增加一行: .config(\\\"spark.sql.codegen.wholeStage\\\", value = false) 這個(gè)錯(cuò)誤一般是由于 JVM 的方法參數(shù)限制所導(dǎo)

    2024年02月08日
    瀏覽(18)
  • Nginx報(bào)錯(cuò) HTTP 413 Request Entity Too Large(Payload Too Large)解決方案

    上傳文件時(shí),請(qǐng)求參數(shù)過(guò)大,導(dǎo)致超出服務(wù)端限制。 客戶端發(fā)送的實(shí)體主體部分比服務(wù)器能夠或者希望處理的要大。? Nginx默認(rèn)最大能夠上傳1MB文件,打開nginx.conf在http{}中,找到server{}設(shè)置: client_max_body_size 30m;(配置客戶端請(qǐng)求實(shí)體最大值) client_body_buffer_size 128k;(配置請(qǐng)

    2024年02月07日
    瀏覽(24)
  • nginx報(bào)413 Request Entity Too Large錯(cuò)誤解決方案

    原因:使用nginx進(jìn)行文件操作,該錯(cuò)誤表示請(qǐng)求體過(guò)大,更改一下nginx的請(qǐng)求體大小就可以了 解決: 在nginx的配置文件中新增: client_max_body_size 1024m; 根據(jù)需求設(shè)置大小,1024m只是示例; 重新啟動(dòng) nginx ! 重啟方法: 進(jìn)入sbin目錄下啟動(dòng)方式: 配置systemctl的啟動(dòng)方式: * 找不到配置文件的情況

    2024年02月15日
    瀏覽(20)
  • 解決mysql報(bào)錯(cuò):1406, Data too long for column(多種方案)

    解決mysql報(bào)錯(cuò):1406, Data too long for column(多種方案)

    傳送 centosAI 適用于linux系統(tǒng) 一般1406, Data too long for column錯(cuò)誤大部分會(huì)是因?yàn)槟骋涣斜淼臄?shù)據(jù)長(zhǎng)度受限,最好的辦法是進(jìn)入數(shù)據(jù)庫(kù),找到表結(jié)構(gòu)中對(duì)應(yīng)的表頭,修改數(shù)據(jù)庫(kù)類型,這里以vod_first_letter為例,如果直接修改數(shù)據(jù)類型,可能會(huì)因?yàn)槲谋緝?nèi)容不兼容而導(dǎo)致失敗,如將V

    2024年01月21日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包