Skip to content

Commit e98c37f

Browse files
committed
reduce buffer size
1 parent 306a041 commit e98c37f

File tree

1 file changed

+31
-4
lines changed

1 file changed

+31
-4
lines changed

http.go

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
const (
1717
FieldServerName = "ServerName"
1818
FieldContentSize = "ContentSize"
19+
MaxBufferSize = 8192
1920
)
2021

2122
var (
@@ -27,16 +28,25 @@ type HTTPWorker struct {
2728
client *http.Client
2829
jobs chan *http.Request
2930
collector chan *Record
30-
readBuf *bytes.Buffer
31+
discard io.ReaderFrom
3132
}
3233

3334
func NewHTTPWorker(context *Context, jobs chan *http.Request, collector chan *Record) *HTTPWorker {
35+
36+
var buf []byte
37+
contentSize := context.GetInt(FieldContentSize)
38+
if contentSize < MaxBufferSize {
39+
buf = make([]byte, contentSize)
40+
} else {
41+
buf = make([]byte, MaxBufferSize)
42+
}
43+
3444
return &HTTPWorker{
3545
context,
3646
NewClient(context.config),
3747
jobs,
3848
collector,
39-
bytes.NewBuffer(make([]byte, 0, context.GetInt(FieldContentSize)+bytes.MinRead)),
49+
&Discard{buf},
4050
}
4151
}
4252

@@ -111,8 +121,7 @@ func (h *HTTPWorker) send(request *http.Request) (asyncResult chan *Record) {
111121
return
112122
}
113123

114-
defer h.readBuf.Reset()
115-
contentSize, err = h.readBuf.ReadFrom(resp.Body)
124+
contentSize, err = h.discard.ReadFrom(resp.Body)
116125

117126
if err != nil {
118127
record.Error = &ReceiveError{err}
@@ -137,6 +146,24 @@ func (h *HTTPWorker) send(request *http.Request) (asyncResult chan *Record) {
137146
return asyncResult
138147
}
139148

149+
type Discard struct {
150+
blackHole []byte
151+
}
152+
153+
func (d *Discard) ReadFrom(r io.Reader) (n int64, err error) {
154+
readSize := 0
155+
for {
156+
readSize, err = r.Read(d.blackHole)
157+
n += int64(readSize)
158+
if err != nil {
159+
if err == io.EOF {
160+
return n, nil
161+
}
162+
return
163+
}
164+
}
165+
}
166+
140167
func DetectHost(context *Context) (err error) {
141168
defer func() {
142169
if r := recover(); r != nil {

0 commit comments

Comments
 (0)