作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我在Go中有一个常规的HTTP Server。如何获得当前空闲和 Activity 的TCP连接?
httpServer := &http.Server{
Handler: newHandler123(),
}
l, err := net.Listen("tcp", ":8080")
if err != nil {
log.Fatal(err)
}
err = httpServer.Serve(l)
if err != nil {
log.Fatal(err)
}
最佳答案
创建一个类型以计算响应于服务器connection state更改而打开的连接数:
type ConnectionWatcher struct {
n int64
}
// OnStateChange records open connections in response to connection
// state changes. Set net/http Server.ConnState to this method
// as value.
func (cw *ConnectionWatcher) OnStateChange(conn net.Conn, state http.ConnState) {
switch state {
case http.StateNew:
atomic.AddInt64(&cw.n, 1)
case http.StateHijacked, http.StateClosed:
atomic.AddInt64(&cw.n, -1)
}
}
// Count returns the number of connections at the time
// the call.
func (cw *ConnectionWatcher) Count() int {
return int(atomic.LoadInt64(&cw.n))
}
配置net.Server以使用
method value:
var cw ConnectionWatcher
s := &http.Server{
ConnState: cw.OnStateChange
}
使用
ListenAndServe,
Serve或这些方法的TLS变体启动服务器。
cw.Count()
以获取打开的连接数。
关于go - 如何在Go中获取空闲和 “active”连接的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51317122/
我是一名优秀的程序员,十分优秀!