We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
经过初步检查, 初步判定并不是代码编写逻辑的问题, 而是 TcpListener.Pending 方法占用 CPU 资源过多, 相关代码如下: Network/DevicesServer.cs
TcpListener.Pending
/// <summary> /// 接收客户端 /// </summary> private static void AcceptClient() { var location = $"{nameof(DevicesServer)}.{nameof(AcceptClient)}"; try { while (keepListen && listener is not null) { if (listener.Pending()) // <- HERE { var client = listener.AcceptTcpClient(); if (client.Client.RemoteEndPoint is not IPEndPoint endpoint) continue; clients.Add(endpoint.ToString(), client); Log.Information($"New device connection: {endpoint}"); ReceiveMessage(client); } } } catch (Exception ex) { Log.Error(ex, $"In {nameof(location)}: {ex.Message}"); Status = ServerStatus.Errored; } }
Network/PluginsServer.cs
/// <summary> /// 接收客户端 /// </summary> private null void AcceptClient() { var location = $"{nameof(PluginsServer)}.{nameof(AcceptClient)}"; try { while (keepListen && listener is not null) { if (listener.Pending()) // <- HERE { var client = listener.AcceptTcpClient(); if (client.Client.RemoteEndPoint is not IPEndPoint endpoint) continue; clients.Add(endpoint.ToString(), client); Log.Information($"New plugin connection: {endpoint}"); ReceiveMessage(client); } } } catch (Exception ex) { Log.Error(ex, $"In {location}: {ex.Message}"); Status = ServerStatus.Errored; } }
占用情况如图. 基本上占用一半的资源, 另一半则是 sockets 库
修改建议为适当增加线程休眠时间, 如:
Thread.Sleep(500);
The text was updated successfully, but these errors were encountered:
Tracked by #223 .
Sorry, something went wrong.
🔧 Fix(PluginsServer, DevicesServer): Fix Crequency/KitX#259 .
581a8b1
📝 Chore(Dashboard): Fix #259 .
4414039
Successfully merging a pull request may close this issue.
Discussed in #258
经过初步检查, 初步判定并不是代码编写逻辑的问题, 而是
TcpListener.Pending
方法占用 CPU 资源过多, 相关代码如下:Network/DevicesServer.cs
Network/PluginsServer.cs
占用情况如图. 基本上占用一半的资源, 另一半则是 sockets 库
修改建议为适当增加线程休眠时间, 如:
The text was updated successfully, but these errors were encountered: