3

nghttp2用来实现一个 RESTful API 服务器。我已经定义了两个 GET API: /api/ping/api/wait. 虽然对前者的响应是立即发送的,但服务器在响应后者之前会进行一些处理。我为服务器分配了 4 个线程。

从客户端(也使用 实现nghttp2),我与服务器建立连接并一个接一个地进行 API 调用,/api/wait首先是/api/ping. 我使用 Wireshark 观察到两个 GET 请求是通过两个不同的 TCP 数据包发送的。但是,在服务器完成对 的处理之前/api/wait,它不会处理/api/ping,尽管它还有其他可用的线程。

我从客户端建立了两个 TCP 连接,并在不同的连接上进行了两个 API 调用,服务器并行处理这些连接。

这是否意味着在一个线程上专门nghttp2处理一个 TCP 连接,而来自一个 TCP 连接的请求是按设计顺序处理的?是否有任何设置来规避这种情况?这对于 Web 应用程序(按顺序处理请求)可能是一个很好的功能,但对于 API 彼此独立的 API 服务器来说不是。nghttp2

4

0 回答 0