Linux上修改open files數目

2021-06-21 11:04:54 字數 1886 閱讀 2828

linux系統上預設的open files數目為1024, 有時應用程式會報too many open files的錯誤,是因為open files 數目不夠。

用 ulimit -a 命令可以檢視 系統對各種引數的限制;

# 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) 257648

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 4096

pipe size            (512 bytes, -p) 8

posix message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) unlimited

cpu time               (seconds, -t) unlimited

max user processes              (-u) unlimited

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

由上面可以知道 open files 當前限制為 4096,ok,我們可以修改稍微大一點;

當你把open files的值增大到一定程度,你的too many open files就不會再出現了。

修改方法:

(1)ulimit -hsn 102400

這只是在當前終端有效,退出之後,open files 又變為預設值。

(2)將ulimit -hsn 102400寫到/etc/profile中,因為每次登入終端時,都會自動執行/etc/profile。

(3)令修改open files的數值永久生效,則必須修改配置檔案:/etc/security/limits.conf. 在這個檔案後加上:

* soft nofile 102400

* hard nofile 102400

這種方法需要重啟機器才能生效。

(4)為了讓乙個程式的open files數目擴大,可以在啟動指令碼前面加上(1)中的命令。當程式是乙個daemon時,可能這種方法無效,沒有終端了。 

影響open files數值的還有乙個核心引數file-max,這是linuxt系統的總限制。可以通過如下文式檢視:

cat /proc/sys/fs/file-max

或者sysctl -a | grep fs.file-max

對於伺服器可以採用如下方法修改file-max:

(1)重啟機器後恢復為預設值

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

或者sysctl -w "fs.file-max=34166"

(2)修改配置檔案/etc/sysctl.conf, 在最後加上一行:

fs.file-max = 34166

然後sysctl -p 生效 或者 重啟機器以後永久生效。

本文出自 「linux_me」 部落格,請務必保留此原始出處

Linux上修改open files數目

部署的伺服器和應用讀取檔案太多,導致系統執行變慢了,或者服務起不來,需要調整開啟檔案數目。linux系統上預設的open files數目為1024,有時應用程式會報too many open files的錯誤,是因為open files 數目不夠。用 ulimit a 命令可以檢視 系統對各種引數的...

Linux 上不可修改的檔案和目錄

有時候我們需要讓乙個我們自己的目錄中的內容不能變動,也就是不允許其他人隨便刪改我們的目錄和目錄中的檔案。這裡,首先,我們需要知道兩個概念,檔案的粘滯位和屬性。檔案如果設定了粘滯位 這裡的檔案指的是目錄 那麼這個目錄中的檔案是不允許其他使用者刪除的。粘滯位設定後,在檔案的許可權中x會變成 t 或者 t...

linux上修改ssh密碼和mysql密碼

修改ssh密碼 修改mysql密碼 方法1 用set password命令 mysql u root p mysql set password for root localhost password newpass 方法2 用mysqladmin mysqladmin u root password...