Open Sonic853 opened 4 years ago
嗯 弹幕收集确实是需要建立大量tcp保持长线连接 前段时间观察过 windows连接数上1w之后就有很明显的影响了 但最后没得出什么结论 不了了之了
有条件的话换Linux跑吧...
PS windows有一系列registry设定,可能影响到底层socket的性能... 我没深究过 不过可以看下https://docs.microsoft.com/en-us/biztalk/technical-guides/settings-that-can-be-modified-to-improve-network-performance
未测试能否切实解决问题
Win-R
打开run界面regedit
打开Registry Editornew -> DWORD (32-bit) Value
TcpTimedWaitDelay
TcpTimedWaitDelay
,选Modify
Base
那一栏选Decimal
(10进制),输入框写30吧(数值区见下表)欢迎反馈测试结果(我这边静态房间数压了挺久了 低峰期拿不出16000来测)
Windows Server 2012 and earlier: 30-300 (decimal) Windows 8 and earlier: 30-300 (decimal) Windows Server 2012 R2 and later: 2-300 (decimal) Windows 8.1 and later: 2-300 (decimal)
已测无效
另一个可能性是端口不够用于建立新的socket windows默认仅使用49152向上的端口建立连接 因此实际可用的只有16000个左右 详情
未测试能否切实解决问题
netsh int ipv4 show dynamicport tcp
查看可用起始端口及实际可用数量netsh int ipv4 set dynamicport tcp start=1025 num=64511
设置起始1025,由此向上64511可以跟上面那个方法一起用 看看能不能解决吧
另一个可能性是端口不够用于建立新的socket windows默认仅使用49152向上的端口建立连接 因此实际可用的只有16000个左右 详情
未测试能否切实解决问题
- 以管理员权限运行_powershell_或者cmd
netsh int ipv4 show dynamicport tcp
查看可用起始端口及实际可用数量netsh int ipv4 set dynamicport tcp start=10000 num=55535
设置起始10000,由此向上55535可以跟上面那个方法一起用 看看能不能解决吧
照着命令给Server敲完了,睡一觉起来再看看 先谢谢了(
晚安2333
经过两天观察 不像之前频繁了,但是在高峰期(在下午到凌晨?)仍旧会出现这种情况,还是有时间买个小主机装Linux再运行吧(
诶 还是没法完全解决吗…
诶 还是没法完全解决吗…
Windows的话暂时没法完全解决。
今天试着用虚拟机里的ArchLinux、安卓7.1.2的Termux、树莓派(Ubuntu Mate)运行,还没开始几分钟就报错,看上去还没Windows Server 2016稳定(没按照文档放开Linux的连接数限制
拿同学的云主机(Ubuntu)挂上去了,目前看上去没有问题(同学的云主机差个10天到期
Linux的nofile限制要上调的
修改完/etc/security/limits.conf
后重新登录命令行
ulimit -n
可以查看当前nofile的上限
翻了翻文档才发现orz 我给linux加上去
不太确定Termux有没有limits.conf
... 我没测试过2333
BUG表现: 使用nodejs运行一段时间后会出现以下的报错内容: 大多数报错内容: Bilibili.getRoomsInArea - Http request aborted Bilibili.getRoomsInArea - Http request errored 以下报错为少量出现: RoomidHandler - Http request errored Bilibili.getLiveCount - Http request errored
在Windows Server 2016下运行一段时间会自动关闭远程桌面, 如果在Windows 10下运行一段时间会出现浏览器无法正常使用。
复现: 在Windows Server 2016安装nodejs 12.16.1, 使用git下载bilibili-live-monitor-ts后,按照README.md内容运行服务, 在Windows 10下配置BiliBiliHelper的配置文件后运行,连接到在Windows Server 2016下的bilibili-live-monitor-ts, 等待一段时间(大约10-30分钟左右 报错。
截图
期待的表现 无报错。
运行环境: Windows Server 2016 云主机 2G运行内存,Windows 10 1909 32G运行内存
额外信息 未检查代码,
初期预测可能是使用了太多的端口导致以上现象?运行了“netstat -ano”命令看看端口占用,发现用nodejs运行bilibili-live-monitor-ts后还真是建立了一大堆端口并保持在“ESTABLISHED”状态。。。