天天看点

python就业怎样,开课吧:Python就业前景怎么样?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

二、什么时候开始介入调优?

解决了为什么要做性能优化的问题,那么新的问题就来了:如果需要对系统做一次全面的性能监测和优化,我们从什么时候开始介入性能调优呢?是不是越早介入越好?

其实,在项目开发的初期,我们没有必要过于在意性能优化,这样反而会让我们疲于性能优化,不仅不会给系统性能带来提升,还会影响到开发进度,甚至获得相反的效果,给系统带来新的问题。

我们只需要在代码层面保证有效的编码,同时在架构层面做好设计即可,具体架构设计可以参考如下几条行之有效的法则;

(1)系统的架构设计,如何在架构层面减少不必要的处理(网络请求,数据库操作等)例如:使用Cache来减少IO次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间;

(2)网络拓扑优化减少网络请求时间、如何设计拓扑结构,分布式如何实现?

(3)系统代码级别的代码优化,使用什么设计模式来进行工作?哪些类需要使用单例,哪些需要尽量减少new操作?

(4)提高代码层面的运行效率、如何选取合适的数据结构进行数据存取?如何设计合适的算法?

(5)任务执行方式级别的同异步操作,在哪里使用同步,哪里使用异步?

(6)JVM调优,如何设置Heap、Stack、Eden的大小,如何选择GC策略,控制Full GC的频率?

(7)服务端调优(线程池,等待队列)

(8)数据库优化减少查询修改时间。数据库的选取?数据库引擎的选取?数据库表结构的设计?数据库索引、触发器等设计?是否使用读写分离?还是需要考虑使用数据仓库?

(9)缓存数据库的使用,如何选择缓存数据库?是Redis还是Memcache? 如何设计缓存机制?

(10)数据通信问题,如何选择通信方式?是使用TCP还是UDP,是使用长连接还是短连接?NIO还是BIO?netty、mina还是原生socket?

(11)操作系统选取,是使用winserver还是Linux?或者Unix?

(12)硬件配置?是8G内存还是32G,网卡10G还是1G? 例如:增加CPU核数如32核,升级更好的网卡如万兆,升级更好的硬盘如SSD,扩充硬盘容量如2T,扩充系统内存如128G;

在系统编码完成之后,我们就可以对系统进行性能测试了。这时候,产品经理一般会提供线上预期数据,我们在提供的参考平台上进行压测,通过性能分析、统计工具来统计各项性能指标,看是否在预期范围之内。

在项目成功上线后,我们还需要根据线上的实际情况,依照日志监控以及性能统计日志,来观测系统性能问题,一旦发现问题,就要对日志进行分析并及时修复问题。