Skip to content

GELF logging driver saturates CPU for a loong time #19209

@bobrik

Description

@bobrik
$ docker version
Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.5.1
 Git commit:   a34a1d5
 Built:        Sat Nov 21 00:49:19 UTC 2015
 OS/Arch:      darwin/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.3
 Git commit:   a34a1d5
 Built:        Fri Nov 20 17:56:04 UTC 2015
 OS/Arch:      linux/amd64

My container does fmt.Fprintf(os.Stdout, "howdy ho\n") 10 million times. Gelf driver options look like this:

--log-driver=gelf --log-opt=gelf-address=udp://127.0.0.1:23010 --log-opt=gelf-tag=wtf

Endpoint does not respond, since nothing is running on port 23010.

  • Just running my program in container and redirecting stdout to file: 22s — obviously good.
  • Default log driver: 40s, CPU drops to zero after container exits — good-ish.
  • Gelf log driver: 26s, CPU drops to zero after 5831s (!!!) — not good.

This makes docker pulls very sad. The more important thing: docker containers are slowing down too. I suspect that fwrite() to stdout blocks in containers, leading to code path blocking in programs.

cc @dqminh

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions