>  기사  >  백엔드 개발  >  Python 오류 메시지: [Errno 24] 열린 파일이 너무 많은 경우 분석 및 해결 방법

Python 오류 메시지: [Errno 24] 열린 파일이 너무 많은 경우 분석 및 해결 방법

高洛峰
高洛峰원래의
2017-02-18 10:10:212591검색

배경

최근 직장에서 오류를 발견했습니다. 멀티 스레드 스캐닝 스크립트를 실행할 때 다음 오류가 자주 발생했습니다

HTTPConnectionPool(host=‘t.tips&#39;, port=80): Max retries exceeded with url: /index.php (Caused by NewConnectionError(&#39;<requests.packages.urllib3.connection.HTTPConnection object at 0x7f29d4081150>: Failed to establish a new connection: [Errno 24] Too many open files&#39;,))

이상하네요...

분석

블로거가 직접 수행하는 일부 소규모 프로젝트에는 멀티 스레드 일괄 처리가 필요한 경우가 많습니다. 데이터 수집과 같은 기능의 경우 스레드가 많을수록 좋기 때문에 일반적으로 스캔에 3000개의 스레드를 사용합니다. 대역폭이 충분하고 시스템 하드웨어 구성이 충분히 높을 때 발생합니다. 시스템 제한 때문인지.

검색엔진을 통해 시스템 제한에 대한 소개를 찾았습니다.

$ ulimit -n
1024

를 실행해보니 결과가 1024였고, 시스템 제한이 나왔습니다. 1024개의 파일을 동시에 여는 것인데 이는 분명히 너무 적습니다.

해결 방법

이 문제에 대한 해결 방법은 매우 간단합니다. 다음 파일을 직접 수정하세요.

sudo vim /etc/security/limits.conf

이 파일 끝에 두 줄의 코드를 추가하세요

* soft nofile 10240
* hard nofile 10240

물론 저장한 후 필요에 따라 이 숫자를 수정할 수 있습니다. , 로그아웃했다가 다시 로그인하세요.

추가 Python 오류 메시지: [Errno 24] 열린 파일이 너무 많음 분석 및 해결 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.