diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c7d0f507..5a4552698 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### Features - [#976](https://github.com/influxdata/telegraf/pull/976): Reduce allocations in the UDP and statsd inputs. +- [#979](https://github.com/influxdata/telegraf/pull/979): Reduce allocations in the TCP listener. ### Bugfixes - [#968](https://github.com/influxdata/telegraf/issues/968): Processes plugin gets unknown state when spaces are in (command name) diff --git a/plugins/inputs/tcp_listener/tcp_listener.go b/plugins/inputs/tcp_listener/tcp_listener.go index a1b991058..4559a3bf5 100644 --- a/plugins/inputs/tcp_listener/tcp_listener.go +++ b/plugins/inputs/tcp_listener/tcp_listener.go @@ -39,7 +39,7 @@ type TcpListener struct { acc telegraf.Accumulator } -var dropwarn = "ERROR: Message queue full. Discarding line [%s] " + +var dropwarn = "ERROR: Message queue full. Discarding metric. " + "You may want to increase allowed_pending_messages in the config\n" const sampleConfig = ` @@ -202,11 +202,10 @@ func (t *TcpListener) handler(conn *net.TCPConn, id string) { if !scanner.Scan() { return } - buf := scanner.Bytes() select { - case t.in <- buf: + case t.in <- scanner.Bytes(): default: - log.Printf(dropwarn, string(buf)) + log.Printf(dropwarn) } } } @@ -215,11 +214,12 @@ func (t *TcpListener) handler(conn *net.TCPConn, id string) { // tcpParser parses the incoming tcp byte packets func (t *TcpListener) tcpParser() error { defer t.wg.Done() + var packet []byte for { select { case <-t.done: return nil - case packet := <-t.in: + case packet = <-t.in: if len(packet) == 0 { continue }