背景
最近、マルチスレッドスキャンスクリプトを実行すると、次のエラーが頻繁に発生することに気づきました
HTTPConnectionPool(host=‘t.tips', port=80): Max retries exceeded with url: /index.php (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f29d4081150>: Failed to establish a new connection: [Errno 24] Too many open files',))
かなり奇妙です...
分析
ブロガー私の小規模なプロジェクトでは、データを収集するためにマルチスレッドのバッチ スキャンが必要になることがよくあります。データ収集などの機能では、スレッドが多いほど良いため、帯域幅が十分であり、システムのハードウェア構成が十分に高い場合でも、通常はスキャンに 3000 スレッドを使用します。 、上記の問題は依然として発生するため、システムの制限によるものではないかと疑問に思います。
検索エンジンを通じて、
$ ulimit -n 1024
を実行すると、結果は1024でした。システム制限は同時に1024ファイルを開くことですが、これは明らかに少なすぎます。 。
解決
この問題の解決策は非常に簡単で、以下のファイルを直接変更します
sudo vim /etc/security/limits.conf
このファイルの最後に2行のコードを追加してください
* soft nofile 10240 * hard nofile 10240
もちろん、この番号はあなた自身の番号に基づいています。変更する必要がある場合は、ログアウトして、保存後に再度ログインしてください。
その他の Python エラー プロンプト: [Errno 24] 開いているファイルが多すぎることの分析と解決 関連記事については、PHP 中国語 Web サイトに注目してください。