1. ホーム
  2. python

[解決済み】Errno 24: Too many open files. しかし、私はファイルを開いていない?

2022-02-11 11:30:48

質問内容

トレックを使っています( https://github.com/twisted/treq ) を使って、私のウェブサービスから他のAPIを照会しています。今日、私は自分のサービスのストレステストをしていたとき、それはエラーを表示します。

twisted.internet.error.DNSLookupError: DNS lookup failed: address 'api.abc.com' not found: [Errno 24] Too many open files.

しかし、問題は、私のコード全体が、どのファイルも開いていないことです。私は、私のストレステストがそのエンドポイントへのddosのようなものかもしれないので、私がクエリするAPIがダウンしたり、私をブロックした(api.abc.com)ことが原因である可能性を疑います。それでも、その場合、それは接続を拒否するようなものであるべきではないでしょうか?私はそれがそれを持つことになる理由を知りません。 Too many open files というエラーが発生します。それとも、スレッドクエリを作りすぎたことが原因なのでしょうか?

解決方法を教えてください。

Files"Files"にはネットワークソケットが含まれ、これはUnixベースのシステムではファイルの一種です。 開いているファイルの最大数は ulimit -n

# Check current limit
$ ulimit -n
256

# Raise limit to 2048
$ ulimit -n 2048

ファイルハンドルが足りなくなり、上限を上げなければならないのは当然のことです。 しかし、すでに上限が高い場合は、ファイルハンドルが漏れている(十分に速く閉じられていない)可能性があります。 Pythonのようなガベージコレクション型言語では、ファイナライザが必ずしも十分に速くファイルを閉じるとは限らないので、そのために with ブロックなどのシステムで、使い終わったらすぐにファイルをクローズするようにします。