2dust / v2rayN

A GUI client for Windows, support Xray core and v2fly core and others
https://1.2345345.xyz
GNU General Public License v3.0
67.56k stars 11.27k forks source link

[Feature request]: 你好,最新版本在超过10个节点测试tcping(Ctrl+O)的时候会异常 #5741

Open sky132512 opened 3 days ago

sky132512 commented 3 days ago

相关问题

最新版本在超过10个节点测试tcping(Ctrl+O)的时候会异常

描述你希望的解决方案

我希望能正常测试

描述你所考虑的替代方案

v2rayN/v2rayN/ServiceLib/Handler /SpeedtestHandler.cs的代码可以修改为: private async Task RunTcping() { var semaphore = new SemaphoreSlim(5); // 限制并发为 5 List tasks = new List(); try { foreach (var it in _selecteds) { if (it.configType == EConfigType.Custom) { continue; } var currentIt = it; // 复制当前迭代的变量 await semaphore.WaitAsync(); // 等待可用的信号量 tasks.Add(Task.Run(async () => { try { int time = GetTcpingTime(currentIt.address, currentIt.port); var output = FormatOut(time, Global.DelayUnit); ProfileExHandler.Instance.SetTestDelay(currentIt.indexId, output); UpdateFunc(currentIt.indexId, output); } catch (Exception ex) { Logging.SaveLog(ex.Message, ex); } finally { semaphore.Release(); // 释放信号量 } })); } await Task.WhenAll(tasks); // 等待所有任务完成 } catch (Exception ex) { Logging.SaveLog(ex.Message, ex); } finally { ProfileExHandler.Instance.SaveTo(); } }

我确认已查询历史issues

sky132512 commented 3 days ago

` private async Task RunTcping() { var semaphore = new SemaphoreSlim(5); // 限制并发为 5 List tasks = new List();

        try
        {
            foreach (var it in _selecteds)
            {
                if (it.configType == EConfigType.Custom)
                {
                    continue;
                }

                var currentIt = it; // 复制当前迭代的变量
                await semaphore.WaitAsync(); // 等待可用的信号量

                tasks.Add(Task.Run(async () =>
                {
                    try
                    {
                        int time = GetTcpingTime(currentIt.address, currentIt.port);
                        var output = FormatOut(time, Global.DelayUnit);

                        ProfileExHandler.Instance.SetTestDelay(currentIt.indexId, output);
                        UpdateFunc(currentIt.indexId, output);
                    }
                    catch (Exception ex)
                    {
                        Logging.SaveLog(ex.Message, ex);
                    }
                    finally
                    {
                        semaphore.Release(); // 释放信号量
                    }
                }));
            }

            await Task.WhenAll(tasks); // 等待所有任务完成
        }
        catch (Exception ex)
        {
            Logging.SaveLog(ex.Message, ex);
        }
        finally
        {
            ProfileExHandler.Instance.SaveTo();
        }
    }`
2dust commented 3 days ago

实测开发环境,测试几千也不会有异常 可能需要找出来为什么你的环境会10以上就异常

sky132512 commented 3 days ago

这是我的测试,节点数量少的时候都是正常的,节点数量多了以后,会有时候测试的很多节点一个延迟(不同入口服务器的不同端口)

@.***

发件人: 2dust 发送时间: 2024-09-26 09:26 收件人: 2dust/v2rayN 抄送: sky132512; Author 主题: Re: [2dust/v2rayN] [Feature request]: 你好,最新版本在超过10个节点测试tcping(Ctrl+O)的时候会异常 (Issue #5741) 实测开发环境,测试几千也不会有异常 可能需要找出来为什么你的环境会10以上就异常 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>


以下文件通过foxmail发给您。保存时间有限制,请及时提取。 QQ2024926-94152-HD.mp4 (238.1 M) (有效时间到: 2024/10/26 9:49:06) 链接: https://wx.mail.qq.com/ftn/download?func=3&from=foxmail&key=c99a593032eacc7dfbe91830353537331558d73e37353733134a4e445456055152011b005351541e500707031a0705050f480306040c055006500f00010621336734040005010e0100480f040600051e7e21185d4701239b26910a4622feb349e435ebfa802f21729454a93037353733366536&code=6e607573

sky132512 commented 3 days ago

找了好多电脑测试过都是这样的,不同的订阅节点,测试6.33版本以及以前的版本不会这样,6.33以后都有这个问题