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

too many open files(打開的文件過多)解決方法

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

https://www.cnblogs.com/conanwang/p/5818441.html

SU: failed to execute /bin/bash:系統(tǒng)中打開的文件過多文件使用后不應(yīng)該關(guān)閉嗎 為什么出現(xiàn) too many open files,linux,tomcat,服務(wù)器,運(yùn)維,java

一、產(chǎn)生原因

too many open files(打開的文件過多)是Linux系統(tǒng)中常見的錯(cuò)誤,從字面意思上看就是說程序打開的文件數(shù)過多,不過這里的files不單是文件的意思,也包括打開的通訊鏈接(比如socket),正在監(jiān)聽的端口等等,所以有時(shí)候也可以叫做句柄(handle),這個(gè)錯(cuò)誤通常也可以叫做句柄數(shù)超出系統(tǒng)限制。
引起的原因就是進(jìn)程在某個(gè)時(shí)刻打開了超過系統(tǒng)限制的文件數(shù)量以及通訊鏈接數(shù),通過命令ulimit -a可以查看當(dāng)前系統(tǒng)設(shè)置的最大句柄數(shù)是多少:

[root@localhost ~]# 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) 126906
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024  <==文件數(shù)
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 126906
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

open files那一行就代表系統(tǒng)目前允許單個(gè)進(jìn)程打開的最大句柄數(shù),這里是1024。
使用命令lsof -p 進(jìn)程id可以查看單個(gè)進(jìn)程所有打開的文件詳情,使用命令lsof -p 進(jìn)程id | wc -l可以統(tǒng)計(jì)進(jìn)程打開了多少文件:

[tomcat@localhost bin]$ jps
3092 Bootstrap
3197 Jps
[tomcat@localhost bin]$ lsof -p 3092 | wc -l
108

以裸啟動(dòng)的tomcat為例,可以看到它目前打開了108個(gè)文件數(shù),如果文件數(shù)過多使用lsof -p 進(jìn)程id命令無法完全查看的話,可以使用lsof -p 進(jìn)程id > openfiles.log將執(zhí)行結(jié)果內(nèi)容輸出到日志文件中查看。

二、解決方法

1、增大允許打開的文件數(shù)——命令方式

ulimit -HSn 102400 //這只是在當(dāng)前終端有效,退出之后,open files又變?yōu)槟J(rèn)值。當(dāng)然也可以寫到/etc/profile中,因?yàn)槊看蔚卿浗K端時(shí),都會(huì)自動(dòng)執(zhí)行/etc/profile

ulimit -HSn 102400 臨時(shí)終端生效,切換終端失敗
[root@localhost 20221108]# 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) 126906
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 126906
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@localhost 20221108]# 
[root@localhost 20221108]# ulimit -HSn 102400  
[root@localhost 20221108]# 
[root@localhost 20221108]# 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) 126906
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 102400  
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 126906
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
2、增大允許打開的文件數(shù)——修改系統(tǒng)配置文件
2.1.修改file-max

/proc/sys/fs/file-max中指定了系統(tǒng)范圍內(nèi)所有進(jìn)程可打開的文件句柄的數(shù)量限制

# echo  6553560 > /proc/sys/fs/file-max  //sysctl -w "fs.file-max=34166",前面2種重啟機(jī)器后會(huì)恢復(fù)為默認(rèn)值
或
# vim /etc/sysctl.conf, 加入以下內(nèi)容,重啟生效
fs.file-max = 6553560

fs.file-max = 6815744
fs.file-max指系統(tǒng)能夠打開最大的文件句柄數(shù)
建議設(shè)置:fs.file-max=512processes=6.51024*1024=6.5MOracle系統(tǒng)內(nèi)核參數(shù)、資源限制及ipcs相關(guān)命令總結(jié)

2.2.修改ulimit的open file,系統(tǒng)默認(rèn)的ulimit對(duì)文件打開數(shù)量的限制是1024
# vim /etc/security/limits.conf  //加入以下配置,重啟即可生效

#在最后加入  
* soft nofile 65535 
* hard nofile 65535

或者只加入
 * - nofile 8192

最前的 * 表示所有用戶,可根據(jù)需要設(shè)置某一用戶,例如
roy soft nofile 8192  
roy hard nofile 8192

注意”nofile”項(xiàng)有兩個(gè)可能的限制措施。就是項(xiàng)下的hard和soft。 要使修改過得最大打開文件數(shù)生效,必須對(duì)這兩種限制進(jìn)行設(shè)定。 如果使用”-“字符設(shè)定, 則hard和soft設(shè)定會(huì)同時(shí)被設(shè)定。

3、檢查程序問題

如果你對(duì)你的程序有一定的解的話,應(yīng)該對(duì)程序打開文件數(shù)(鏈接數(shù))上限有一定的估算,如果感覺數(shù)字異常,請(qǐng)使用第一步的lsof -p 進(jìn)程id > openfiles.log命令,獲得當(dāng)前占用句柄的全部詳情進(jìn)行分析,

1)打開的這些文件是不是都是必要的?
2)定位到打開這些文件的代碼
3)是否程序操作了文件寫入,但是沒有進(jìn)行正常關(guān)閉
4)是否程序進(jìn)行了通訊,但是沒有正常關(guān)閉(也就是沒有超時(shí)結(jié)束的機(jī)制)

如果程序中存在這些問題的話,無論系統(tǒng)句柄數(shù)設(shè)置的多么大,隨著時(shí)間的推移,也一定會(huì)占用完。

附錄:

附錄1.
為了讓一個(gè)程序的open files數(shù)目擴(kuò)大,可以在啟動(dòng)腳本前面加上ulimit -HSn 102400命令。但當(dāng)程序是一個(gè)daemon時(shí),可能這種方法無效,因?yàn)闆]有終端。

附錄2.
如果某項(xiàng)服務(wù)已經(jīng)啟動(dòng),再動(dòng)態(tài)調(diào)整ulimit是無效的,特別是涉及到線上業(yè)務(wù)就更麻煩了。
這時(shí),可以考慮通過修改/proc/’程序pid’/limits來實(shí)現(xiàn)動(dòng)態(tài)修改?。。?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-596802.html

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

本文來自互聯(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)文章

  • 記一次Kafka 故障Too many open files問題

    記一次Kafka 故障Too many open files問題

    查看日志發(fā)現(xiàn),有kafka日志報(bào)錯(cuò)提示: 查看limit.conf文件,發(fā)現(xiàn)文件打開數(shù)設(shè)置的值也沒問題,嘗試增大值后,但就是提示Too many open files,報(bào)錯(cuò)就是文件打開數(shù)過多。 經(jīng)不懈的百度百度,發(fā)現(xiàn)如下圖兩條關(guān)鍵信息; systemd 服務(wù) 模塊 最大打開文件數(shù)默認(rèn)為1024,查看其他沒改動(dòng)

    2024年02月13日
    瀏覽(22)
  • GATK BaseRecalibratorSpark 過程中因Too many open files終止

    GATK BaseRecalibratorSpark 過程中因Too many open files終止

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

    2024年02月13日
    瀏覽(26)
  • flink任務(wù)啟動(dòng)拋出mysql數(shù)據(jù)庫(kù)連接過多異常message from server:“Too many connections“解決辦法

    flink任務(wù)啟動(dòng)拋出mysql數(shù)據(jù)庫(kù)連接過多異常message from server:“Too many connections“解決辦法

    1. 異?,F(xiàn)象 2. 現(xiàn)象分析 2.1 mysql數(shù)據(jù)庫(kù)最大默認(rèn)連接數(shù)是151 2.2 已用連接數(shù)超過了最大連接數(shù)導(dǎo)致的異常 3. 解決辦法 3.1 修改mysql最大連接數(shù)配置文件 命令行修改最大連接數(shù)(max_connections),設(shè)置最大連接數(shù)為1000。 mysql set global max_connections = 1000; 這種方式有個(gè)問題,就是設(shè)置的最

    2024年02月14日
    瀏覽(22)
  • PostgreSQL 連接數(shù)過多報(bào)錯(cuò)(too many clients already)

    在使用 Navicat 連接 PostgreSQL 數(shù)據(jù)庫(kù)時(shí),突然遭遇到了一個(gè)報(bào)錯(cuò):“FATAL: sorry, too many clients already”。這一錯(cuò)誤提示表明數(shù)據(jù)庫(kù)連接數(shù)已經(jīng)達(dá)到上限,無法再創(chuàng)建新連接。為了解決這一問題,我采取了一系列查詢和配置調(diào)整的步驟,從數(shù)據(jù)庫(kù)和程序連接池兩個(gè)方面入手。 數(shù)據(jù)庫(kù)

    2024年02月21日
    瀏覽(17)
  • 解決TortoiseGit軟件Git Show log時(shí)顯示Too many files to display的問題

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

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

    2024年04月12日
    瀏覽(105)
  • MySQL提示“too many connections“的解決方法

    MySQL提示“too many connections“的解決方法

    ?最近使用mysql8.0.23的時(shí)候連接數(shù)據(jù)庫(kù)時(shí)發(fā)現(xiàn)提示報(bào)錯(cuò),出現(xiàn)mysql too many connection 的異常。經(jīng)過查詢發(fā)現(xiàn)是mysql的系統(tǒng)自帶的連接數(shù)太小,連接的線程超過系統(tǒng)配置導(dǎo)致出現(xiàn)錯(cuò)誤。 1.?首先登錄mysql終端,輸入 show variables like \\\"max_connections\\\"; ,查看最大連接數(shù)。 修改最大連接數(shù):

    2024年02月16日
    瀏覽(25)
  • Mysql報(bào)錯(cuò):too many connections原因及解決方法

    1、原因是mysql連接數(shù)過多 解決方案: 1、linux登錄mysql: 2、查看mysql允許的最大連接數(shù) 3、查看這次mysql服務(wù)啟動(dòng)到現(xiàn)在,同一時(shí)刻最多mysql有多少連接 4、修改mysql最大連接數(shù) 5、以上步驟修改后雖然能登錄,但仍有隱患,我們應(yīng)該把那些sleep的連接殺掉 (1)查看所有連接狀態(tài)

    2024年02月10日
    瀏覽(21)
  • ElasticSearch|too_many_buckets_exception解決方法

    報(bào)錯(cuò)信息 ES 執(zhí)行聚合查詢時(shí)報(bào)錯(cuò),報(bào)錯(cuò)信息如下: 原因定位 因?yàn)榫酆喜樵兊耐皵?shù)超過了 ES 集群配置的最大桶數(shù)的上限。ES 聚合查詢最大桶數(shù)的參數(shù)文檔如下(地址): search.max_buckets (Dynamic, integer) Maximum number of aggregation buckets allowed in a single response. Defaults to 65,536. Requests t

    2024年02月04日
    瀏覽(26)
  • ssh 連接錯(cuò)誤 Too many authentication failures 解決方法

    有時(shí)候使用 ssh 登錄 或者 git ssh 方式連接 時(shí)會(huì)遇到: Too many authentication failures 這個(gè)錯(cuò)誤的原因是客戶端嘗試連接次數(shù)大于服務(wù)端限制的次數(shù)。 默認(rèn)情況下: ssh 客戶端會(huì)按照認(rèn)證順序: 1. 依次嘗試 ssh-agent 中的秘鑰和配對(duì)~/.ssh 的秘鑰對(duì) 2. 如果都失敗了會(huì)嘗試密碼登錄 如果

    2024年02月01日
    瀏覽(27)
  • Error connecting to MySQL: Too many connections(code 1040)的錯(cuò)誤解決方法

    Error connecting to MySQL: Too many connections(code 1040)的錯(cuò)誤解決方法

    今天前端在調(diào)試接口時(shí),報(bào)出 Too many connections 的錯(cuò)誤。 于是,打開出 MySQL 數(shù)據(jù)庫(kù),報(bào)出的錯(cuò)誤如下圖所示: 即 Error connecting to MySQL: Too many connections(code 1040) 。 正趕上最近 ChatGPT 比較火,借助他來解決我的錯(cuò)誤: ChatGPT 建議我增加 MySQL 的連接數(shù),但首先通過如下命令查看連

    2024年02月03日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包