最近 kingshard 的功能开发节奏慢了许多。一方面是工作确实比较忙,另一方面是我觉得 kingshard 的功能已经比较完善了,下一步的开发重点应该是性能优化。毕竟作为一个 MySQL proxy,如果转发 SQL 的性能很差,再多的功能都无济于事。所以这个周末一直宅在家里优化 kingshard 的转发性能。经过两天的探索发现,将 kingshard 的转发 SQL 性能提升了 18%左右,在这个过程中学到了一下知识。借此机会分享一下,同时也是督促一下自己写博客的积极性。:)
在这就不细说了,感兴趣的请移步: https://github.com/flike/kingshard/blob/master/doc/KingDoc/kingshard_performance_profiling.md
1
flikecn OP 有感兴趣的吗?
|
4
struCoder 2015-11-04 09:25:57 +08:00
一直在关注这个项目。顶
|
5
zhujinliang 2015-11-04 09:31:00 +08:00
感谢楼主的测试与实践
之前写一个直播服务器时也注意到 SetNoDelay ,奇怪 go 为什么默认为 true ,以我的理解,这个不应该是 tcp 栈自动调度的么 |
6
0987363 2015-11-04 09:42:19 +08:00
正在做的东西跟这个比较类似, 看了下代码,没有说响应时间呢
我测试的单线 accept , read 到数据,原封不动写回去,客户端超时 2s ,休眠 1s 循环请求,最高不超过 2w 个连接 加上 reuseport ,最高 3w-4w 之间 协议栈缓冲区什么的都加大了的 |
7
MeOO 2015-11-04 09:43:27 +08:00
好东西,正在学 GO
|
8
gamexg 2015-11-04 09:48:50 +08:00
@zhujinliang false 会造成小包最大延迟一个 ttl 发送,也就是小包协议增加延迟。 true 是优化吞吐量,但是下载之类的真的需要吞吐量的时候一般每次 write 的数据都不会少,立即发送也足够填满 tcp 包。
|
9
nevernet 2015-11-04 09:55:01 +08:00
|
10
flikecn OP @zhujinliang 感觉对于需要大量发送数据包的服务来说,应该关闭这种选项。
|
14
oop99 2015-11-04 12:08:23 +08:00
mark, 在学 go
|
16
lenran 2015-11-04 20:19:23 +08:00
kingsoft?我在猜楼主的身份
|