Skip to content

Fix stale nginx upstream keepalive connections causing broken pipe errors#674

Open
WeiQuan0605 wants to merge 1 commit into
cloudfoundry:developfrom
sap-contributions:fix-nginx-upstream-keepalive-timeout
Open

Fix stale nginx upstream keepalive connections causing broken pipe errors#674
WeiQuan0605 wants to merge 1 commit into
cloudfoundry:developfrom
sap-contributions:fix-nginx-upstream-keepalive-timeout

Conversation

@WeiQuan0605

Copy link
Copy Markdown
Contributor
  • A short explanation of the proposed change:

    Add keepalive_timeout=15s to nginx upstream block so nginx evicts idle connections before Puma closes them (persistent_timeout=20s), preventing writev() EPIPE errors on stale connections.

  • An explanation of the use cases your change solves

    This change solves the case where nginx reuses an idle upstream connection to Puma that Puma has already closed. Setting keepalive_timeout=15s, shorter than Puma's persistent_timeout=20s, ensures nginx always evicts idle connections from its pool before Puma closes them. The stale connection window is eliminated entirely.

  • Links to any other associated PRs

  • I have viewed signed and have submitted the Contributor License Agreement

  • I have made this pull request to the develop branch

  • I have run CF Acceptance Tests on bosh lite

…rors

Add keepalive_timeout=15s to nginx upstream block so nginx evicts idle
connections before Puma closes them (persistent_timeout=20s), preventing
writev() EPIPE errors on stale connections.

upstream cloud_controller {
server unix:/var/vcap/data/cloud_controller_ng/cloud_controller.sock;
keepalive 32;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default was:
keepalive 32 local;

Not sure if we want to change this (removing local). But if we want to change the value, then we would maybe set it to the number of parallel requests that ccng can handle (puma workers * threads per worker).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants