背景
最近在工作中發現了一個錯誤,在執行多執行緒掃描腳本的時候頻繁出現下面這個錯誤
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