V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
flikecn
V2EX  ›  程序员

Go 语言项目性能优化实例剖析

  •  
  •   flikecn ·
    flike · 2015-11-04 08:46:10 +08:00 · 3705 次点击
    这是一个创建于 3088 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近 kingshard 的功能开发节奏慢了许多。一方面是工作确实比较忙,另一方面是我觉得 kingshard 的功能已经比较完善了,下一步的开发重点应该是性能优化。毕竟作为一个 MySQL proxy,如果转发 SQL 的性能很差,再多的功能都无济于事。所以这个周末一直宅在家里优化 kingshard 的转发性能。经过两天的探索发现,将 kingshard 的转发 SQL 性能提升了 18%左右,在这个过程中学到了一下知识。借此机会分享一下,同时也是督促一下自己写博客的积极性。:)

    在这就不细说了,感兴趣的请移步: https://github.com/flike/kingshard/blob/master/doc/KingDoc/kingshard_performance_profiling.md

    20 条回复    2015-11-07 15:20:52 +08:00
    flikecn
        1
    flikecn  
    OP
       2015-11-04 08:52:31 +08:00
    有感兴趣的吗?
    coolicer
        2
    coolicer  
       2015-11-04 08:58:41 +08:00
    @flikecn 小型的应用是不是用不到啊。
    flikecn
        3
    flikecn  
    OP
       2015-11-04 09:05:28 +08:00
    @coolicer 我觉得如果需要读写分离,就可以用到。
    struCoder
        4
    struCoder  
       2015-11-04 09:25:57 +08:00
    一直在关注这个项目。顶
    zhujinliang
        5
    zhujinliang  
       2015-11-04 09:31:00 +08:00
    感谢楼主的测试与实践
    之前写一个直播服务器时也注意到 SetNoDelay ,奇怪 go 为什么默认为 true ,以我的理解,这个不应该是 tcp 栈自动调度的么
    0987363
        6
    0987363  
       2015-11-04 09:42:19 +08:00
    正在做的东西跟这个比较类似, 看了下代码,没有说响应时间呢

    我测试的单线 accept , read 到数据,原封不动写回去,客户端超时 2s ,休眠 1s 循环请求,最高不超过 2w 个连接
    加上 reuseport ,最高 3w-4w 之间
    协议栈缓冲区什么的都加大了的
    MeOO
        7
    MeOO  
       2015-11-04 09:43:27 +08:00
    好东西,正在学 GO
    gamexg
        8
    gamexg  
       2015-11-04 09:48:50 +08:00
    @zhujinliang false 会造成小包最大延迟一个 ttl 发送,也就是小包协议增加延迟。 true 是优化吞吐量,但是下载之类的真的需要吞吐量的时候一般每次 write 的数据都不会少,立即发送也足够填满 tcp 包。
    nevernet
        9
    nevernet  
       2015-11-04 09:55:01 +08:00
    flikecn
        10
    flikecn  
    OP
       2015-11-04 11:26:11 +08:00
    @zhujinliang 感觉对于需要大量发送数据包的服务来说,应该关闭这种选项。
    flikecn
        11
    flikecn  
    OP
       2015-11-04 11:26:40 +08:00
    @nevernet 之前也参与了 Atlas 开发,不过现在开发了一个新的 proxy 。功能更强大。:)
    flikecn
        12
    flikecn  
    OP
       2015-11-04 11:27:52 +08:00
    @0987363 响应设计可以测了,没放上去。 QPS 越高,响应时间肯定越短。
    flikecn
        13
    flikecn  
    OP
       2015-11-04 11:28:36 +08:00
    @gamexg 是的。不同的应用,肯定不一样。
    oop99
        14
    oop99  
       2015-11-04 12:08:23 +08:00
    mark, 在学 go
    flikecn
        15
    flikecn  
    OP
       2015-11-04 18:41:42 +08:00
    @oop99 :)
    lenran
        16
    lenran  
       2015-11-04 20:19:23 +08:00
    kingsoft?我在猜楼主的身份
    flikecn
        17
    flikecn  
    OP
       2015-11-05 08:49:18 +08:00
    @lenran 嗯,我目前在 WPS 工作。
    lenran
        18
    lenran  
       2015-11-05 21:51:19 +08:00
    @flikecn 果然!楼主涉猎很广啊
    flikecn
        19
    flikecn  
    OP
       2015-11-06 09:00:41 +08:00
    @lenran 菜鸟一枚。
    lenran
        20
    lenran  
       2015-11-07 15:20:52 +08:00
    @flikecn 您过谦了!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3207 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:45 · PVG 21:45 · LAX 06:45 · JFK 09:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.