| 12345678910111213141516171819202122232425262728 |
- URL = require "url"
- seconds = 1000
- # In Node 0.10 the default is 5, which means only 5 open connections at one.
- # Node 0.12 has a default of Infinity. Make sure we have no limit set,
- # regardless of Node version.
- require("http").globalAgent.maxSockets = Infinity
- require("https").globalAgent.maxSockets = Infinity
- module.exports = OpenSocketsMonitor =
- monitor: (logger) ->
- interval = setInterval () ->
- OpenSocketsMonitor.gaugeOpenSockets()
- , 5 * seconds
- Metrics = require "./metrics"
- Metrics.registerDestructor () ->
- clearInterval(interval)
- gaugeOpenSockets: () ->
- Metrics = require "./metrics"
- for url, agents of require('http').globalAgent.sockets
- url = URL.parse("http://#{url}")
- hostname = url.hostname?.replace(/\./g, "_")
- Metrics.gauge "open_connections.http.#{hostname}", agents.length
- for url, agents of require('https').globalAgent.sockets
- url = URL.parse("https://#{url}")
- hostname = url.hostname?.replace(/\./g, "_")
- Metrics.gauge "open_connections.https.#{hostname}", agents.length
|