2019-07-21 09:49:25 by冲冲php
计算机的体系结构主要包括三部分:硬件、操做系统、应用程序。其中,硬件有CPU、内存、硬盘等;操做系统有进程、虚拟内存、文件系统、内核等;应用程序有Apache、MySQL、Nginx、Memcahed等。前端
性能调优就是对计算机硬件、操做系统和应用程序有至关深刻的了解,调节三者之间的关系,实现整个系统(包括硬件、操做系统、应用程序)的性能最大化,并能不断的知足现有的业务需求。mysql
性能优化一般着重考虑对操做系统和应用程序的调优。ios
(1)不管是租用服务器仍是够买服务器,都须要选择服务器的硬件配置。选择依据主要是服务器的应用类型,也就是服务器的业务需求。算法
(2)硬件的性能调优主要包括两方面:sql
① 参数调优:《Linux Performance Tuning》(Linux 性能调优)指出,厂商发布的OS,经过保守的默认配置,可以兼容市场绝大部分计算机。可是你能够调节OS的配置参数来得到更高的性能,好比你有个高性能的磁盘,可是若是你的操做系统中一些选项参数默认没有启动的话,就不能实现这些高级功能来提升硬盘性能。数据库
② 版本选择:RedHat、CentOS等操做系统在项目实施或网站架构中较多使用,它们是针对企业级应用而开发的操做系统。而Ubuntu之类的操做系统对桌面支持得比较好,因此选择发行版本时得注意(通常企业中用的比较多的是CentOS)。再有就是咱们通常不要选择最新的发行版,由于刚出来的发行版相对来讲bug还比较多,不要先当“小白鼠”了。好比:刚刚出来CentOS 7 等过一段时间稳定了再使用,目前咱们能够选择 CentOS 6.4 或 6.5便可。可是新版本也有不少好处,新版本中加入了不少新功能,去掉许多已知bug,对于一些不重要的应用,可尝试使用新的操做系统。缓存
应用程序的调优对象一般是Apache、Nginx、MySQL。性能优化
(1)MySQL的调优服务器
① Buffer:缓解应用系统上下层组件之间的性能差别,好比一般的 IO Buffer。
② Cache:一般用于读多写少的状况,也是用来缓解应用系统上下层组件之间的性能差别。好比,应用 local cache,Memcached/Redis。
③ Batch:网络或磁盘里的批量操做,经过合并小任务或小请求为大任务大请求,来提高数据传输效率低。好比 TCP 中的 nagle 算法,就是经过合并多个小分组来提高网络传输效率的。
④ Pool:经过减小对象建立,链接创建的开销来提高性能。好比线程池,链接池,对象池。
⑤ Concurrency:经过将串行改成并行,能过有效的下降系统延时。在多核系统中,并行处理才能提高 CPU 使用率。
⑥ Lock Less:多线程访问共享资源时,一般须要加锁。重量级的锁每每引发线程切换,而线程切换很是耗时。那么能够经过优化锁的使用来提高性能,优化锁有两种方法:
A. 经过减少锁的粒度,分离竞争点来减小竞争。好比 Java 里 HashTable 中锁的粒度是整个对象,ConcurrentHashMap 中锁的粒度只是一个 Segment。
B. 在竞争较少的状况下,使用轻量级锁来代替重量级锁,减小线程切换带来的性能消耗,好比自旋锁代替互斥锁。
性能优化是一个团队的事情。项目的开发流程主要是:
一个项目(业务)存在性能问题,不会只是运维部门须要性能调优而是全部部门一块儿解决该性能问题。由于须要调优的地方可能出如今产品,也可能出如今程序上(*.php),也多是业务须要自己就有问题,也多是运维的环境搭建有问题。但参加性能调优的更多的是开发、运维、测试和监控。
使用监控工具为性能调优提供数据,找出瓶颈。
硬件:
操做系统:
应用程序(MySQL):
A, 肯定调优目标。首先,跟上司明确性能提高的数值(10%、20%、或者更大)。而后,各部门各司其职。一般填补开发部门的代码坑(例如优化SQL查询),性能的提高效率远高于优化OS。
B. 具体调优步骤:
C. 检测调优结果。每次性能调优后必须对性能进程检测,如Web服务器的ab工具,就是一个很好的检测工具,每次调优后都能看到具体的变化。
A. 服务器性能监控
B. 服务性能监控(MySQL)
参考:
https://blog.csdn.net/zenglinhua1/article/details/79047514
https://blog.csdn.net/hustspy1990/article/details/77834550