解決linux下too many file問題

2021-05-10 16:05:07 字數 3000 閱讀 5381

工作中發現,在linux中搭建weblogic應用伺服器的環境下,有時可能同時發布多個war包,而且每乙個war包的檔案數目很多,或者客戶同時訪問量比較大,此時weblogic就會報錯,報錯資訊中包含「too many open files」,例如:

這是因為linux限制了開啟檔案的最大控制代碼數量。

linux預設的開啟檔案數量是1024,我們可以用ulimit -a 來檢視系統資源,例如:

[root@redhat ~]# ulimit -a

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

file size               (blocks, -f) unlimited

pending signals                 (-i) 1024

max locked memory       (kbytes, -l) 32

max memory size         (kbytes, -m) unlimited

open files                   (-n) 1024 --開啟最大檔案數量限制

pipe size            (512 bytes, -p) 8

posix message queues     (bytes, -q) 819200

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 16384

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

解決該問題的宗旨是:增大開啟檔案最大控制代碼限制數,該數是1024的整數倍

1.臨時增大open files的限制值

可以用ulimit -n 來臨時增大該限制值,但是一旦重啟伺服器後,該值又會恢復到1024。只能暫時性的解決問題。命令如下:

[root@redhat ~]# ulimit -n 65536

[root@redhat ~]# ulimit -a

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

file size               (blocks, -f) unlimited

pending signals                 (-i) 1024

max locked memory       (kbytes, -l) 32

max memory size         (kbytes, -m) unlimited

open files                      (-n) 65536

pipe size            (512 bytes, -p) 8

posix message queues     (bytes, -q) 819200

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 16384

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

2.徹底增大open files的限制值

一般情況下,我們都會通過修改系統限制檔案來徹底增大open files的值。

2.1 通過vi開啟/etc/security/limits.conf,在「# end of file」上面新增如下:

*  -  nofile  65536

該語句表示:每乙個使用者的預設開啟檔案數是65536

2.2 通過vi開啟/etc/sysctl.conf,在最後一行新增如下:

fs.file-max = 65536

2.3 重啟伺服器。

此時再用ulimit -a來檢視:

[root@redhat ~]# ulimit -a

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

file size               (blocks, -f) unlimited

pending signals                 (-i) 1024

max locked memory       (kbytes, -l) 32

max memory size         (kbytes, -m) unlimited

open files                      (-n) 65536

pipe size            (512 bytes, -p) 8

posix message queues     (bytes, -q) 819200

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 16384

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

Linux下解決中文亂碼

第一步 用vi編輯器開啟 etc sysconfig 目錄下的i18n檔案,命令如下 root localhost vi etc sysconfig i18n 第二步 進入編輯狀態,新增如下內容 lang zh cn.gb18030 language zh cn.gb18030 zh cn.gb23...

linux下解決OEM亂碼

這個問題根本原因在於安裝時,jdk jre字符集的自動選擇。1.在 oracle home jdk jre lib 和 oracle home jre 1.4.2 lib 目錄下都有多種字符集字型配置檔案,我們只要用合適的中文字符集檔案替換預設檔案即可,我們選擇使用font.properties.z...

linux下解決大量的TIME WAIT

root web02 vi etc sysctl.conf 新增如下內容 net.ipv4.tcp tw reuse 1 net.ipv4.tcp tw recycle 1 net.ipv4.tcp syncookies 1 使核心引數生效 root web02 sysctl p readme ne...