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