HibiAPI
HibiAPI copied to clipboard
运行时抛出 `OSError: [Errno 24] Too many open files`
错误概览
将 hibiapi 配置成服务后:
[Unit]
Description="HibiAPI Service"
[Service]
User=root
WorkingDirectory=...
ExecStart=hibiapi
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
运行一段时间,抛出如下错误:
future: <Task finished name='Task-6778' coro=<login() done, defined at /usr/local/lib/python3.8/dist-packages/hibiapi/app/routes/pixiv.py:47> exception=OSError(24, 'Too many open files')>
Traceback (most recent call last):
> File "/usr/local/lib/python3.8/dist-packages/hibiapi/app/routes/pixiv.py", line 56, in login
File "/usr/local/lib/python3.8/dist-packages/hibiapi/api/pixiv/net.py", line 58, in login
File "/usr/local/lib/python3.8/dist-packages/hibiapi/api/pixiv/net.py", line 83, in auth
File "/usr/local/lib/python3.8/dist-packages/hibiapi/utils/net.py", line 106, in __aenter__
File "/usr/local/lib/python3.8/dist-packages/hibiapi/utils/net.py", line 85, in create_client
File "/usr/local/lib/python3.8/dist-packages/httpx/_client.py", line 1373, in __init__
File "/usr/local/lib/python3.8/dist-packages/httpx/_client.py", line 1421, in _init_transport
File "/usr/local/lib/python3.8/dist-packages/httpx/_transports/default.py", line 261, in __init__
File "/usr/local/lib/python3.8/dist-packages/httpx/_config.py", line 49, in create_ssl_context
File "/usr/local/lib/python3.8/dist-packages/httpx/_config.py", line 73, in __init__
File "/usr/local/lib/python3.8/dist-packages/httpx/_config.py", line 85, in load_ssl_context
File "/usr/local/lib/python3.8/dist-packages/httpx/_config.py", line 142, in load_ssl_context_verify
OSError: [Errno 24] Too many open files
尝试修复
修改 /etc/security/limits.conf 新增如下:
* hard nofile 655350
* soft nofile 655350
* hard nproc 655350
* soft nproc 655350
root hard nofile 655350
root soft nofile 655350
纯摆烂改的 655350
- 重启服务器
键入 ulimit -a:
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 31477
-n: file descriptors 655350
-l: locked-in-memory size (kbytes) 65536
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 31477
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: unlimited
ulimit -n:
655350
可以看到,修改已生效
经过一段时间后(不超过一天),报错依存
环境
- Ubuntu 20.04 x86_64 Linux 5.4.0-104-generic
- RAM: 7957MiB
- Disk: 488G
- Python: 3.8.10