mirror of
https://github.com/eiblog/eiblog.git
synced 2026-03-01 00:34:58 +08:00
add vendor
This commit is contained in:
+56
@@ -0,0 +1,56 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/manucorporat/stats"
|
||||
)
|
||||
|
||||
var ips = stats.New()
|
||||
var messages = stats.New()
|
||||
var users = stats.New()
|
||||
var mutexStats sync.RWMutex
|
||||
var savedStats map[string]uint64
|
||||
|
||||
func statsWorker() {
|
||||
c := time.Tick(1 * time.Second)
|
||||
var lastMallocs uint64
|
||||
var lastFrees uint64
|
||||
for range c {
|
||||
var stats runtime.MemStats
|
||||
runtime.ReadMemStats(&stats)
|
||||
|
||||
mutexStats.Lock()
|
||||
savedStats = map[string]uint64{
|
||||
"timestamp": uint64(time.Now().Unix()),
|
||||
"HeapInuse": stats.HeapInuse,
|
||||
"StackInuse": stats.StackInuse,
|
||||
"Mallocs": (stats.Mallocs - lastMallocs),
|
||||
"Frees": (stats.Frees - lastFrees),
|
||||
"Inbound": uint64(messages.Get("inbound")),
|
||||
"Outbound": uint64(messages.Get("outbound")),
|
||||
"Connected": connectedUsers(),
|
||||
}
|
||||
lastMallocs = stats.Mallocs
|
||||
lastFrees = stats.Frees
|
||||
messages.Reset()
|
||||
mutexStats.Unlock()
|
||||
}
|
||||
}
|
||||
|
||||
func connectedUsers() uint64 {
|
||||
connected := users.Get("connected") - users.Get("disconnected")
|
||||
if connected < 0 {
|
||||
return 0
|
||||
}
|
||||
return uint64(connected)
|
||||
}
|
||||
|
||||
func Stats() map[string]uint64 {
|
||||
mutexStats.RLock()
|
||||
defer mutexStats.RUnlock()
|
||||
|
||||
return savedStats
|
||||
}
|
||||
Reference in New Issue
Block a user