前言

API接口响应慢?
SLA一直提不上去?
其实这是后端程序员想进阶必须要跨过去的坎:就是把它优化掉。
那么这其中到底有没有套路呢?答案是:有的。

本文将介绍目前正在用并且十分“无脑”有效的这个套路。

正文

埋点追踪分析,找出真凶

首先呢,第一部肯定是在关键函数(有db、文件、复杂计算等操作)的前后,进行时间的记录。

此时去找log就可以找到每一步跑的时间。根据实际可以一眼看出是哪一步跑慢了。那么这一步就是主要优化的方向了。

ps:此类对线上接口产生的耗时基本可以忽略,所以放心用。

根据上下文,找到解决方案

既然找到了跑得慢的函数。那么就开始优化吧。

先说前提:前端已有lvs负载均衡、nginx反向代理转发请求。

首先需要分析为何跑慢了?
1.是不是资源层面的瓶颈?
2.是不是缓存没添加,如果加了,是不是热点数据导致负载不均衡?
3.是不是有依赖于第三方接口?
4.是不是接口涉及业务太多,导致程序跑很久?
5.是不是sql层面的问题导致的等待时机加长,进而拖慢接口?
6.网络层面的原因?带宽?DNS解析?
7.代码确实差???
8.未知?

暂时就想到这么多,有补充欢迎留言,谢谢。

对症下药
1.资源紧张,加机器,干上去,负载均衡搞起来
2.加缓存可以解决的问题都不是什么大问题,存在热点数据可以将某几个热点单独出来用专门的机器进行处理,不要因为局部影响整体
3.一方面与第三方沟通接口响应问题,另一方面超时时间注意把控,如果可以非核心业务能异步久异步掉。
4.把非核心的业务进行异步化操作。记住如果代码层面是非核心业务,但是会影响用户感知,需要慎重决定是否异步。
5.如果是代码不良导致加锁了,尽量优化索引或sql语句,让锁的级别最小(到行),一般来说到行差不多了。如果是单个sql跑慢了,需要分析是不是索引没加或者sql选的索引错了,索引该加的就加了,该force index也加了。
6.网路原因,需要联系运营商一起商量下怎么解决,单方面比较难有大的优化。
7.代码确实差,那也无药可救了。我选择狗带。

最新文章

  1. Chrome 开发工具之Console
  2. WebApi身份认证解决方案:Basic基础认证
  3. JQuery基础一
  4. PL/SQL之--流程控制语句
  5. Codeforces Round #237 (Div. 2) A
  6. hdu-----(4857)逃生(拓扑排序)
  7. html5 飞船动画
  8. Tcp抓包以及tcp状态解释
  9. Linux学习笔记19——信号2
  10. iOS基础 - Quartz 2D绘图的基本步骤
  11. Java运行内存结构分析
  12. Linux配置文件注释注意:行首注释,不要行中注释
  13. Python开发——数据类型【集合】
  14. toml
  15. SQL--结构化的查询语言
  16. Flex 数组问题!
  17. [Linux基础环境/软件]Linux下安装resin web服务器(涉及gcc、jdk环境部署)
  18. 一款DIY移动电源的性能
  19. 1 python使用networkx或者graphviz,pygraphviz可视化RNN(recursive)中的二叉树
  20. Java数据封装类

热门文章

  1. ubantu使用ssh服务
  2. matlab学习笔记8 基本绘图命令-特殊图形绘制
  3. jxls:用jx:if实现字典值格式化
  4. 【Python学习之三】流程控制语句
  5. php常用的验证
  6. 讲解JavaScript中对闭包的理解
  7. 08-Maps
  8. 从docker中备份oracle和mongo数据
  9. Kubernetes1.11.1 使用Nvidia显卡配置方法
  10. 在 WPF 中获取一个依赖对象的所有依赖项属性