系统优化怎么作-开篇

前言

系统优化是一个系统工程, 须要长期监控长期及时解决的事情。我一直在开发的一线,积累了一些经验,开这个专栏。欢迎你们一块儿讨论,互相学习及进步。sql

主要从两个方面来讨论数据库

  1. 新系统上线前须要作些什么
  2. 老系统优化有哪些途径

新系统

系统在设计时要考虑系统最大的qps,tps等指标,系统整个至少能支持业务最高峰*2来设计系统。是否是系统支持越高指标越好呢,单纯来说的确最好, 但"世界没有免费的晚餐",系统要支持更高的并发处理能力,除了代码层面的优化,架构层面还须要引入公共设施好比缓存,消息系统等,引入更多的设施带来的风险就会增长,不符合系统"简单可依赖"的原则。缓存

老系统

俗话说: 找到问题所在,就解决了一半的问题。系统愈来愈慢有哪些缘由, 怎么能找到缘由呢,列举一下我以前碰到过几类场景。tomcat

  1. 系统依赖的外部接口反应慢,而本系统http没有用链接池,致使系统大量http请求hang住。机器CPU飙高,应用服务器tomcat没法执行新的请求大量拒绝服务。
  2. 系统上线致使不怎么优化的sql上线, 有比较多的慢sql致使数据库响应变慢致使系统总体变慢
  3. 数据库某些表的数据增加快,达到几千万条级别时出现系统变慢,由数据量增大致使的慢查询
  4. 系统输出日志量太大没有及时切分,致使系统IO过大,CPU过载
  5. 代码中对于线程使用不太合理,致使大部分线程处理等待状态,线程切换耗费太长时间
  6. 代码中存在资源互相锁的状况,这里资源主要IO及网络资源,还有队列资源等致使没法高效的并行处理。

这里有两个讨论

  1. 为了提升效率,何时值得引入缓存,引入缓存会有什么问题?
  2. 你碰到过什么问题致使线上服务变慢,如何找到缘由的,如何解决的呢?
相关文章
相关标签/搜索