multithreading - 多线程和 TCP 套接字编码的效率
问题描述
我开发了一个服务器,它接受许多传入的 TCP 客户端连接,并在它们之间传输数据。客户端 A 可以通过连接 A 发送一些数据,目标是客户端 B。服务器将数据转发到连接 B,以便客户端 B 获取数据。
我正在使用 Intel Core i7-8700 CPU @ 3.2GHz和32 GB RAM的 PC 上进行测试。
我启动了其中两个服务器,并且有50 个线程不断运行。
每个线程以 150~300 ms的间隔重复以下步骤:
- 随机断开连接并连接到其中一台服务器
- 当连接到服务器时,服务器会在 SQL Server 数据库中创建一条新记录。
- 当与服务器断开连接时,服务器会更新数据库中的记录。
- 将16 KB 的数据发送到另一个随机选择的连接,并接收回 16 KB。
这是我在 Windows 任务管理器上观察到的两台服务器:
- 没有内存泄漏,稳定在 28 MB 左右。
- CPU 使用率在 8% 到 18% 之间变化。
- 用电量在“中等”到“非常高”之间变化。
我的问题是:
我以前没有使用过带有 TCP 连接和线程的应用程序。所以我对这些数字是否看起来不合理的高没有感觉 - 如果是,那么我一定是以非常低效的方式完成编码。
你能告诉?
解决方案
推荐阅读
- amazon-web-services - 在 dynamodb 单表中处理更多的多对多关系
- python - 如果我的 csv 文件存在于 S3,如何使用 nx.read_edgelist 创建图形?
- if-statement - 为什么我会收到错误消息:cond:期望有一个带有问题和答案的子句
- azure - 有没有办法使用 PowerShell 将 Windows 10 计算机加入 Azure AD?
- python - 了解任何 Python 包
- python - Pandas SettingWithCopyWarning 错误:所有已知的解决方案似乎都失败了
- python - 如何在aws中将.py文件作为cronjob运行?
- sql-server - 如何仅使用它们之间共有的一个 ID 使用另一个表中的多个值更新临时表中的多行?
- javascript - 以不完整对象作为参数提供的构造函数的嵌套默认值
- javascript - 在数组中生成许多元素