diff options
| author | zemul <zemul@foxmail.com> | 2023-04-24 22:00:48 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-24 07:00:48 -0700 |
| commit | f352616b7da093c15a66eb5a3e40df4dd545668a (patch) | |
| tree | c6a299626bdea29cd44b8227e0bbca50657bc417 | |
| parent | 18686b7375cb02e6a3cda9d2f80387009c21826f (diff) | |
| download | seaweedfs-f352616b7da093c15a66eb5a3e40df4dd545668a.tar.xz seaweedfs-f352616b7da093c15a66eb5a3e40df4dd545668a.zip | |
Volume range read use sync.pool (#4422)
| -rw-r--r-- | weed/server/common.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/weed/server/common.go b/weed/server/common.go index ee1122726..d88298402 100644 --- a/weed/server/common.go +++ b/weed/server/common.go @@ -15,6 +15,7 @@ import ( "path/filepath" "strconv" "strings" + "sync" "time" "google.golang.org/grpc" @@ -30,6 +31,10 @@ import ( var serverStats *stats.ServerStats var startTime = time.Now() +var writePool = sync.Pool{New: func() interface{} { + return bufio.NewWriterSize(nil, 128*1024) +}, +} func init() { serverStats = stats.NewServerStats() @@ -279,8 +284,12 @@ func adjustHeaderContentDisposition(w http.ResponseWriter, r *http.Request, file func processRangeRequest(r *http.Request, w http.ResponseWriter, totalSize int64, mimeType string, writeFn func(writer io.Writer, offset int64, size int64) error) error { rangeReq := r.Header.Get("Range") - bufferedWriter := bufio.NewWriterSize(w, 128*1024) - defer bufferedWriter.Flush() + bufferedWriter := writePool.Get().(*bufio.Writer) + bufferedWriter.Reset(w) + defer func() { + bufferedWriter.Flush() + writePool.Put(bufferedWriter) + }() if rangeReq == "" { w.Header().Set("Content-Length", strconv.FormatInt(totalSize, 10)) |
