【tomcat调优系列1】Tomcat的请求过程

Tomcat请求过程

几个部件:

  1. Endpoint: tomcat接收socket链接的组件。
  2. Socket:请求的通道链接
  3. InputBuffer. InternalInputBuffer,AbstractInputBuffer:缓冲内存
  4. Request:请求对象
  5. MessageBytes: 请求对象的消息内容
  6. ByteChunk:
  7. Connection:Java层面的链接对象
  8. Servlet:处理请求的组件
  9. Response:请求处理后的返回

请求过程

  • 请求的解析
  1. Endpoint接收socket链接。
  2. 从socket中获取数据并缓存到InputBuffer。BIO是InternalInputBuffer继承自AbstractInputBuffer
  3. 从InputBuffer中解析请求。将完整的请求协议和请求体封装到Request对象。
  4. Request中的messageByte进行标记。标记url,header,请求体等。
  5. 解析头,解析请求。
  6. 初始化请求头的一些参数:Connextion keepalive,Content-length等。包括请求体处理的InputFilter
  7. 将请求交给容器
  • 请求的处理
  1. 容器将请求分发到具体的Servlet进行处理。
  2. Servlet处理请求利用Response进行响应。将返回的数据写入缓冲区,调用flush或者close时,把缓冲区的数据发送给socket.
  3. servlet处理完请求后,检查是否需要把响应数据发送给socket.
  4. 看请求体是否处理结束,是否还有剩余数据,如果有剩余数据,把这些数据处理掉。以便获取下个请求的数据。
  5. 回到第一步处理下一个请求。