日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux文件句柄限制总结

發(fā)布時間:2024/8/26 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux文件句柄限制总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文件句柄

tips:

網上說什么的也有,你抄我的我抄你的,也是醉了,故自己綜合查閱的資料,根據自己的理解和判斷以及部分的實踐整理下吧,也不敢保證都是對的,如果有比較大的錯誤,希望看到這篇文章的你提出來,大家共同進步!

關于什么是文件句柄,這里不做討論,其實linux中沒有文件句柄,叫做文件描述符fd

超過最大句柄限制,報錯:java.io.IOException: Too many open files。

TCP連接也會消耗句柄

查看

用戶級別(nofile)
ulimit -n 當前用戶的當前session(即當前shell窗口)最大限制 (如果多個shell窗口,每個都能到達最大限制,和單個進程無關)

單個進程級別(nr_open )
cat /proc/sys/fs/nr_open linux系統(tǒng)中規(guī)定每個進程最大限制

系統(tǒng)級別(file-max)
cat /proc/sys/fs/file-max 系統(tǒng)級別最大限制(所有進程打開的不能超過)

下面的可簡單看,可忽略
cat /proc/sys/fs/file-nr 當前系統(tǒng)已經占用的句柄

[root@izm3mkp4g43hdqz ~]# cat /proc/sys/fs/file-nr 1952 0 184294

結果說明:第一個數表示當前系統(tǒng)已分配的文件描述符數(文件句柄數),第二個數為分配后已釋放的文件描述符數(當前不再使用的文件描述符數),第三個數為最大文件描述符數,等于file-max。

lsof -n |grep 1549 -c

某個進程已經占用的句柄

修改

用戶級別(nofile)

  • 臨時生效(重啟失效) : ulimit -n 65535

    修改當前的用戶級別的,但是生效范圍是當前的session(即當前的shell窗口),即關掉這個窗口,再次打開就不生效了。

  • 永久生效

    如何每次都生效?
    修改環(huán)境變量 將 ulimit -n 65535 加入到 /etc/profile 文件,并source/etc/profile使生效,其實是障眼法,相當于每個用戶進來執(zhí)行一次ulimit -n 65535這個命令

如何更好的每次都生效(推薦)?
修改/etc/security/limits.conf文件

* soft nofile 32768 #限制單個進程最大文件句柄數(到達此限制時系統(tǒng)報警) * hard nofile 65536 #限制單個進程最大文件句柄數(到達此限制時系統(tǒng)報錯) //* 是所有用戶的意思 ,也可以改成 xiaoming soft nofile 32768 就是針對于小明用戶的

ulimit -Sn 能查看或設置soft limit ulimit -Hn能查看或設置hard limit

ulimit -n默認查看的是soft limit
soft limit不能大于hard limit

單個進程級別(nr_open )

cat /proc/sys/fs/nr_open能夠查看單個進程級別的
hard limit一定不能大于/proc/sys/fs/nr_open,否則用戶注銷后無法正常登錄。

為什么不能大于?我是這么理解的:當前用戶想要操作這個進程的最大文件數,但是你再大也不能超過系統(tǒng)級別的單個進程的限制,即nr_open
如果想要大于怎么辦?那就提前修改nr_open的值:

  • 臨時生效(重啟失效) :
    echo 2000000 > /proc/sys/fs/nr_open

  • 永久生效:
    sysctl -w fs.nr_open=100000000 或者 直接寫入sysctl.conf文件

    fs.nr_open=100000000

運行命令:/sbin/sysctl -p 使配置生效

系統(tǒng)級別(file-max)

  • 臨時生效(重啟失效):

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

  • 永久生效:

    修改文件/etc/sysctl.conf

    fs.file-max=655350 #限制整個系統(tǒng)最大文件句柄數

運行命令:/sbin/sysctl -p 使配置生效

總結

  • 大小順序、關系

    用戶級別<單個進程級別<系統(tǒng)級別 即 nofile>nr_file<file-max

    用戶級別(nofile)中: safe limit<hard limit 而 hard limit <nr_file

    所以完整:
    safe limit<hard limit<nr_file<file-max

  • 誤區(qū)

    用戶級別(nofile)即,ulimit命令,只和當前用戶當前session(當前shell窗口)有關,和單個進程沒有關系

總結

以上是生活随笔為你收集整理的Linux文件句柄限制总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。