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...