【发布时间】:2020-08-21 11:58:39
【问题描述】:
我正在使用以下代码 sn-p 记录我的请求。大多数情况下,我的请求都在 100 毫秒内送达。但是,有时读取缓冲区的时间过长,导致 TP99.9 较高。
final HttpServletRequest rq = (HttpServletRequest) request;
final BufferedReqWrapper brq = new BufferedReqWrapper(rq);
然后在 BufferedReqWrapper 中
private final BufferingIPStream bis;
public BufferedReqWrapper(final HttpServletRequest req, final Integer maxBytesToBuffer) throws IOException
{
super(req);
bis = new BufferingIPStream(super.getInputStream());
}
在缓冲IP流中
public BufferingIPStream(final InputStream delegate) throws IOException
{
this.delegate = delegate;
buffer = fillBuffer(delegate);
}
而fillbuffer方法是
private byte[] fillBuffer(final InputStream input) throws IOException
{
return IOUtils.toByteArray(input);
}
此代码适用于大多数请求,但有时会花费很长时间,这会导致超过 1000 毫秒的高延迟(TP99.9 变高)。
【问题讨论】:
标签: java arrays buffer inputstream bufferedreader