Closed azyghqsavx closed 1 month ago
这是因为系统设定的进程文件句柄数耗尽了(默认 1024)。
正常情况下 CloudflareST 是不会超过默认值 1024 的,但我根据你提供的信息来看,猜测可能是因为下载测速数量太多导致的。
你延迟测速得到了 3116 个未超时的 IP,然后根据延迟测速条件(0 ~ 100 ms)过滤后剩下 3112 个 IP,接下来就会挨个进行下载测速(默认参数情况下是只会下载测速延迟最低的前十个 IP)。 但你设定了下载测速条件,要求找到 1000 个速度不低于 10MB/s 的 IP,那么最后结果几乎可以肯定这是不可能的,这就会导致 CloudflareST 会把这 3112 个 IP 全部下载测速一遍(只要没有满足要求,就会一直测速下去,直到全部测速完)。
而这个数量太多了一些,等到全部测完要写入 result.csv
文件时,早就因为进程文件句柄数耗尽了而无法写入了。
而且从你提供的信息中可以看到,即使 CloudflareST 把这 3112 个 IP 都下载测速了一遍,却依然一个超过 10MB/s 的 IP 都没有,所以显然你指定的条件是不适合的,需要调低预期才行。
解决方法一:
指定合适的测速条件参数。
解决方法二:
提高系统设置的进程文件句柄数上限(但没啥用,只是单纯解决最后写入结果文件报错 too many open files 的问题)。
临时提高(重启后恢复为 1024)
ulimit -n 65535
永久提高(重启后依然为 65535,想要恢复就打开文件后手动删除即可)
echo "* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535" >> /etc/security/limits.conf
问题描述
软件版本
v2.2.5
附加截图
No response