[关闭]
@kpatrick 2019-06-28T16:39:48.000000Z 字数 2741 阅读 68

Django - OSError: [Errno 24] Too many open files

work Python3

问题搜索
- Errno 24: Too many open files. But I am not opening files?
- OSError: [Errno 24] Too many open files #122


1. 现象

在用 jmeterDjango 的服务进行压力测试的时候,当并发量上到一定的数量时(我压测的时候用了1000),服务器进程崩了,并报了错:

  1. Traceback (most recent call last):
  2. File "manage.py", line 21, in <module>
  3. File "manage.py", line 17, in main
  4. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
  5. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
  6. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
  7. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 60, in execute
  8. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute
  9. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 95, in handle
  10. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 102, in run
  11. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/utils/autoreload.py", line 585, in run_with_reloader
  12. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/utils/autoreload.py", line 570, in start_django
  13. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/utils/autoreload.py", line 288, in run
  14. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/utils/autoreload.py", line 294, in run_loop
  15. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/utils/autoreload.py", line 334, in tick
  16. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/utils/autoreload.py", line 350, in snapshot_files
  17. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/utils/autoreload.py", line 254, in watched_files
  18. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/pathlib.py", line 1102, in glob
  19. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/pathlib.py", line 562, in _select_from
  20. File "/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/pathlib.py", line 519, in _select_from
  21. OSError: [Errno 24] Too many open files: '/home/xiaojie/.conda/envs/xiaojie/lib/python3.7/site-packages/django/contrib/admin/locale'

2. 问题

经过搜索查找,是系统层面上的报错,服务器的 Linux 系统同时打开的文件数有限制。

This is a system-level thing - you need to increase your ulimit for file handles (it's likely a small change in that patch version resulted in more file handles). I can't give instructions here for every OS, but if you search for ulimit file handles and your OS name you should find instructions on how to raise it.


3. 解决

更改系统配置

  1. # Check current limit
  2. $ ulimit -n
  3. 256
  4. # Raise limit to 2048
  5. $ ulimit -n 2048

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注