diff --git a/weed/stats/stats.go b/weed/stats/stats.go index 09826152f..5683bfa9f 100644 --- a/weed/stats/stats.go +++ b/weed/stats/stats.go @@ -15,34 +15,10 @@ type ServerStats struct { BytesOut *DurationCounter } -type Channels struct { - Connections chan *TimedValue - Requests chan *TimedValue - AssignRequests chan *TimedValue - ReadRequests chan *TimedValue - WriteRequests chan *TimedValue - DeleteRequests chan *TimedValue - BytesIn chan *TimedValue - BytesOut chan *TimedValue -} - var ( - Chan *Channels + ServStats = NewServerStats() ) -func init() { - Chan = &Channels{ - Connections: make(chan *TimedValue, 100), - Requests: make(chan *TimedValue, 100), - AssignRequests: make(chan *TimedValue, 100), - ReadRequests: make(chan *TimedValue, 100), - WriteRequests: make(chan *TimedValue, 100), - DeleteRequests: make(chan *TimedValue, 100), - BytesIn: make(chan *TimedValue, 100), - BytesOut: make(chan *TimedValue, 100), - } -} - func NewServerStats() *ServerStats { return &ServerStats{ Requests: NewDurationCounter(), @@ -57,57 +33,33 @@ func NewServerStats() *ServerStats { } func ConnectionOpen() { - Chan.Connections <- NewTimedValue(time.Now(), 1) + ServStats.Connections.Add(NewTimedValue(time.Now(), 1)) } func ConnectionClose() { - Chan.Connections <- NewTimedValue(time.Now(), -1) + ServStats.Connections.Add(NewTimedValue(time.Now(), 1)) } func RequestOpen() { - Chan.Requests <- NewTimedValue(time.Now(), 1) + ServStats.Requests.Add(NewTimedValue(time.Now(), 1)) } func RequestClose() { - Chan.Requests <- NewTimedValue(time.Now(), -1) + ServStats.Requests.Add(NewTimedValue(time.Now(), 1)) + } func AssignRequest() { - Chan.AssignRequests <- NewTimedValue(time.Now(), 1) + ServStats.AssignRequests.Add(NewTimedValue(time.Now(), 1)) } func ReadRequest() { - Chan.ReadRequests <- NewTimedValue(time.Now(), 1) + ServStats.ReadRequests.Add(NewTimedValue(time.Now(), 1)) } func WriteRequest() { - Chan.WriteRequests <- NewTimedValue(time.Now(), 1) + ServStats.WriteRequests.Add(NewTimedValue(time.Now(), 1)) } func DeleteRequest() { - Chan.DeleteRequests <- NewTimedValue(time.Now(), 1) + ServStats.DeleteRequests.Add(NewTimedValue(time.Now(), 1)) } func BytesIn(val int64) { - Chan.BytesIn <- NewTimedValue(time.Now(), val) + ServStats.BytesIn.Add(NewTimedValue(time.Now(), 1)) } func BytesOut(val int64) { - Chan.BytesOut <- NewTimedValue(time.Now(), val) -} - -func (ss *ServerStats) Start() { - for { - select { - case tv := <-Chan.Connections: - ss.Connections.Add(tv) - case tv := <-Chan.Requests: - ss.Requests.Add(tv) - case tv := <-Chan.AssignRequests: - ss.AssignRequests.Add(tv) - case tv := <-Chan.ReadRequests: - ss.ReadRequests.Add(tv) - case tv := <-Chan.WriteRequests: - ss.WriteRequests.Add(tv) - case tv := <-Chan.ReadRequests: - ss.ReadRequests.Add(tv) - case tv := <-Chan.DeleteRequests: - ss.DeleteRequests.Add(tv) - case tv := <-Chan.BytesIn: - ss.BytesIn.Add(tv) - case tv := <-Chan.BytesOut: - ss.BytesOut.Add(tv) - } - } + ServStats.BytesOut.Add(NewTimedValue(time.Now(), 1)) } diff --git a/weed/weedserver/common.go b/weed/weedserver/common.go index ee523238d..3a11e8785 100644 --- a/weed/weedserver/common.go +++ b/weed/weedserver/common.go @@ -21,15 +21,8 @@ import ( "github.com/golang/protobuf/proto" ) -var serverStats *stats.ServerStats var startTime = time.Now() -func init() { - serverStats = stats.NewServerStats() - go serverStats.Start() - -} - func readObjRequest(r *http.Request, obj interface{}) error { body, err := ioutil.ReadAll(r.Body) if err != nil { @@ -189,7 +182,7 @@ func parseURLPath(path string) (vid, nid, filename, ext string, isVolumeIdOnly b func statsCounterHandler(w http.ResponseWriter, r *http.Request) { m := make(map[string]interface{}) m["Version"] = util.VERSION - m["Counters"] = serverStats + m["Counters"] = stats.ServStats writeJsonQuiet(w, r, http.StatusOK, m) } diff --git a/weed/weedserver/master_server_handlers_ui.go b/weed/weedserver/master_server_handlers_ui.go index e1eaaa51e..eafac316a 100644 --- a/weed/weedserver/master_server_handlers_ui.go +++ b/weed/weedserver/master_server_handlers_ui.go @@ -24,7 +24,7 @@ func (ms *MasterServer) uiStatusHandler(w http.ResponseWriter, r *http.Request) Leader: ms.Topo.GetRaftServer().Leader(), Peers: ms.Topo.GetRaftServer().Peers(), Stats: infos, - Counters: serverStats, + Counters: stats.ServStats, } ui.StatusTpl.Execute(w, args) } diff --git a/weed/weedserver/volume_server_handlers_ui.go b/weed/weedserver/volume_server_handlers_ui.go index 931e76454..64199d369 100644 --- a/weed/weedserver/volume_server_handlers_ui.go +++ b/weed/weedserver/volume_server_handlers_ui.go @@ -32,7 +32,7 @@ func (vs *VolumeServer) uiStatusHandler(w http.ResponseWriter, r *http.Request) vs.store.Status(), ds, infos, - serverStats, + stats.ServStats, } ui.StatusTpl.Execute(w, args) }