1.若是能夠,系統遷移到Linux,PHP升級到PHP7(穩妥起見,建議使用7.0而非最新的7.1).數據庫
2.PHP開啓OPcache緩存,把PHP腳本解析後生成的OPcode緩存在共享內存中,避免每次請求重複解析.緩存
3.Linux開啓HugePages,OPcache開啓huge_code_pages.服務器
4.能夠考慮關閉OPcache對PHP文件的時間戳驗證和開啓opcache.file_cache來提高性能.運維
5.PHP-FPM默認進程池的進程數設置爲固定(static)的1到1.5倍CPU核心數,減小系統上下文切換帶來的開銷.性能
6.對於存在明顯I/O阻塞的腳本,能夠配置Nginx轉發到一個動態(dynamic/ondemand)的PHP-FPM進程池中處理,避免影響默認進程池的服務.this
7.開啓PHP到MySQL的持久鏈接,使一個PHP-FPM工做進程保持一個到MySQL的長鏈接,避免每次請求都重複創建一次數據庫鏈接.阿里雲
8.虛擬機最容易出現的性能瓶頸主要仍是磁盤,CPU倒仍是其次(可能存在超售,且虛擬化後的性能損失),而內存通常沒法超售.日誌
假設一臺32核心的物理服務器上跑了32個虛擬機(VPS),那物理母機的磁盤IOPS就會被32個虛擬機分攤.code
因此通常服務商都建議客戶把存在大量I/O讀寫的服務如數據庫放到專門的地方,好比阿里雲的雲數據庫RDS,把圖片等靜態資源放到CDN.進程
因此,你能夠考慮把8核心16GB內存的雲服務器拆成一臺4核心8GB內存的雲服務器(跑PHP)和一臺4核心8GB內存的雲數據庫(跑MySQL).
虛擬化技術中,CPU能夠超售,Linux的vmstat的st值就反映了超售狀況.
st : time stolen from this vm by the hypervisor 虛擬化hypervisor從當前虛擬機vm偷走的時間.
若是st這個值很高的話,說明你的VPS提供商的CPU資源有限,而你沒能搶過別人,頗有可能就是VPS提供商超售了.
因此提供商會推出一個價格更高的獨享型的雲服務器.
9.若是不使用RDS而是本身運維MySQL(InnoDB表),加大innodb_buffer_pool_size能明顯提高讀性能.innodb_flush_log_at_trx_commit設爲0能提高寫性能,但宕機時會致使丟失上1秒鐘寫入的數據.另外,關閉二進制日誌(log-bin)或者下降二進制日誌寫入頻率(sync_binlog=1000)也能提高寫性能.
10.查看PHP-FPM慢日誌(slowlog)和MySQL慢日誌(slow_query_log),找出PHP和SQL中可能存在性能問題的地方.