The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
kslr

Go 的性能真是高到爆炸,不过快速增长也带来了一些问题

  •  
  •   kslr · Apr 7, 2018 · 10429 views
    This topic created in 3132 days ago, the information mentioned may be changed or developed.
    用自带的 Http 写了一个简单 api 服务器,在一个简陋的 512Mvps 上跑到了每天 60 多万次调用.
    系统用的 ubuntu 16.04 lts 没有任何优化
    现在知道调整 socket limit 和 open file limit 优化

    但是如何发现问题然后解决呢?而不是做了这些事情就可以避免。
    比如读取系统日志分析问题?我该从哪里下手分析呢?
    请求各位帮助
    Supplement 1  ·  Apr 7, 2018
    没有帮助一味捧 GO 的就没必要回复了
    Supplement 2  ·  Apr 7, 2018
    已经找到问题了,CloudFlare 部分城市故障

    p.s
    我只是提到了 GO 不知道怎么回事视线全转移到语言上面了。
    我想讨论的是随着请求量的增加如何调整系统参数,该从哪里下手。
    “这不是很容易实现吗” 搞不懂和主题有什么关系
    38 replies  •  2018-04-08 17:22:51 +08:00
    gamexg
    gamexg
    Apr 7, 2018 via Android
    1
    go pprof
    msg7086
    msg7086
    Apr 7, 2018❤️5
    2
    每秒不到 10 次,估计对 Go 来说就像挠痒痒。
    kslr
    kslr
    OP
    Apr 7, 2018
    3
    @gamexg #1
    @msg7086 #2 我指的是 linux 上面的 socket 等等
    bottleimp
    bottleimp
    Apr 7, 2018❤️4
    4
    你说个支持不了每天 60 万次请求的语言吧.
    zenio
    zenio
    Apr 7, 2018 via Android
    5
    带来了什么问题?
    cloverstd
    cloverstd
    Apr 7, 2018
    6
    pprof 和火焰图
    hiboshi
    hiboshi
    Apr 7, 2018
    7
    我感觉这点量 lnmp 架构也没问题
    webjin1
    webjin1
    Apr 7, 2018 via Android
    8
    rust 更屌
    pymumu
    pymumu
    Apr 7, 2018
    9
    我看成每秒 60 万了,每天 60 万,也太少了。
    neoblackcap
    neoblackcap
    Apr 7, 2018
    10
    哪怕是 8 个小时,也是一秒 21 个请求,我想我用 Python 都能实现这样的水平
    boyxupers
    boyxupers
    Apr 7, 2018 via iPhone
    11
    你 golang 党水平不错…
    binbinyouliiii
    binbinyouliiii
    Apr 7, 2018
    12
    “ Go 的性能真是高到爆炸”这句话很明显的就是夸 Go 啊,可不是“只是提到了 Go ”
    kslr
    kslr
    OP
    Apr 7, 2018
    13
    @binbinyouliiii #12
    @boyxupers #11 所以我就搞不懂了,好端端的帖子,最后变成了优越感了。没有人愿意坐下来讨论
    stzz
    stzz
    Apr 7, 2018 via Android
    14
    @kslr 你的标题内容把 go 拿掉,他们就会和你好好讨论问题了。
    widewing
    widewing
    Apr 7, 2018 via Android
    15
    问题是每秒十来个请求还没到需要调优的地步吧。。
    kslr
    kslr
    OP
    Apr 7, 2018
    16
    @widewing #15 以快速增长的业务抛出来论点,现在的请求是这几个星期增长的,并且一马奔腾。迟早都要面对这个问题,所以现在来讨论一下。
    不过看来凉了,我还是多研究文档吧,这里还是灌水生活琐事居多。
    binbinyouliiii
    binbinyouliiii
    Apr 7, 2018
    17
    @kslr #13 这么夸张的修辞手法,引不起战才不正常。所以楼主你还没认识到问题所在吗?
    lights
    lights
    Apr 7, 2018 via iPhone
    18
    原谅我没 get 到楼主的问题在哪里
    6ufq0VLZn0DDkL80
    6ufq0VLZn0DDkL80
    Apr 7, 2018
    19
    还以为是 60w qps。。。
    goodryb
    goodryb
    Apr 7, 2018
    20
    从楼主的标题以及描述来看,楼主是个新手 go 程序员吧

    性能好轮不到 go 称第一
    请求频率一般是 QPS,而不是每天 xx 万
    carlclone
    carlclone
    Apr 7, 2018
    21
    每天。。。还有以天为单位的吗
    fuxiaohei
    fuxiaohei
    Apr 7, 2018❤️1
    22
    “现在知道调整 socket limit 和 open file limit 优化”

    其实我觉得你理解的优化和一般做的 linux 优化不是一回事。ulimit 和 open file 这些都是基本系统配置问题,修改了就可以了。

    更多的优化是修改系统内核参数,比如 /etc/sysctl.conf 里的 net.core 和 net.ipv4 一类的,修改可能造成内核的不稳定。

    随着业务量的增加,多搞几台机器更保险。随便修改内核的东西,危险性很大。
    pathbox
    pathbox
    Apr 7, 2018 via iPhone
    23
    标题有点浮夸,还是要低调
    murmur
    murmur
    Apr 7, 2018
    24
    每天 60 万次 按照 12 个小时高峰跑的话 就是一小时 5 万次 一秒 10-20 次 别说 go 了 稍微好的设计跑带 SQL 的 CURD 都做的到吧
    Dart
    Dart
    Apr 7, 2018 via Android
    25
    我的 ruby python php 看起来也性能好
    Kabie
    Kabie
    Apr 7, 2018
    26
    ...最好还是说峰值的 QPS。。。不然根本体现不出“性能搞到爆炸”…………

    另外你以前用的都是啥才会觉得这个性能就爆炸了…………
    denggj28
    denggj28
    Apr 7, 2018
    27
    话说到了 1000qps 再说说调优吧
    bolide2005
    bolide2005
    Apr 7, 2018
    28
    呃,不是大家不配合,一方面你问的问题和 golang 本身没关系,另一方面,我估摸着大家都没太清楚你到底在问什么?

    试着给个建议,自己写的服务如果可靠性不是特别有把握的话,前面可以挂一个更加成熟的 server,比如 nginx,或者如果你用 aws 的话就放个 elb,阿里云我记得也有类似的负载均衡器,这些一般都有日志或者统计信息,假设这些前置的 server 不出问题,那么就能正常记录你自己写的 server 的错误信息,然后再根据错误信息做优化,是内存还是文件描述符或者别的什么原因,想一劳永逸除非服务特别简单,访问量很低,不然还是需要留有足够的日志信息
    lfzyx
    lfzyx
    Apr 7, 2018
    29
    @msg7086
    @bottleimp
    @pymumu
    @neoblackcap

    按照 24 小时来获取每秒值明显是个错误的想法,大量的用户会集中在某一个时段去调用 api,而不是分散在不同时段。
    tempdban
    tempdban
    Apr 8, 2018 via Android❤️1
    30
    啥叫性能优化?
    tlb miss 多了就上巨页
    cache miss 多了就减少上下文切换
    兄弟你开个 open file limit 就觉得发现了一片天么
    这都不叫调优啊兄弟。
    moult
    moult
    Apr 8, 2018 via iPhone
    31
    laravel:吓我一跳
    ql562482472
    ql562482472
    Apr 8, 2018
    32
    每天 60w,等你什么时候达到了 50QPS 再来讨论优化吧,遇到了才知道是什么问题
    Dart
    Dart
    Apr 8, 2018 via Android
    33
    发现一只菜鸟
    junweiyang
    junweiyang
    Apr 8, 2018
    34
    我们公司的 golang 服务,每台机器的 qps 是 500 !
    Felldeadbird
    Felldeadbird
    Apr 8, 2018
    35
    我以为楼主说每秒 60W。建议楼主补充一下帖子关于一天 60W 内, 峰值期间每秒的请求数。这样才可以体验到 GO 性能真的很爽。
    vjnjc
    vjnjc
    Apr 8, 2018
    36
    我也以为是好几万的 qps。。。
    msg7086
    msg7086
    Apr 8, 2018
    37
    @lfzyx 每秒本来就是说的平均,大量用户集中在某一时段去调用 API 也是你一厢情愿的想法,具体分布需要楼主自己提供。如果是面向服务器的监控 API 呢,服务器会白天多调用晚上少调用吗?如果面向的是全世界的人呢,调用分布不也平均吗。楼主只提供了 24 小时的访问量,除以 24 小时得到每秒访问量算什么错误的想法。

    就算我们退一步,楼主的 API 一天只跑一个小时,剩下 23 小时打酱油,那就是一个小时 60 万,也只是一秒 170 个请求,不还是轻轻松松。
    WinMain
    WinMain
    Apr 8, 2018
    38
    看来大公司喜欢招有高并发后台经验的人员是有道理的,哈哈哈。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2160 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 84ms · UTC 15:59 · PVG 23:59 · LAX 07:59 · JFK 10:59
    ♥ Do have faith in what you're doing.