istio: Lots of broken pipe messages
Hi,
I see a lot of messages like this ones:
ERROR: logging before flag.Parse: W0121 12:33:25.582797 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:43924: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:28.685612 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:43950: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:28.926268 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44052: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:28.422343 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44496: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:29.604995 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:41466: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:32.603072 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44602: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:32.893017 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44580: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:32.709318 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44578: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:37.218254 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44642: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:38.867804 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44076: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:38.777183 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44700: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:43.155962 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:41060: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:43.890811 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44034: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:44.358863 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44126: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:45.005108 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:43906: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:45.534817 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44842: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:48.605499 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44114: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:48.771415 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44914: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:49.191500 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44124: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:48.478968 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:38184: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:51.281846 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44868: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:52.689080 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44938: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:51.161145 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:43174: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:53.365822 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44958: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:50.854020 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44890: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:56.178188 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44996: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:58.171454 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44072: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:33:57.975179 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45094: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:00.000635 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:41904: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:01.320217 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:42840: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:02.670353 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45112: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:03.559636 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44148: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:04.878781 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45118: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:06.977619 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44092: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:07.475932 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44398: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:10.476942 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44140: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:10.690533 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45184: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:11.054660 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45272: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:14.805378 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44260: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:15.875566 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:41334: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:16.758144 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45522: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:17.875547 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44134: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:18.084283 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44156: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:19.068577 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44504: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:20.782443 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44270: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:21.564345 1 discovery.go:112] Overriding cached data for entry /v1/registration/absolutegrounds-helper-sources.integration-cb.svc.cluster.local%7Chttp-in
ERROR: logging before flag.Parse: W0121 12:34:21.671255 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44324: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:24.753824 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45856: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:24.869749 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45952: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:24.871398 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45938: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:24.961953 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46004: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:25.772004 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45982: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:25.965046 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44762: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:27.672164 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45994: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:28.860328 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46134: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:29.662173 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44392: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:30.065978 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46158: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:32.983798 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46126: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:33.254526 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46308: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:33.255331 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46316: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:33.375688 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46226: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:33.559052 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44164: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:33.778104 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44364: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:34.478453 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44576: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:38.858929 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46474: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:39.256161 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44574: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:40.772071 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44462: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:40.864003 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44566: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:41.495797 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44530: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:41.571344 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:42030: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:43.375720 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46634: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:43.380749 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44390: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:43.757054 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46620: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:44.271456 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44320: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:44.484138 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46568: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:44.660634 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44760: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:43.185877 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46718: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:45.272538 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46530: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:45.760471 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44590: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:46.596645 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:45396: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:47.875895 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46956: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:47.960908 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46964: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:48.860727 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46864: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:49.372279 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:44646: write: broken pipe
ERROR: logging before flag.Parse: W0121 12:34:49.876766 1 discovery.go:590] write tcp 127.0.0.1:8080->127.0.0.1:46866: write: broken pipe
Why all this noise?
Istio: 0.4.0 Kubernetes: 1.8.4
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Comments: 24 (22 by maintainers)
It seems the issues I saw were related to someone placing an invalid rule out there editing the notes above to reflect current status.
I managed to get pilot working across all namespaces in our environment finally after making a few tweaks to pilot.
I’ll do some additional testing today with the cache flush re-enabled to see if things are still working for us. I think basically what is happening is that pilot waits on the cache mutex so long that the clients have given up before it can respond. Since we have a large number of services, ingresses and endpoints across our cluster there is a constant stream of events and each event updates cache and many cause cache flushes. There is what appears to be a race condition where if the cache record doesn’t exist yet and multiple requests are asking for the same record it will get updated in cache one time for each request (which is quite a lot in a large environment).
Would it make sense for the cache flushes to be key specific?
cc @ldemailly This is the related issue to the heavy cpu usage we are seeing on the injected proxy containers.
a few stats that might help from our setup here. We have istio running in the default istio-system namespace and only a handful of the services running w/ the manually injected proxy.
What do you think about adding a startup option to pilot so we could filter on an annotation like
sidecar.istio.io/inject: "true"
? It’s not really practical for a prod setup but might help for dev/test while we are experimenting.Filtering on a specific
--appNamespace
isn’t really helpful since I want a high number of teams to experiment in their own namespaces.