title: linux打開文件數 too many open files 解決辦法 date: 2020 05 03 08:30:45 tags: linux categories: linux 阿裡巴巴Java開發手冊中規定: 調大伺服器所支持的最大文件句柄數(File Descriptor,簡 ...
title: linux打開文件數 too many open files 解決辦法
date: 2020-05-03 08:30:45
tags:
- linux
categories: - linux
阿裡巴巴Java開發手冊中規定:
調大伺服器所支持的最大文件句柄數(File Descriptor,簡寫為fd)。 說明:主流操作系統的設計是將 TCP/UDP 連接採用與文件一樣的方式去管理,即一個連接對 應於一個 fd。主流的 linux 伺服器預設所支持最大 fd 數量為 1024,當併發連接數很大時很 容易因為 fd 不足而出現“open too many files”錯誤,導致新的連接無法建立。 建議將 linux 伺服器所支持的最大句柄數調高數倍(與伺服器的記憶體數量相關)。
查看每個用戶最大允許打開文件數量
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
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) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
查看某一進程的打開文件數量
ps -ef | grep java
lsof -p 進程號 | wc -l
設置open files數值方法
ulimit -n 2048
這樣就可以把當前用戶的最大允許打開文件數量設置為2048了,但這種設置方法在重啟後會還原為預設值。
永久設置方法
vim /etc/security/limits.conf
在最後加入
* soft nofile 4096
* hard nofile 4096
最前的表示所有用戶,可根據需要設置某一用戶,改完後註銷一下就能生效。