multipart 标签

让chatGPT帮我找bug 一个MultiPart文件流读取bug记录 - 内存池 - 减少内存使用 - java.io.FileInputStream和Tomcat ServletInputStream 差异 有更新!

  |   0 评论   |   604 浏览

image.png

本文记录了一个由于HttpservletInputstream的读取0字节和FileInpustStream之间的差异导致的一个bug. 原因是因为Tomcat的 org.apache.catalina.connector.CoyoteInputStream 实现会优先判定是否已经关闭了流. 从而在流无效的时候返回EOF (-1) , 而对于FileInputStream的流的读取会先判定读取的大小. 从而导致了差异. 文中还介绍到了如何使用chatGPT来完成bug的排查. 其中chatGPT的能力非常优秀.不过如果你问得不好,可能达不到你想要效果. 具体情况如何, 请看原文吧.

Tomcat 性能调优过程记录系列 - 00 - 背景介绍: 关于图片上传Multipart性能和Thrift流式传输 置顶! 有更新!

  |   1 评论   |   1,962 浏览

此篇文章简单介绍了小猿口算的拍照检查服务的图片处理过程遇到的问题. 我们简单分析了链路中一些可能存在的问题. 主要在于

  1. 使用 multipart/form-data方式图片上传可能存在的阻塞点以及可能的性能问题.
  2. 使用的thrift的RPC接口对于流式传输的不支持导致的参数需要过大的数组进行传输.
  3. thrift实际并不支持数组. 传输使用的是List<Byte> 这个会进一步的降低程序性能. 在数据拷贝时性能会较差.
  4. 由于此RPC接口的响应时间过长,(500ms上下) 导致内存的利率周转率特别低. 这样导致我们需要大量的内存.

image.png