更新:它不是 memcached,它有很多 TIME_WAIT 状态的套接字:% ss -sTotal: 2494 (kernel 2784)TCP: 43323 (estab 2314, closed 40983, orphaned 0, synrecv 0, timewait 40982/0), ports 16756顺便说一句,我已经修改了以前的版本(如下)以使用 Brad Fitz 的 memcache 客户端并重用相同的 memcache 连接:http://dpaste.com/1387307/旧版本:我已经将 Go 中最基本的 Web 服务器放在一起,它的处理程序函数只做一件事:从 memcached 中检索密钥将其作为 http 响应发送给客户端这是代码:http : //dpaste.com/1386559/问题是我在 memcached 上收到了很多连接重置:2013/09/18 20:20:11 http: panic serving [::1]:19990: dial tcp 127.0.0.1:11211: connection reset by peergoroutine 20995 [running]:net/http.func·007() /usr/local/go/src/pkg/net/http/server.go:1022 +0xacmain.maybe_panic(0xc200d2e570, 0xc2014ebd80) /root/go/src/http_server.go:19 +0x4dmain.get_memc_val(0x615200, 0x7, 0x60b5c0, 0x6, 0x42ee58, ...) /root/go/src/http_server.go:25 +0x64main.func·001(0xc200149b40, 0xc2017b3380, 0xc201888b60) /root/go/src/http_server.go:41 +0x35net/http.HandlerFunc.ServeHTTP(0x65e950, 0xc200149b40, 0xc2017b3380, 0xc201888b60) /usr/local/go/src/pkg/net/http/server.go:1149 +0x3enet/http.serverHandler.ServeHTTP(0xc200095410, 0xc200149b40, 0xc2017b3380, 0xc201888b60) /usr/local/go/src/pkg/net/http/server.go:1517 +0x16cnet/http.(*conn).serve(0xc201b9b2d0) /usr/local/go/src/pkg/net/http/server.go:1096 +0x765created by net/http.(*Server).Serve /usr/local/go/src/pkg/net/http/server.go:1564 +0x266我已经小心地设置 Linux 内核网络,以免妨碍(关闭 SYN 泛洪保护等)。...... 然而在使用“ab”(下面)进行测试时,我遇到了这些错误。ab -c 1000 -n 50000 "http://localhost:8000/"我在任何地方都没有任何迹象表明它是内核(dmesg、/var/log)。
2 回答

互换的青春
TA贡献1797条经验 获得超6个赞
从 YBC 库尝试memcache 客户端。与gomemcache不同,它只打开和重用一些与 memcache 服务器的连接,而不管通过客户端发出的并发请求的数量。它通过将并发请求通过少量打开的连接传输到内存缓存服务器来实现高性能。
可以通过ClientConfig.ConnectionsCount配置到内存缓存服务器的连接数。
- 2 回答
- 0 关注
- 246 浏览
添加回答
举报
0/150
提交
取消