Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug fix in Netflix / zuul not in spring-cloud-starter-zuul... hoping it can be added. #1871

Closed
ghost opened this issue Apr 19, 2017 · 25 comments

Comments

@ghost
Copy link

ghost commented Apr 19, 2017

Hello

There is a bug fix in Netflix / zuul that I'm interested in, but it doesn't appear to be available in spring-cloud-netflix (at least, not in the version we use or any other more recent version that I can find).

The version of spring-cloud-starter-zuul we use is:
org.springframework.cloud:spring-cloud-starter-zuul:1.2.6.RELEASE
... which uses:
com.netflix.zuul:zuul-core:1.3.0

Secifically, #127 and #327 discuss the issue, and the fix was added to zuul-netflix as part of this change. It was not added to zuul-core, however.

It looks like the fix was present in this version of RibbonCommand.java in spring-cloud-netflix, but that file is not present in the version we use. It also looks like the RibbonCommand.java file was replaced with RestClientRibbonCommand.java in the 1.2.6-RELEASE version, which is missing the fix.

Please let me know if anything I've said is inaccurate.

Is there a current version of spring-cloud-starter-zuul which contains the fix?
If not, can it be added?

@ryanjbaxter
Copy link
Contributor

It looks like the fix is present in AbstractRibbonCommand

@ghost
Copy link
Author

ghost commented Apr 19, 2017

Hm... so it is. Thanks for finding that, ryanjbaxter.

Which begs the question, then: Why are we still seeing the CLOSE_WAIT connection leak issue using a version of Zuul which has the fix.

We'll pursue further investigation on our side for now, having verified where we stand re: that fix.

Thanks again for your help.

@ghost ghost closed this as completed Apr 19, 2017
@spencergibb
Copy link
Member

So #1372 deals with that and is in the Dalston release (1.3.0.RELEASE) and 1.2.7.BUILD-SNAPSHOT

@ghost
Copy link
Author

ghost commented Apr 19, 2017

Thanks much Spencer.

Time to try another upgrade, then.

@spencergibb
Copy link
Member

if you try the 1.2.7 snapshots and that works, we could work on prioritizing releasing 1.2.7

@ghost
Copy link
Author

ghost commented Apr 19, 2017

Cool, I appreciate that.

I'll respond again when we've tested the snapshot version and know more.

Thanks again.

@ghost
Copy link
Author

ghost commented Apr 27, 2017

No luck.

Running Zuul with Dalston and spring-cloud-starter-zuul:1.2.7.BUILD-SNAPSHOT did not resolve the problem with CLOSE_WAIT connections eventually tipping over the app instance, for us.

The instance became unresponsive to incoming requests after ~4000 CLOSE_WAIT connections accumulated, in about 12 hours.

I also found out yesterday that we saw similar behavior recently with Spinnaker's Front50 service, which became unresponsive to incoming requests after ~10000 CLOSE_WAIT connection accumulated.

@ryanjbaxter
Copy link
Contributor

Running Zuul with Dalston and spring-cloud-starter-zuul:1.2.7.BUILD-SNAPSHOT did not resolve the problem with CLOSE_WAIT connections eventually tipping over the app instance, for us.

It sounds like you used both Dalston and spring-cloud-starter-zuul:1.2.7.BUILD-SNAPSHOT, is that correct? spring-cloud-starter-zuul:1.2.7.BUILD-SNAPSHOT is part of the Camden release train. It should be either or. You can try Dalston.RELEASE or Camden.BUILD-SNAPSHOT.

@ghost
Copy link
Author

ghost commented Apr 27, 2017

My mistake. I misunderstood what Spencer meant.

Thank you for clarifying. I'll give it another shot using Camden and the 1.2.7 snapshot.

@ghost
Copy link
Author

ghost commented May 1, 2017

One more update:

Running with Camden.SR6 and spring-cloud-starter-zuul:1.2.7.BUILD-SNAPSHOT, we still encountered the problem where the instance became unresponsive after some time.

The number of long-running CLOSE_WAIT connections the instance accumulated before becoming unresponsive increased significantly, as did the amount of time it took to get there, but the problem reoccurred. On an instance using our previous configuration, it usually takes around 50 connections and about an hour to tip over; the updated test instance plateaued around 230 long-running connections, and lasted much of the weekend before we saw the issue.

Here is the Gradle dependency tree for our updated setup... wondering if someone can take a look and verify we're pulling in the correct version(s) of relevant dependencies to use the fix?

Dependency Tree (click to expand)

+--- org.springframework.cloud:spring-cloud-starter-eureka: -> 1.2.6.RELEASE
| +--- org.springframework.boot:spring-boot-starter-web:1.4.2.RELEASE -> 1.4.5.RELEASE
| | +--- org.springframework.boot:spring-boot-starter:1.4.5.RELEASE
| | | +--- org.springframework.boot:spring-boot:1.4.5.RELEASE
| | | | +--- org.springframework:spring-core:4.3.7.RELEASE
| | | | | \--- commons-logging:commons-logging:1.2
| | | | \--- org.springframework:spring-context:4.3.7.RELEASE
| | | | +--- org.springframework:spring-aop:4.3.7.RELEASE
| | | | | +--- org.springframework:spring-beans:4.3.7.RELEASE
| | | | | | \--- org.springframework:spring-core:4.3.7.RELEASE (*)
| | | | | \--- org.springframework:spring-core:4.3.7.RELEASE (*)
| | | | +--- org.springframework:spring-beans:4.3.7.RELEASE (*)
| | | | +--- org.springframework:spring-core:4.3.7.RELEASE (*)
| | | | \--- org.springframework:spring-expression:4.3.7.RELEASE
| | | | \--- org.springframework:spring-core:4.3.7.RELEASE (*)
| | | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.5.RELEASE
| | | | \--- org.springframework.boot:spring-boot:1.4.5.RELEASE (*)
| | | +--- org.springframework:spring-core:4.3.7.RELEASE (*)
| | | \--- org.yaml:snakeyaml:1.17
| | +--- org.hibernate:hibernate-validator:5.2.4.Final
| | | +--- javax.validation:validation-api:1.1.0.Final
| | | +--- org.jboss.logging:jboss-logging:3.2.1.Final -> 3.3.0.Final
| | | \--- com.fasterxml:classmate:1.1.0 -> 1.3.3
| | +--- com.fasterxml.jackson.core:jackson-databind:2.8.7
| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.7
| | | \--- com.fasterxml.jackson.core:jackson-core:2.8.7
| | +--- org.springframework:spring-web:4.3.7.RELEASE
| | | +--- org.springframework:spring-aop:4.3.7.RELEASE (*)
| | | +--- org.springframework:spring-beans:4.3.7.RELEASE (*)
| | | +--- org.springframework:spring-context:4.3.7.RELEASE (*)
| | | \--- org.springframework:spring-core:4.3.7.RELEASE (*)
| | +--- org.springframework:spring-webmvc:4.3.7.RELEASE
| | | +--- org.springframework:spring-aop:4.3.7.RELEASE (*)
| | | +--- org.springframework:spring-beans:4.3.7.RELEASE (*)
| | | +--- org.springframework:spring-context:4.3.7.RELEASE (*)
| | | +--- org.springframework:spring-core:4.3.7.RELEASE (*)
| | | +--- org.springframework:spring-expression:4.3.7.RELEASE (*)
| | | \--- org.springframework:spring-web:4.3.7.RELEASE (*)
| | \--- org.springframework.boot:spring-boot-starter-tomcat:1.4.5.RELEASE
| | +--- org.apache.tomcat.embed:tomcat-embed-core:8.5.11
| | +--- org.apache.tomcat.embed:tomcat-embed-el:8.5.11
| | \--- org.apache.tomcat.embed:tomcat-embed-websocket:8.5.11
| | \--- org.apache.tomcat.embed:tomcat-embed-core:8.5.11
| +--- org.springframework.cloud:spring-cloud-starter:1.1.8.RELEASE
| | +--- org.springframework.boot:spring-boot-starter:1.3.8.RELEASE -> 1.4.5.RELEASE (*)
| | +--- org.springframework.cloud:spring-cloud-context:1.1.8.RELEASE
| | | \--- org.springframework.security:spring-security-crypto:4.0.4.RELEASE -> 4.1.4.RELEASE
| | +--- org.springframework.cloud:spring-cloud-commons:1.1.8.RELEASE
| | | \--- org.springframework.security:spring-security-crypto:4.0.4.RELEASE -> 4.1.4.RELEASE
| | \--- org.springframework.security:spring-security-rsa:1.0.3.RELEASE
| | \--- org.bouncycastle:bcpkix-jdk15on:1.55
| | \--- org.bouncycastle:bcprov-jdk15on:1.55
| +--- org.springframework.cloud:spring-cloud-netflix-core:1.2.6.RELEASE
| | +--- org.springframework.boot:spring-boot:1.4.2.RELEASE -> 1.4.5.RELEASE (*)
| | \--- org.springframework.boot:spring-boot-autoconfigure:1.4.2.RELEASE -> 1.4.5.RELEASE (*)
| +--- org.springframework.cloud:spring-cloud-netflix-eureka-client:1.2.6.RELEASE
| | \--- org.springframework.cloud:spring-cloud-netflix-core:1.2.6.RELEASE (*)
| +--- com.netflix.eureka:eureka-client:1.4.12
| | +--- org.codehaus.jettison:jettison:1.3.7
| | | \--- stax:stax-api:1.0.1
| | +--- com.netflix.netflix-commons:netflix-eventbus:0.3.0
| | | +--- org.slf4j:slf4j-api:1.6.4 -> 1.7.24
| | | +--- com.netflix.netflix-commons:netflix-infix:0.3.0
| | | | +--- org.slf4j:slf4j-api:1.6.4 -> 1.7.24
| | | | +--- commons-jxpath:commons-jxpath:1.3
| | | | +--- joda-time:joda-time:2.3 -> 2.9.7
| | | | +--- org.antlr:antlr-runtime:3.4
| | | | | +--- org.antlr:stringtemplate:3.2.1
| | | | | | \--- antlr:antlr:2.7.7
| | | | | \--- antlr:antlr:2.7.7
| | | | +--- com.google.guava:guava:14.0.1 -> 18.0
| | | | \--- com.google.code.gson:gson:2.1 -> 2.7
| | | +--- com.netflix.servo:servo-core:0.5.3 -> 0.10.1
| | | | +--- org.slf4j:slf4j-api:1.7.12 -> 1.7.24
| | | | +--- com.google.guava:guava:16.0.1 -> 18.0
| | | | \--- com.netflix.servo:servo-internal:0.10.1
| | | | +--- org.slf4j:slf4j-api:1.7.12 -> 1.7.24
| | | | \--- com.google.guava:guava:16.0.1 -> 18.0
| | | +--- com.netflix.archaius:archaius-core:0.3.3 -> 0.7.4
| | | | +--- commons-configuration:commons-configuration:1.8
| | | | | +--- commons-lang:commons-lang:2.6
| | | | | \--- commons-logging:commons-logging:1.1.1 -> 1.2
| | | | +--- org.slf4j:slf4j-api:1.6.4 -> 1.7.24
| | | | +--- com.google.guava:guava:16.0 -> 18.0
| | | | +--- com.fasterxml.jackson.core:jackson-annotations:2.4.3 -> 2.8.7
| | | | +--- com.fasterxml.jackson.core:jackson-core:2.4.3 -> 2.8.7
| | | | \--- com.fasterxml.jackson.core:jackson-databind:2.4.3 -> 2.8.7 (*)
| | | \--- org.apache.commons:commons-math:2.2
| | +--- com.thoughtworks.xstream:xstream:1.4.2 -> 1.4.9
| | | +--- xmlpull:xmlpull:1.1.3.1
| | | \--- xpp3:xpp3_min:1.1.4c
| | +--- com.netflix.archaius:archaius-core:0.7.3 -> 0.7.4 (*)
| | +--- javax.ws.rs:jsr311-api:1.1.1
| | +--- com.netflix.servo:servo-core:0.10.1 (*)
| | +--- com.sun.jersey:jersey-core:1.19 -> 1.19.1
| | | \--- javax.ws.rs:jsr311-api:1.1.1
| | +--- com.sun.jersey:jersey-client:1.19 -> 1.19.1
| | | \--- com.sun.jersey:jersey-core:1.19.1 (*)
| | +--- com.sun.jersey.contribs:jersey-apache-client4:1.19 -> 1.19.1
| | | +--- org.apache.httpcomponents:httpclient:4.1.1 -> 4.5.3
| | | | +--- org.apache.httpcomponents:httpcore:4.4.6
| | | | +--- commons-logging:commons-logging:1.2
| | | | \--- commons-codec:commons-codec:1.9 -> 1.10
| | | \--- com.sun.jersey:jersey-client:1.19.1 (*)
| | +--- org.apache.httpcomponents:httpclient:4.3.4 -> 4.5.3 (*)
| | +--- com.google.inject:guice:4.0
| | | +--- javax.inject:javax.inject:1
| | | +--- aopalliance:aopalliance:1.0
| | | \--- com.google.guava:guava:16.0.1 -> 18.0
| | +--- com.netflix.governator:governator-api:1.12.10
| | | \--- javax.inject:javax.inject:1
| | +--- com.fasterxml.jackson.core:jackson-annotations:2.5.4 -> 2.8.7
| | +--- com.fasterxml.jackson.core:jackson-core:2.5.4 -> 2.8.7
| | \--- com.fasterxml.jackson.core:jackson-databind:2.5.4 -> 2.8.7 (*)
| +--- com.netflix.eureka:eureka-core:1.4.12
| | +--- com.netflix.eureka:eureka-client:1.4.12 (*)
| | +--- com.netflix.governator:governator:1.12.10
| | | +--- com.netflix.governator:governator-api:1.12.10 (*)
| | | +--- com.netflix.governator:governator-core:1.12.10
| | | | +--- com.netflix.governator:governator-api:1.12.10 (*)
| | | | +--- javax.inject:javax.inject:1
| | | | +--- org.slf4j:slf4j-api:1.6.3 -> 1.7.24
| | | | +--- com.google.inject:guice:4.0 (*)
| | | | +--- com.google.inject.extensions:guice-multibindings:4.0
| | | | | \--- com.google.inject:guice:4.0 (*)
| | | | \--- com.google.inject.extensions:guice-grapher:4.0
| | | | +--- com.google.inject.extensions:guice-assistedinject:4.0
| | | | | \--- com.google.inject:guice:4.0 (*)
| | | | +--- com.google.inject.extensions:guice-multibindings:4.0 (*)
| | | | \--- com.google.inject:guice:4.0 (*)
| | | +--- org.hibernate:hibernate-validator:4.1.0.Final -> 5.2.4.Final (*)
| | | +--- org.ow2.asm:asm:5.0.4
| | | \--- com.fasterxml.jackson.core:jackson-databind:2.4.3 -> 2.8.7 (*)
| | +--- com.thoughtworks.xstream:xstream:1.4.2 -> 1.4.9 (*)
| | +--- javax.ws.rs:jsr311-api:1.1.1
| | \--- org.codehaus.woodstox:woodstox-core-asl:4.4.1
| | +--- javax.xml.stream:stax-api:1.0-2
| | \--- org.codehaus.woodstox:stax2-api:3.1.4
| +--- org.springframework.cloud:spring-cloud-starter-archaius:1.2.6.RELEASE
| | +--- org.springframework.cloud:spring-cloud-starter:1.1.8.RELEASE (*)
| | +--- org.springframework.cloud:spring-cloud-netflix-core:1.2.6.RELEASE (*)
| | +--- com.netflix.archaius:archaius-core:0.7.4 (*)
| | +--- commons-configuration:commons-configuration:1.8 (*)
| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.4 -> 2.8.7
| | +--- com.fasterxml.jackson.core:jackson-core:2.8.4 -> 2.8.7
| | +--- com.fasterxml.jackson.core:jackson-databind:2.8.4 -> 2.8.7 (*)
| | \--- com.google.guava:guava:18.0
| +--- org.springframework.cloud:spring-cloud-starter-ribbon:1.2.6.RELEASE
| | +--- org.springframework.cloud:spring-cloud-starter:1.1.8.RELEASE (*)
| | +--- org.springframework.cloud:spring-cloud-netflix-core:1.2.6.RELEASE (*)
| | +--- org.springframework.cloud:spring-cloud-starter-archaius:1.2.6.RELEASE (*)
| | +--- com.netflix.ribbon:ribbon:2.2.0
| | | +--- com.netflix.ribbon:ribbon-core:2.2.0
| | | | +--- org.slf4j:slf4j-api:1.6.4 -> 1.7.24
| | | | +--- com.google.guava:guava:16.0 -> 18.0
| | | | +--- commons-configuration:commons-configuration:1.8 (*)
| | | | +--- commons-lang:commons-lang:2.6
| | | | \--- com.netflix.archaius:archaius-core:0.7.4 (*)
| | | +--- com.netflix.ribbon:ribbon-transport:2.2.0
| | | | +--- com.netflix.ribbon:ribbon-core:2.2.0 (*)
| | | | +--- com.netflix.ribbon:ribbon-loadbalancer:2.2.0
| | | | | +--- com.netflix.ribbon:ribbon-core:2.2.0 (*)
| | | | | +--- com.netflix.netflix-commons:netflix-statistics:0.1.1
| | | | | | \--- org.slf4j:slf4j-api:1.6.4 -> 1.7.24
| | | | | +--- io.reactivex:rxjava:1.0.9 -> 1.1.10
| | | | | +--- org.slf4j:slf4j-api:1.7.12 -> 1.7.24
| | | | | +--- com.netflix.servo:servo-core:0.10.1 (*)
| | | | | +--- com.google.guava:guava:16.0.1 -> 18.0
| | | | | +--- com.netflix.archaius:archaius-core:0.7.4 (*)
| | | | | \--- com.netflix.netflix-commons:netflix-commons-util:0.1.1
| | | | | \--- org.slf4j:slf4j-api:1.6.4 -> 1.7.24
| | | | +--- io.reactivex:rxjava:1.0.10 -> 1.1.10
| | | | +--- io.reactivex:rxnetty:0.4.9
| | | | | +--- io.reactivex:rxjava:1.0.10 -> 1.1.10
| | | | | +--- io.netty:netty-codec-http:4.0.27.Final
| | | | | | +--- io.netty:netty-codec:4.0.27.Final
| | | | | | | \--- io.netty:netty-transport:4.0.27.Final
| | | | | | | \--- io.netty:netty-buffer:4.0.27.Final
| | | | | | | \--- io.netty:netty-common:4.0.27.Final
| | | | | | \--- io.netty:netty-handler:4.0.27.Final
| | | | | | +--- io.netty:netty-buffer:4.0.27.Final (*)
| | | | | | +--- io.netty:netty-transport:4.0.27.Final (*)
| | | | | | \--- io.netty:netty-codec:4.0.27.Final (*)
| | | | | +--- io.netty:netty-transport-native-epoll:4.0.27.Final
| | | | | | +--- io.netty:netty-common:4.0.27.Final
| | | | | | +--- io.netty:netty-buffer:4.0.27.Final (*)
| | | | | | \--- io.netty:netty-transport:4.0.27.Final (*)
| | | | | \--- org.slf4j:slf4j-api:1.7.6 -> 1.7.24
| | | | +--- io.reactivex:rxnetty-contexts:0.4.9
| | | | | +--- io.reactivex:rxjava:1.0.10 -> 1.1.10
| | | | | \--- io.reactivex:rxnetty:0.4.9 (*)
| | | | +--- io.reactivex:rxnetty-servo:0.4.9
| | | | | +--- io.reactivex:rxjava:1.0.10 -> 1.1.10
| | | | | +--- io.reactivex:rxnetty:0.4.9 (*)
| | | | | \--- com.netflix.servo:servo-core:0.7.5 -> 0.10.1 (*)
| | | | +--- javax.inject:javax.inject:1
| | | | +--- org.slf4j:slf4j-api:1.7.12 -> 1.7.24
| | | | +--- com.google.guava:guava:16.0.1 -> 18.0
| | | | \--- com.netflix.archaius:archaius-core:0.7.4 (*)
| | | +--- com.netflix.hystrix:hystrix-core:1.4.3 -> 1.5.6
| | | | +--- com.netflix.archaius:archaius-core:0.4.1 -> 0.7.4 (*)
| | | | +--- io.reactivex:rxjava:1.2.0 -> 1.1.10
| | | | +--- org.hdrhistogram:HdrHistogram:2.1.9
| | | | \--- org.slf4j:slf4j-api:1.7.0 -> 1.7.24
| | | +--- javax.inject:javax.inject:1
| | | +--- io.reactivex:rxjava:1.0.10 -> 1.1.10
| | | +--- io.reactivex:rxnetty:0.4.9 (*)
| | | +--- commons-configuration:commons-configuration:1.8 (*)
| | | +--- com.google.guava:guava:16.0.1 -> 18.0
| | | \--- com.netflix.archaius:archaius-core:0.7.4 (*)
| | +--- com.netflix.ribbon:ribbon-core:2.2.0 (*)
| | +--- com.netflix.ribbon:ribbon-httpclient:2.2.0
| | | +--- com.netflix.ribbon:ribbon-core:2.2.0 (*)
| | | +--- com.netflix.ribbon:ribbon-loadbalancer:2.2.0 (*)
| | | +--- commons-collections:commons-collections:3.2.1 -> 3.2.2
| | | +--- org.apache.httpcomponents:httpclient:4.2.1 -> 4.5.3 (*)
| | | +--- com.sun.jersey:jersey-client:1.19.1 (*)
| | | +--- com.sun.jersey.contribs:jersey-apache-client4:1.19.1 (*)
| | | +--- org.slf4j:slf4j-api:1.7.12 -> 1.7.24
| | | +--- com.netflix.servo:servo-core:0.10.1 (*)
| | | +--- com.google.guava:guava:16.0.1 -> 18.0
| | | +--- com.netflix.archaius:archaius-core:0.7.4 (*)
| | | \--- com.netflix.netflix-commons:netflix-commons-util:0.1.1 (*)
| | +--- com.netflix.ribbon:ribbon-loadbalancer:2.2.0 (*)
| | \--- io.reactivex:rxjava:1.1.10
| +--- com.netflix.ribbon:ribbon-eureka:2.2.0
| | +--- com.netflix.ribbon:ribbon-core:2.2.0 (*)
| | +--- com.netflix.ribbon:ribbon-loadbalancer:2.2.0 (*)
| | +--- com.netflix.eureka:eureka-client:1.4.6 -> 1.4.12 (*)
| | +--- org.slf4j:slf4j-api:1.7.12 -> 1.7.24
| | \--- com.netflix.archaius:archaius-core:0.7.4 (*)
| \--- com.thoughtworks.xstream:xstream:1.4.9 (*)
+--- org.springframework.cloud:spring-cloud-starter-zuul:1.2.7.BUILD-SNAPSHOT
| +--- org.springframework.cloud:spring-cloud-starter:1.1.9.BUILD-SNAPSHOT -> 1.1.8.RELEASE (*)
| +--- org.springframework.boot:spring-boot-starter-web:1.4.6.RELEASE -> 1.4.5.RELEASE (*)
| +--- org.springframework.boot:spring-boot-starter-actuator:1.4.6.RELEASE -> 1.4.5.RELEASE
| | +--- org.springframework.boot:spring-boot-starter:1.4.5.RELEASE (*)
| | \--- org.springframework.boot:spring-boot-actuator:1.4.5.RELEASE
| | +--- org.springframework.boot:spring-boot:1.4.5.RELEASE (*)
| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.5.RELEASE (*)
| | +--- com.fasterxml.jackson.core:jackson-databind:2.8.7 (*)
| | +--- org.springframework:spring-core:4.3.7.RELEASE (*)
| | \--- org.springframework:spring-context:4.3.7.RELEASE (*)
| +--- org.springframework.cloud:spring-cloud-starter-hystrix:1.2.7.BUILD-SNAPSHOT -> 1.2.6.RELEASE
| | +--- org.springframework.cloud:spring-cloud-starter:1.1.8.RELEASE (*)
| | +--- org.springframework.cloud:spring-cloud-netflix-core:1.2.6.RELEASE (*)
| | +--- org.springframework.cloud:spring-cloud-starter-archaius:1.2.6.RELEASE (*)
| | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | +--- com.netflix.hystrix:hystrix-metrics-event-stream:1.5.6
| | | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | | \--- com.netflix.hystrix:hystrix-serialization:1.5.6
| | | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | | +--- com.fasterxml.jackson.core:jackson-core:2.7.5 -> 2.8.7
| | | +--- com.fasterxml.jackson.core:jackson-databind:2.7.5 -> 2.8.7 (*)
| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.7.5 -> 2.8.7
| | | +--- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.7.5 -> 2.8.7
| | | | \--- com.fasterxml.jackson.core:jackson-core:2.8.7
| | | \--- com.fasterxml.jackson.module:jackson-module-afterburner:2.7.5
| | | +--- com.fasterxml.jackson.core:jackson-core:2.7.5 -> 2.8.7
| | | \--- com.fasterxml.jackson.core:jackson-databind:2.7.5 -> 2.8.7 (*)
| | \--- com.netflix.hystrix:hystrix-javanica:1.5.6
| | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | +--- org.aspectj:aspectjweaver:1.8.6 -> 1.8.9
| | +--- com.google.guava:guava:15.0 -> 18.0
| | +--- commons-collections:commons-collections:3.2.2
| | +--- org.apache.commons:commons-lang3:3.1 -> 3.4
| | \--- org.ow2.asm:asm:5.0.4
| +--- org.springframework.cloud:spring-cloud-starter-ribbon:1.2.7.BUILD-SNAPSHOT -> 1.2.6.RELEASE (*)
| +--- org.springframework.cloud:spring-cloud-starter-archaius:1.2.7.BUILD-SNAPSHOT -> 1.2.6.RELEASE (*)
| \--- com.netflix.zuul:zuul-core:1.3.0
| +--- commons-io:commons-io:2.4
| +--- org.slf4j:slf4j-api:1.7.6 -> 1.7.24
| +--- com.netflix.archaius:archaius-core:0.6.0 -> 0.7.4 (*)
| +--- com.netflix.servo:servo-core:0.7.2 -> 0.10.1 (*)
| \--- com.netflix.netflix-commons:netflix-commons-util:0.1.1 (*)
+--- org.springframework.cloud:spring-cloud-starter-config: -> 1.2.3.RELEASE
| +--- org.springframework.cloud:spring-cloud-starter:1.1.8.RELEASE (*)
| +--- org.springframework.cloud:spring-cloud-config-client:1.2.3.RELEASE
| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.2.RELEASE -> 1.4.5.RELEASE (*)
| | +--- org.springframework.cloud:spring-cloud-commons:1.1.8.RELEASE (*)
| | +--- org.springframework.cloud:spring-cloud-context:1.1.8.RELEASE (*)
| | +--- org.springframework:spring-web:4.3.4.RELEASE -> 4.3.7.RELEASE (*)
| | +--- com.fasterxml.jackson.core:jackson-annotations:2.8.4 -> 2.8.7
| | \--- com.fasterxml.jackson.core:jackson-databind:2.8.4 -> 2.8.7 (*)
| \--- com.fasterxml.jackson.core:jackson-databind:2.8.4 -> 2.8.7 (*)
+--- org.springframework.boot:spring-boot-configuration-processor: -> 1.4.5.RELEASE
| \--- org.json:json:20140107
+--- org.springframework.boot:spring-boot-starter-web: -> 1.4.5.RELEASE (*)
+--- org.springframework.boot:spring-boot-starter-jetty: -> 1.4.5.RELEASE
| +--- org.eclipse.jetty:jetty-servlets:9.3.16.v20170120
| | +--- org.eclipse.jetty:jetty-continuation:9.3.16.v20170120
| | +--- org.eclipse.jetty:jetty-http:9.3.16.v20170120
| | | \--- org.eclipse.jetty:jetty-util:9.3.16.v20170120
| | +--- org.eclipse.jetty:jetty-util:9.3.16.v20170120
| | \--- org.eclipse.jetty:jetty-io:9.3.16.v20170120
| | \--- org.eclipse.jetty:jetty-util:9.3.16.v20170120
| +--- org.eclipse.jetty:jetty-webapp:9.3.16.v20170120
| | +--- org.eclipse.jetty:jetty-xml:9.3.16.v20170120
| | | \--- org.eclipse.jetty:jetty-util:9.3.16.v20170120
| | \--- org.eclipse.jetty:jetty-servlet:9.3.16.v20170120
| | \--- org.eclipse.jetty:jetty-security:9.3.16.v20170120
| | \--- org.eclipse.jetty:jetty-server:9.3.16.v20170120
| | +--- javax.servlet:javax.servlet-api:3.1.0
| | +--- org.eclipse.jetty:jetty-http:9.3.16.v20170120 (*)
| | \--- org.eclipse.jetty:jetty-io:9.3.16.v20170120 (*)
| +--- org.eclipse.jetty.websocket:websocket-server:9.3.16.v20170120
| | +--- org.eclipse.jetty.websocket:websocket-common:9.3.16.v20170120
| | | +--- org.eclipse.jetty.websocket:websocket-api:9.3.16.v20170120
| | | +--- org.eclipse.jetty:jetty-util:9.3.16.v20170120
| | | \--- org.eclipse.jetty:jetty-io:9.3.16.v20170120 (*)
| | +--- org.eclipse.jetty.websocket:websocket-client:9.3.16.v20170120
| | | +--- org.eclipse.jetty:jetty-util:9.3.16.v20170120
| | | +--- org.eclipse.jetty:jetty-io:9.3.16.v20170120 (*)
| | | \--- org.eclipse.jetty.websocket:websocket-common:9.3.16.v20170120 (*)
| | +--- org.eclipse.jetty.websocket:websocket-servlet:9.3.16.v20170120
| | | +--- org.eclipse.jetty.websocket:websocket-api:9.3.16.v20170120
| | | \--- javax.servlet:javax.servlet-api:3.1.0
| | +--- org.eclipse.jetty:jetty-servlet:9.3.16.v20170120 (*)
| | \--- org.eclipse.jetty:jetty-http:9.3.16.v20170120 (*)
| +--- org.eclipse.jetty.websocket:javax-websocket-server-impl:9.3.16.v20170120
| | +--- org.eclipse.jetty:jetty-annotations:9.3.16.v20170120
| | | +--- org.eclipse.jetty:jetty-plus:9.3.16.v20170120
| | | | \--- org.eclipse.jetty:jetty-webapp:9.3.16.v20170120 (*)
| | | +--- org.eclipse.jetty:jetty-webapp:9.3.16.v20170120 (*)
| | | +--- javax.annotation:javax.annotation-api:1.2
| | | +--- org.ow2.asm:asm:5.0.1 -> 5.0.4
| | | \--- org.ow2.asm:asm-commons:5.0.1
| | | \--- org.ow2.asm:asm-tree:5.0.1
| | | \--- org.ow2.asm:asm:5.0.1 -> 5.0.4
| | +--- org.eclipse.jetty.websocket:javax-websocket-client-impl:9.3.16.v20170120
| | | +--- org.eclipse.jetty.websocket:websocket-client:9.3.16.v20170120 (*)
| | | \--- javax.websocket:javax.websocket-api:1.0
| | +--- org.eclipse.jetty.websocket:websocket-server:9.3.16.v20170120 (*)
| | \--- javax.websocket:javax.websocket-api:1.0
| \--- org.mortbay.jasper:apache-el:8.0.33
+--- org.springframework.boot:spring-boot-starter-actuator: -> 1.4.5.RELEASE (*)

[Sorry for the messy formatting... haven't been able to figure out how to include code formatting in a collapsible block...]

@ryanjbaxter
Copy link
Contributor

Can you show us your gradle.build file?

@ghost
Copy link
Author

ghost commented May 1, 2017

Is there a specific subsection I can post?
We have some intellectual property concern posting the whole thing...

@ryanjbaxter
Copy link
Contributor

I just want to see how you have setup your dependencies.

@ghost
Copy link
Author

ghost commented May 1, 2017

ok

Let me know if this isn't sufficient info...

build.gradle

buildscript {
ext {
springBootVersion = '1.4.5.RELEASE'
}

repositories {
maven { maven url }
maven { maven url }
}

dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
classpath "io.spring.gradle:dependency-management-plugin:0.5.2.RELEASE"
classpath 'com.netflix.nebula:gradle-ospackage-plugin:3.5.0'
classpath 'pl.allegro.tech.build:axion-release-plugin:1.4.1'
}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'maven'
apply plugin: "io.spring.dependency-management"
apply plugin: 'nebula.ospackage'
apply plugin: 'pl.allegro.tech.build.axion-release'

dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Camden.SR6"
}
}

sourceCompatibility = 1.8

repositories {
maven { url 'http://repo.spring.io/milestone' }
maven { url 'http://repo.spring.io/snapshot' }
maven { maven url }
maven { maven url }
maven { maven url }
}

dependencies {
compile 'org.springframework.cloud:spring-cloud-starter-eureka'
compile 'org.springframework.cloud:spring-cloud-starter-zuul:1.2.7.BUILD-SNAPSHOT'
compile 'org.springframework.cloud:spring-cloud-starter-config'
compile 'org.springframework.boot:spring-boot-configuration-processor'
compile("org.springframework.boot:spring-boot-starter-web") { exclude module: "spring-boot-starter-tomcat" }
compile("org.springframework.boot:spring-boot-starter-jetty")
compile("org.springframework.boot:spring-boot-starter-actuator")

compile group: 'org.jolokia', name: 'jolokia-core', version: '1.3.3'
compile 'com.amazonaws:aws-xray-recorder-sdk-core:1.0.3-beta'

compile "com.amazonaws:aws-java-sdk-s3:1.11.54"
compile "com.amazonaws:aws-java-sdk-core:1.11.54"

compile 'org.eclipse.jetty:jetty-jmx'

compile group: 'commons-logging', name: 'commons-logging', version: '1.2'

testCompile group: "junit", name: "junit-dep", version: "4.10"
testCompile group: "org.mockito", name: "mockito-core", version: "1.10.19"
testCompile 'org.springframework:spring-test'
}

Your help with this is very much appreciated.

@ryanjbaxter
Copy link
Contributor

I have little hope this will actually make a difference but I meant to use Camden.BUILD-SNAPSHOT.

imports {
mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Camden.BUILD-SNAPSHOT"
}

Then you wouldnt need to do
compile 'org.springframework.cloud:spring-cloud-starter-zuul:1.2.7.BUILD-SNAPSHOT'

you should just need
compile 'org.springframework.cloud:spring-cloud-starter-zuul

The BOM will pull in 1.2.7.BUILD-SNAPSHOT.

@ghost
Copy link
Author

ghost commented May 1, 2017

Gotcha, I'll give that a shot.
Thanks again.

@ghost
Copy link
Author

ghost commented May 1, 2017

Ah, I do see a change in the zuul portion of the dependency tree after that change...

before

+--- org.springframework.cloud:spring-cloud-starter-zuul:1.2.7.BUILD-SNAPSHOT
| +--- org.springframework.cloud:spring-cloud-starter:1.1.9.BUILD-SNAPSHOT -> 1.1.8.RELEASE (*)
| +--- org.springframework.boot:spring-boot-starter-web:1.4.6.RELEASE -> 1.4.5.RELEASE (*)
| +--- org.springframework.boot:spring-boot-starter-actuator:1.4.6.RELEASE -> 1.4.5.RELEASE
| | +--- org.springframework.boot:spring-boot-starter:1.4.5.RELEASE (*)
| | \--- org.springframework.boot:spring-boot-actuator:1.4.5.RELEASE
| | +--- org.springframework.boot:spring-boot:1.4.5.RELEASE (*)
| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.5.RELEASE (*)
| | +--- com.fasterxml.jackson.core:jackson-databind:2.8.7 (*)
| | +--- org.springframework:spring-core:4.3.7.RELEASE (*)
| | \--- org.springframework:spring-context:4.3.7.RELEASE (*)
| +--- org.springframework.cloud:spring-cloud-starter-hystrix:1.2.7.BUILD-SNAPSHOT -> 1.2.6.RELEASE
| | +--- org.springframework.cloud:spring-cloud-starter:1.1.8.RELEASE (*)
| | +--- org.springframework.cloud:spring-cloud-netflix-core:1.2.6.RELEASE (*)
| | +--- org.springframework.cloud:spring-cloud-starter-archaius:1.2.6.RELEASE (*)
| | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | +--- com.netflix.hystrix:hystrix-metrics-event-stream:1.5.6
| | | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | | \--- com.netflix.hystrix:hystrix-serialization:1.5.6
| | | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | | +--- com.fasterxml.jackson.core:jackson-core:2.7.5 -> 2.8.7
| | | +--- com.fasterxml.jackson.core:jackson-databind:2.7.5 -> 2.8.7 (*)
| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.7.5 -> 2.8.7
| | | +--- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.7.5 -> 2.8.7
| | | | \--- com.fasterxml.jackson.core:jackson-core:2.8.7
| | | \--- com.fasterxml.jackson.module:jackson-module-afterburner:2.7.5
| | | +--- com.fasterxml.jackson.core:jackson-core:2.7.5 -> 2.8.7
| | | \--- com.fasterxml.jackson.core:jackson-databind:2.7.5 -> 2.8.7 (*)
| | \--- com.netflix.hystrix:hystrix-javanica:1.5.6
| | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | +--- org.aspectj:aspectjweaver:1.8.6 -> 1.8.9
| | +--- com.google.guava:guava:15.0 -> 18.0
| | +--- commons-collections:commons-collections:3.2.2
| | +--- org.apache.commons:commons-lang3:3.1 -> 3.4
| | \--- org.ow2.asm:asm:5.0.4
| +--- org.springframework.cloud:spring-cloud-starter-ribbon:1.2.7.BUILD-SNAPSHOT -> 1.2.6.RELEASE (*)
| +--- org.springframework.cloud:spring-cloud-starter-archaius:1.2.7.BUILD-SNAPSHOT -> 1.2.6.RELEASE (*)
| \--- com.netflix.zuul:zuul-core:1.3.0
| +--- commons-io:commons-io:2.4
| +--- org.slf4j:slf4j-api:1.7.6 -> 1.7.24
| +--- com.netflix.archaius:archaius-core:0.6.0 -> 0.7.4 (*)
| +--- com.netflix.servo:servo-core:0.7.2 -> 0.10.1 (*)
| \--- com.netflix.netflix-commons:netflix-commons-util:0.1.1 (*)

after

+--- org.springframework.cloud:spring-cloud-starter-zuul: -> 1.2.7.BUILD-SNAPSHOT
| +--- org.springframework.cloud:spring-cloud-starter:1.1.9.BUILD-SNAPSHOT (*)
| +--- org.springframework.boot:spring-boot-starter-web:1.4.6.RELEASE -> 1.4.6.BUILD-SNAPSHOT (*)
| +--- org.springframework.boot:spring-boot-starter-actuator:1.4.6.RELEASE -> 1.4.6.BUILD-SNAPSHOT
| | +--- org.springframework.boot:spring-boot-starter:1.4.6.BUILD-SNAPSHOT (*)
| | \--- org.springframework.boot:spring-boot-actuator:1.4.6.BUILD-SNAPSHOT
| | +--- org.springframework.boot:spring-boot:1.4.6.BUILD-SNAPSHOT (*)
| | +--- org.springframework.boot:spring-boot-autoconfigure:1.4.6.BUILD-SNAPSHOT (*)
| | +--- com.fasterxml.jackson.core:jackson-databind:2.8.8 (*)
| | +--- org.springframework:spring-core:4.3.8.RELEASE (*)
| | \--- org.springframework:spring-context:4.3.8.RELEASE (*)
| +--- org.springframework.cloud:spring-cloud-starter-hystrix:1.2.7.BUILD-SNAPSHOT
| | +--- org.springframework.cloud:spring-cloud-starter:1.1.9.BUILD-SNAPSHOT (*)
| | +--- org.springframework.cloud:spring-cloud-netflix-core:1.2.7.BUILD-SNAPSHOT (*)
| | +--- org.springframework.cloud:spring-cloud-starter-archaius:1.2.7.BUILD-SNAPSHOT (*)
| | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | +--- com.netflix.hystrix:hystrix-metrics-event-stream:1.5.6
| | | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | | \--- com.netflix.hystrix:hystrix-serialization:1.5.6
| | | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | | +--- com.fasterxml.jackson.core:jackson-core:2.7.5 -> 2.8.8
| | | +--- com.fasterxml.jackson.core:jackson-databind:2.7.5 -> 2.8.8 (*)
| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.7.5 -> 2.8.8
| | | +--- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.7.5 -> 2.8.8
| | | | \--- com.fasterxml.jackson.core:jackson-core:2.8.8
| | | \--- com.fasterxml.jackson.module:jackson-module-afterburner:2.7.5
| | | +--- com.fasterxml.jackson.core:jackson-core:2.7.5 -> 2.8.8
| | | \--- com.fasterxml.jackson.core:jackson-databind:2.7.5 -> 2.8.8 (*)
| | \--- com.netflix.hystrix:hystrix-javanica:1.5.6
| | +--- com.netflix.hystrix:hystrix-core:1.5.6 (*)
| | +--- org.aspectj:aspectjweaver:1.8.6 -> 1.8.10
| | +--- com.google.guava:guava:15.0 -> 18.0
| | +--- commons-collections:commons-collections:3.2.2
| | +--- org.apache.commons:commons-lang3:3.1 -> 3.4
| | \--- org.ow2.asm:asm:5.0.4
| +--- org.springframework.cloud:spring-cloud-starter-ribbon:1.2.7.BUILD-SNAPSHOT (*)
| +--- org.springframework.cloud:spring-cloud-starter-archaius:1.2.7.BUILD-SNAPSHOT (*)
| \--- com.netflix.zuul:zuul-core:1.3.0
| +--- commons-io:commons-io:2.4
| +--- org.slf4j:slf4j-api:1.7.6 -> 1.7.25
| +--- com.netflix.archaius:archaius-core:0.6.0 -> 0.7.4 (*)
| +--- com.netflix.servo:servo-core:0.7.2 -> 0.10.1 (*)
| \--- com.netflix.netflix-commons:netflix-commons-util:0.1.1 (*)

Hopefully that will do it.

@ghost
Copy link
Author

ghost commented May 9, 2017

Once again, unfortunately, we saw the issue reoccur when using the Camden.BUILD-SNAPSHOT from 5/1/17.

The behavior of the long-running CLOSE_WAIT connections changed somewhat, with regard to the rate at which the number of such connections increased, but the app still ended up unresponsive after about a day running in our environment.

Any other suggestions would be appreciated.

Is there debug or trace logging around the bug fix code in Zuul that we can use to verify that our requests are actually using the fixed logic?

@ryanjbaxter
Copy link
Contributor

I dont see any logging around it. You are using Ribbon in your Zuul proxy and not specifying URLs for the routes, correct?

@ghost
Copy link
Author

ghost commented May 9, 2017

There's a mix... We use ribbon for the majority of routes, but we do have a few that forward requests to AWS S3 for static content using a bucket URL.

@ryanjbaxter
Copy link
Contributor

So the fix above would only apply to those requests using Ribbon, not the ones using URL routes. Maybe it is the URL routes that is causing the issue.....

@ghost
Copy link
Author

ghost commented May 9, 2017

It's possible... We'll try to determine whether the connections with the issue when running the snapshot version of Camden are all non-ribbon connections.

In the mean time, any word on an ETA for the Camden SR7 release (containing the fix)?

@spencergibb
Copy link
Member

SR7 went live a day or two ago

@ghost
Copy link
Author

ghost commented May 9, 2017

Thanks Spencer

@ghost
Copy link
Author

ghost commented May 10, 2017

@ryanjbaxter Based on the reporting of long-running CLOSE_WAIT connections we have on our Zuul instances, running with the Camden.BUILD-SNAPSHOT version still resulted in connections to EC2 instances (via Ribbon) in the long-running CLOSE_WAIT state, and the Zuul instances becoming unresponsive.

We'll continue our testing with the Camden.SR7 release and see if anything changes... I'll respond again if/when we have more information that might be helpful.

This issue was closed.
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

No branches or pull requests

2 participants