3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ulimit -n が足りない!?〜「Too many open files」の世界にようこそ〜

Last updated at Posted at 2025-06-17

こんにちは。tampopo256です。
普段は教育系のWebサービスを作ったりしています。

Linux系OSで大量ファイル生成アプリを運用してると、ある日突然こんなエラーに出会います。

Too many open files

え、何これ。ちゃんとcloseしてるんだけど?という気持ち、わかります。
でもこれ、システムのせいなんです。まさに「ulimit -n地獄」の始まり。

ulimit -nって何者?

Linux系OSには「同時に開けるファイルディスクリプタの数」に制限があります。
それを管理しているのが ulimit -n

試しに叩いてみましょう。

$ ulimit -n
1024

出た数字が「1プロセスが同時に開ける最大ファイル数」です。
ファイルだけでなく、ソケットやパイプもカウントされます。

実際の現場:PDF生成ツールが爆発した話

たとえば社内で使っている「clemyのアカウント初期設定PDF自動生成ツール」
生徒ごとに初期パスワードとアカウント設定をPDF化して渡す便利な仕組みですが…

  • まとめて大量生成する
  • しかも裏で並列処理してる

みたいな状況になると、ある日こうなります。

Too many open files
PDF生成に失敗しました

PDFが空になったり、初期パスワードが消えてたり、最悪の場合は何も出てこないという地獄絵図。
ファイルディスクリプタ(fd)が足りてない、ってわけですね。

対処法:ulimit -n 65535 してみよう

とりあえず一時的に上げたいなら、こう。

ulimit -n 65535

終わりに

社内ツールでも、プロダクションでも、「Too many open files」は他人事じゃないです。

ファイル大量作成や編集系のアプリが急に動かなくなった

まずはulimit -nを疑ってみるのも一手です。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?