问题
如何优化提升系统的性能
答案
系统性能是一个永恒的话题,不必幻想在无限高频率的请求面前系统能正常完成请求和响应,因为这是做不到的,但是对于较高频率的用户请求系统要能给出正常的请求和响应,这是衡量系统优劣的一个重要标志。提升系统性能,应该从以下几个方面考虑:
(1)存储。数据是存储于硬盘的,即便是数据库中的数据,本质上也是存储在硬盘,硬盘的读写效率是性能的第一决定性因素。因此,能使用固态硬盘就不要使用机械硬盘,当然,成本也是一个考量因素。
(2)数据库。在存储介质一定的情况下,数据库管理系统的性能就是另一个重要的决定性因素,例如oracle的适用场景与mysql的使用场景就是不一样的,而对不同的数据库,就有专门的调优策略,以适应不同需求对数据库的适配。
(3)网络。如果系统是分布式系统,A系统调用B系统是要经过网络传输的,这时候,调用或者数据离得近是很重要的,应该将逻辑上离得近的服务在物理上也离得很近,同时也要注意序列化策略,适当压缩。
(4)容器。tomcat的500并发量与nginx高达50000的并发量显然不是一个级别,但tomcat有些只能用它的场景,所以,尘归尘土归土,让每个组件做自己最擅长的事情。例如,将常用的api由tomcat发布;将静态资源例如html,js,css由nginx发布;图片放在fastdfs;海量数据搜索使用elasticsearch,如需要,服务都可以做成集群。
(5)算法,其实就是让CPU高效执行,优化源代码,特别注意系统中循环的使用,对象的创建时机,资源的及时释放,线程池的使用,定时器的使用,安全校验的强度,事务的强度;如有可能选择执行效率高的语言,例如,若都能选择,那么肯定首选C++而不是java。
要特别注意的是,同样的优化策略对于不同的场景是效果不同的,例如高密度IO操作的场景与高频CPU计算的场景就需要采取不同的策略,没有放之四海而皆准的优化方式,要根据现有条件,业务需求,项目特征实际分析综合施测,且要不断迭代。
网友评论