1

我正在使用普通的 webBroker Delphi 10.4.1

我有一个接受 Json 字符串的服务器。我解析它并将相同的数据发送回(为简单起见)给客户端。

我的假设是 Webbroker 有默认的 32 个线程(Web 模块实例)将在服务器上创建 - 随着并发客户端请求开始到达服务器并在 32 处停止(请参阅 web.webreq.pas)

为了测试这个场景,我创建了一个简单的客户端程序,它有一个 For 循环,它将通过一个携带 JSon 字符串的请求不断向服务器触发。

对于 10,000 个请求,大约需要 14 秒。只有一个 webModule 实例被创建......这很好,因为 for 循环以 SYNCHRONOUS 模式以串行方式发送请求。

当我运行客户端程序的另一个(并行)实例时,WebModule 的第二个实例被创建......很公平。当我运行客户端的另一个并行实例时,WebModule 的第三个实例被创建....依此类推

现在是有趣的部分......

还记得只有我的第一个客户端程序运行时,10K 请求所花费的时间是 14 秒吗?随着我增加并发客户端的数量,处理时间也会增加

如果服务器确实如所声称的那样是多线程的,那么至少多达 32 个并发客户端请求所花费的时间应该是相同的,以处理来自每个客户端的 10K 条记录,对吧?也就是说,必须在 14 秒内完成所有 3 个客户端程序请求(总计 30K 请求)。大约需要3倍的时间大约42秒

有人可以澄清一下Web Broker是否真的是多线程的吗?如果是这样,我错过了什么?

4

0 回答 0