問題
すべてのWebサーバーまたはほとんどすべてのLinuxサーバがファイル記述子ように調整する必要がある、私が使用したulimit -n
ユーザーのデフォルトの設定でファイルを開くために、現在まで見ることが1024年であるが、システム稼働し、いくつかの簡単なサービスを開きます使用はlsof | wc -l
なぜファイル記述子が力にはない制限、の質問に、システムは数十数千のファイルの上で、既にありますか?
解きます
私は開いているすべてのファイルシステム、および使用することを参照ulimit -n
ビューは、現在のユーザーのファイルディスクリプタを制限することがあります
使用したファイル記述子の制限システムcat /proc/sys/fs/file-max
コマンドビュー
Linuxシステムのファイル記述子の制限を理解します
Linuxシステムでは、通常のプロセスが開いているファイル記述子が、この制限を超えていた場合、各プロセスは限界が開くことができるデータファイルが、ファイル記述子を取得するために、オープン()システムコールのような失敗を返します。
- Linuxの制限が最大ファイル記述子は、2つの側面、ユーザーレベルの制限があり、他のシステムレベルの制限です。
ユーザーレベルの制限:参照するためのコマンドのulimitは、手続きの総数は、各ユーザのログインは、この制限を超えることはできませんファイル記述子を占有し実行したことを意味最大のユーザー・レベルのファイル記述子の制限、であることがあるならば、そんなに私たちのウェブサーバーのように右ユーザーが開始し、彼らは、ユーザーのファイルディスクリプタに調整する必要がありますダウンを使用
システムレベルの制限:sysctlのprocファイルシステムコマンドとシステム・レベルの限界であり、同じ値、視聴制限は、すべてのユーザの合計であるファイル記述子を開き
数量制限を変更します。
- ユーザーレベル
[root@localhost ~]# ulimit -n 10000
#临时修改,只对当前shell有效
-a:显示目前资源限制的设定;
-c <core文件上限>:设定core文件的最大值,单位为区块;
-d <数据节区大小>:程序数据节区的最大值,单位为KB;
-f <文件大小>:shell所能建立的最大文件,单位为区块;
-H:设定资源的硬性限制,也就是管理员所设下的限制;
-m <内存大小>:指定可使用内存的上限,单位为KB;
-n <文件数目>:指定同一时间最多可开启的文件数;
-p <缓冲区大小>:指定管道缓冲区的大小,单位512字节;
-s <堆叠大小>:指定堆叠的上限,单位为KB;
-S:设定资源的弹性限制;
-t <CPU时间>:指定CPU使用时间的上限,单位为秒;
-u <程序数目>:用户最多可开启的程序数目;
-v <虚拟内存大小>:指定可使用的虚拟内存上限,单位为KB。
vi /etc/security/limits.conf
* hard nofile 65536
* soft nofile 65536
#永久修改
- システム全体の制限を変更します。
sysctlコマンド経由でファイルを/etc/sysctl.confの変更:sysctl -w fs.file-max=2048
完了した後に実行sysctl -p
します
エラーレコード
[root@localhost ~]# dd if=/dev/zero of=./cc.txt bs=100M count=21
文件大小超出限制(吐核)
非常に無知始まり、以降情報へのアクセスの下で学びました
理由:ヒューマンエラー、私が使用するulimit 10000
コマンドを、結果はデフォルトになります-f
私は、このコマンドを設定し、単一のファイルの後に、最大サイズが10000個のブロックを超えることはできません作成することを意味し、オプション40000K = 40Mです。
数ソリューションを調整した後-F: