diff --git a/cmd/gqgmcd/main.go b/cmd/gqgmcd/main.go
index 62892a5fc77ac5d8f9513e8db15a52bb3acf3519..ca140a5f53db9bab6e811f3631a0f5845e8d853d 100644
--- a/cmd/gqgmcd/main.go
+++ b/cmd/gqgmcd/main.go
@@ -23,6 +23,7 @@ var device = flag.String("device", "/dev/gqgmc", "Device for Geiger Counter")
 var model = flag.String("model", "gqgmc", "Model of Geiger Counter")
 var templateDir = flag.String("template-dir", "templates", "Template directory")
 var staticDir = flag.String("static-dir", "static", "Static files directory")
+var sleepCycle = flag.Int64("sleep-cycle", 5, "Seconds to sleep per cycle.")
 var cfg = flag.String("config", "gqgmc.conf", "Config file")
 
 func main() {
@@ -39,6 +40,6 @@ func main() {
 	p.Register()
 	m := metrics.Register(gc)
 
-	go m.Gather()
+	go m.Gather(c.SleepCycle)
 	log.Fatal(http.ListenAndServe(c.ListenAddress, nil))
 }
diff --git a/config/config.go b/config/config.go
index 22a0be3865ff497460b6dac3d3eb345bd996565d..ee482474a7e66640b2ae0a941838dd9c947764b9 100644
--- a/config/config.go
+++ b/config/config.go
@@ -19,6 +19,7 @@ type Config struct {
 	Model         string `mapstructure:"model"`
 	TemplateDir   string `mapstructure:"template_dir"`
 	StaticDir     string `mapstructure:"static_dir"`
+	SleepCycle    int64  `mapstructure:"sleep_cycle"`
 }
 
 func setDefaults() {
@@ -27,6 +28,7 @@ func setDefaults() {
 	viper.BindPFlag("model", pflag.Lookup("model"))
 	viper.BindPFlag("template_dir", pflag.Lookup("template-dir"))
 	viper.BindPFlag("static_dir", pflag.Lookup("static-dir"))
+	viper.BindPFlag("sleep_cycle", pflag.Lookup("sleep-cycle"))
 }
 
 // ReadConfig reads the client configuration from a file into a Config struct.
diff --git a/server/metrics/metrics.go b/server/metrics/metrics.go
index cc7368ffe892c01cc781e8ef67742b9209e8a6e5..ff4320951dd1e82fa3d687b13f7df8311b4fbce1 100644
--- a/server/metrics/metrics.go
+++ b/server/metrics/metrics.go
@@ -69,7 +69,7 @@ func Register(gc geiger.Counter) *Metrics {
 }
 
 // Gather loop to gather metrics
-func (m *Metrics) Gather() {
+func (m *Metrics) Gather(sleep int64) {
 	var (
 		cpm, cps uint16
 		volts    int16
@@ -97,6 +97,6 @@ func (m *Metrics) Gather() {
 			m.volts.WithLabelValues(m.gc.Serial()).Observe(float64(volts))
 		}
 		m.errs.WithLabelValues(m.gc.Serial()).Set(float64(errCt))
-		time.Sleep(5 * time.Second)
+		time.Sleep(time.Duration(sleep) * time.Second)
 	}
 }