Add printing of number of goroutines to assist with performance improvements
This commit is contained in:
parent
3e5ed2c10a
commit
7146d1a883
@ -1,6 +1,8 @@
|
||||
package background
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
"git.fjla.uk/owlboard/timetable-mgr/cif"
|
||||
@ -9,11 +11,16 @@ import (
|
||||
"git.fjla.uk/owlboard/timetable-mgr/log"
|
||||
)
|
||||
|
||||
const frequency = 600 * time.Hour // Figure out a sensible frequency!
|
||||
const frequency = 2 * time.Hour // Figure out a sensible frequency!
|
||||
|
||||
// Starts a background ticker to run background tasks. Uses the frequency configured in the background/ticker.go file
|
||||
func InitTicker(cfg *helpers.Configuration, stop <-chan struct{}) {
|
||||
go runTicker(cfg, stop)
|
||||
|
||||
// Run goroutine logging ticker if runtime set to debug
|
||||
if helpers.Runtime == "debug" {
|
||||
go goroutineTicker(stop)
|
||||
}
|
||||
}
|
||||
|
||||
// Runs the ticker and handles tick events
|
||||
@ -32,3 +39,18 @@ func runTicker(cfg *helpers.Configuration, stop <-chan struct{}) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Starts a ticker that logs how many goroutines are running every two seconds
|
||||
func goroutineTicker(stop <-chan struct{}) {
|
||||
log.Msg.Warn("Starting goroutine Tracker ticker - DEBUG USE ONLY")
|
||||
ticker := time.NewTicker(1000 * time.Millisecond)
|
||||
defer ticker.Stop()
|
||||
for {
|
||||
select {
|
||||
case <-stop:
|
||||
return
|
||||
case <-ticker.C:
|
||||
fmt.Printf("Number of goroutines running: %d\n", runtime.NumGoroutine())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ func runCifFullDownload(cfg *helpers.Configuration) error {
|
||||
}
|
||||
|
||||
// Drop timetable collection
|
||||
dbAccess.DropCollection(dbAccess.TimetableCollection)
|
||||
dbAccess.DropCollection(dbAccess.TimetableCollection) // I should edit this to prevent removal of VSTP entries in the database.
|
||||
|
||||
// Process CIF file
|
||||
err = processParsedCif(parsed)
|
||||
|
@ -19,7 +19,7 @@ func init() {
|
||||
|
||||
// Determine the log level based on the runtime mode
|
||||
logLevel := zapcore.DebugLevel
|
||||
if helpers.Runtime == "production" {
|
||||
if helpers.Runtime != "debug" {
|
||||
logLevel = zapcore.InfoLevel
|
||||
}
|
||||
|
||||
|
11
main.go
11
main.go
@ -10,6 +10,7 @@ import (
|
||||
|
||||
"git.fjla.uk/owlboard/timetable-mgr/background"
|
||||
"git.fjla.uk/owlboard/timetable-mgr/cif"
|
||||
"git.fjla.uk/owlboard/timetable-mgr/corpus"
|
||||
"git.fjla.uk/owlboard/timetable-mgr/dbAccess"
|
||||
"git.fjla.uk/owlboard/timetable-mgr/helpers"
|
||||
"git.fjla.uk/owlboard/timetable-mgr/log"
|
||||
@ -34,14 +35,16 @@ func main() {
|
||||
// Initialise a `stop` channel to signal goroutines to cleanup
|
||||
stop := make(chan struct{})
|
||||
|
||||
// Handle signals from the OS
|
||||
go handleSignals(cfg, stop)
|
||||
|
||||
// Start CIF Task Ticker
|
||||
background.InitTicker(cfg, stop)
|
||||
|
||||
// Test CORPUS Fetching
|
||||
// Handle signals from the OS
|
||||
go handleSignals(cfg, stop)
|
||||
|
||||
// Manually call CIF and CORPUS checks to ensure that they are
|
||||
// not delayed until the first ticker event.
|
||||
go cif.CheckCif(cfg)
|
||||
go corpus.CheckCorpus(cfg)
|
||||
|
||||
if cfg.VstpOn {
|
||||
messaging.StompInit(cfg)
|
||||
|
Loading…
Reference in New Issue
Block a user