Skip to content

Buffer lock can block client (i.e, dockerd) #54

@stefano-pogliani

Description

@stefano-pogliani

Hello,

We have experienced a couple of blocked web server containers in our production infrastructure caused by fluentd being overloaded.

I suspect this is caused by the attempt of send to flush the entire buffer and keeping a hold on the buffer lock while doing so.
If the fluend server is slow for any reason the send method will slowly loop until the buffer is empty.
In the meantime, any attempt to log will block at the appendBuffer level because send still has the lock.

While looking for known issues/prs I found #33 and the implementing PR from @alexlry #52 which would remove the lock altogether.

It would be great if that PR could be reviewed and merged in so that docker containers would not longer block while trying to write to stdout but rather fail with full buffers.

I have also built a Gist detailing how to reproduce this issue with docker-compose and tc: https://gist.github.com/stefano-pogliani/463af63c040d1bd3740fb46255d2768a

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions