environs/openstack: provider leaks file descriptors
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
juju-core |
Fix Released
|
High
|
Dave Cheney |
Bug Description
Discovered during load testing
The PA will start to provision new machines till around ~200, then start to fail with
2013/04/19 02:37:59 WARNING environs/openstack: ignoring constraints, using default-
caused by: Get https:/
2013/04/19 02:37:59 DEBUG environs/tools: reading v1.* tools 2013/04/19 02:37:59 DEBUG environs/tools: found 1.10.0.
2013/04/19 02:37:59 INFO environs: filtering tools by series: precise 2013/04/19 02:37:59 WARNING environs/openstack: ignoring constraints, using default-
caused by: failed executing the request https:/
2013/04/19 05:29:11 ERROR state: TLS handshake failed: local error: unexpected message 2013/04/19 05:29:11 ERROR state: connection failed, paused for 2s: dial tcp 127.0.0.1:37017: too many open files 2013/04/19 05:29:13 ERROR state: connection failed, paused for 2s: dial tcp 127.0.0.1:37017: too many open files
This time around, the failure pointed to a fd leak which explains the DNS resolution problems exactly.
Go uses the system resolver library by default, these libraries are still based on select, which has a 1024 fd limit, so if you leak more than 1024 file descriptors (sometimes not even that many), suddenly you can't do DNS resolution.
Related branches
- Juju Engineering: Pending requested
-
Diff: 11 lines (+1/-0)1 file modifiedhttp/client.go (+1/-0)
Changed in juju-core: | |
status: | Triaged → In Progress |
Changed in juju-core: | |
status: | In Progress → Fix Committed |
Changed in juju-core: | |
status: | Fix Committed → Fix Released |
Further investigations lead me to believe the leak is the connection to the private control bucket.