专栏名称: MacTalk
MacTalk 开通于2012年末,内容起于 Mac 而不止 Mac,内容覆盖了技术、创业、产品和人文思考。文风有趣,又有一点力量。相关图书《MacTalk·人生元编程》《MacTalk·跨越边界》
目录
相关文章推荐
笔记侠  ·  无论活在哪里,最终都活在体验里 ·  4 天前  
科技兽  ·  等明年 iPhone 17?标准版也要支持 ... ·  1 周前  
科技兽  ·  等明年 iPhone 17?标准版也要支持 ... ·  1 周前  
51好读  ›  专栏  ›  MacTalk

程序员需要跨过性能这个坎

MacTalk  · 公众号  · 科技自媒体  · 2017-07-13 13:00

正文

题图:from zoommy

昨天下午,小密圈的创始人吴鲁加在微信上和我说:

池老师好,俺们有几位同事八月参加你们的会去。
啥会啊,我们会可多了。

是 APMCon,就是那个应用性能管理大会。我们希望把性能提升一下,几个程序员看了你们大会的几个主题,欲罢不能啊。
万一是标题党呢……

不管,反正回来以后还宕机就扣工资!

找谁说理去?

我差不多从小密圈的初始版本就开始使用这个平台了,和吴鲁加也比较熟,从用户寥寥到迅速增长,从免费、群聊、私密朋友圈到收费圈子,不谦虚的说,我见证了整个小密圈成长的过程,并且贡献了一点微薄的力量。与很多创业公司一样,初期小密圈不断的调整产品形态,以期能够站在一个正确的赛道上。关于这一段,可以参见「计划没用为什么还要做计划」一文。在那篇文章里你可以看到,创业者在那个阶段要解决的方向和生死的问题,计划都过不了半年,比如:

小密圈这一年的发展让我有一点不敢轻言三年后的小密圈的状态。有一次我跟 Tony 聊天,我很装逼的说我们半年到一年的计划是什么的时候,被他很不客气的打断了。他说「你想清楚下个礼拜要干嘛,三个月内要做成什么样子就行了,如果真的说半年到一年,你可能自己都不信」。

这个阶段你让创业者把精力放在技术架构、系统扩展和性能优化上,他打死都不会干,就那三瓜俩枣的初始用户,完全不构成威胁嘛。等产品上了正轨,用户开始逐步增加,当数据到达了某个临界点的时候,以前欠的技术债 —— 比如性能问题就开始出来找麻烦了。我记得有阵子我常常给吴老师提 bug:

唔,数据刷不出来了,但 Web Server 还活着。
404,看起来 OpenResty 挂了。
图片不显示了,围笑
这次好,系统干脆宕机了……

每次我发完微信,吴老师拔腿抹嘴,就去找研发和运维算账去了。我总是告诉他急不得,性能相关的坑,博大精深,开始填坑的时候,不要着急,填啊填啊,慢慢你就会就习惯了。

注:以上沟通内容经吴鲁加老师审核发布在 MacTalk 上

性能这摊子本来就是大事,涉及软硬件的方方面面,加上现代业务系统的复杂度越来越高,交叉起来,问题越发难以解决和定位。一个通用的互联网服务,会包含这些内容:安全设备,比如 Waf 等。Web Server,比如 OpenResty,除了做本职工作,还要用 Lua 去做限流分流负载均衡等等。前端后端分离,反模式。缓存,处理热点数据。消息队列,用来处理分布式数据交换。数据埋点和分析。持久化层,结构化数据和非结构化数据……等等。

以上只是生产系统的一部分功能而已,这种复杂性的挑战导致今天的软件工程师正在迅速地丧失对整个生产系统的洞察力和掌控力。在如此复杂和庞大的系统中,各种问题发生的概率大大提高了。有的问题可能是致命的,比如 500 错误页,比如内存泄漏,再比如返回错误结果之类。我们可能会发现软件在某些时候运行的非常缓慢,或者在某些机器上运行得非常缓慢,没有人知道为什么,或者错误什么时候发生。

程序员们常常念叨的两句话是:我什么都没动。刚才还好好的。

他们说的都真话!

如何解决性能问题呢?其实没什么好的办法。就像这篇文章的题目说的,这是成功的互联网创业公司都需要跨过的一道坎,你需要扬起长刀,杀入敌阵,逢山开路,遇水搭桥,看见坑就填,碰到 bug 就砍……最后擦拭掉刀锋上的血迹,提刀而立,你会发现,新问题又出现了:)

有没有套路呢?也有。首先在构建系统的时候,尽可能去构建高可用和高并发的系统。其次,在遇到问题的时候能够进行错误追踪,通动态调试技术迅速定位问题,让生产系统在最短的时间里恢复运行。

关于第一点,推荐张开涛老师的《亿级流量网站架构核心技术》,这本书涵盖了复杂均衡、限流、降级、缓存、并发、队列、扩容等方方面面的技术,从实践中来,到人民中去,可以帮助你搭建自己的高可用系统。

关于第二点,推荐 Gregg 老师的《性能之巅》,这本书 OpenResty 的创始人春哥推荐过,书中从操作系统、CPU、文件系统、磁盘、网络、内存、调试工具等层面详细描述了如何进行系统层面的性能优化和动态追踪。DTrace、SystemTap 这样的工具在书中都有详细的描述,这本书可以帮助你在系统出现性能问题的时候,立竿见影,快马追踪,杀敌于无形之中。

有没有第三点呢?有啊,比如就像吴老师的做法,让程序员们走出来,参加 APMCon 这样的性能大会,看看一些已经成功的互联网企业是怎么做的,遇到过那些坑,做过哪些艰难的决定,解决过什么问题。

这次的 APMCon 大会,我是联席主席,所以有责任推荐一下。这次大会我们邀请了相关领域最好的讲师,比如:

  • 微信的开发者,他们是如何通过问题监控和深度分析,依据终端重度⽤户体验的通⽤优化原则,对出现的故障进行修复和提升用户体验的。

  • 熊猫直播的技术专家,分享熊猫 TV 创新性的根据弹幕信息对 CDN 进行多个维度的预判,采用不同的 CDN 进行拉流观看,确保用户最佳观看体验。

  • 在线教育平台 tutorabc(原 vipabc)架构师,如何对订课和DCGS排课环节进行了全面监控和业务层面分析预警的,结合上课环节涉及到的音视频流处理系统与监控,做到了动态感知线上状态,并能够做出智能反馈。

  • ……

十一个专场:

  • CDN加速

  • 数据库运维

  • 智能化运维AIOps

  • 微服务与容器最佳实践

  • 前端性能优化

  • 大规模网络架构优化

  • 应用程序拓扑发现和可视化

  • Web服务器性能优化

  • 移动性能优化

  • 云架构优化

  • 金融应用性能优化

看完这些标题还真是让人心动呢!感兴趣的童靴可以扫描二维码了解详情。购票时输入 MacTalk 读者优惠码「APMCon_MacTalk」,可以优惠600元。

不知道三三她们怎么用了这张图,还说笑起来很温暖,我怎么觉得那么不怀好意呢?哎