PHP網站部署


知乎看到   有時間驗證一下,覺厲
 
作者:eechen
鏈接:https://www.zhihu.com/question/60609134/answer/178175522
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。

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進程池中處理,避免影響默認進程池的服務.

7.開啟PHP到MySQL的持久連接,使一個PHP-FPM工作進程保持一個到MySQL的長連接,避免每次請求都重復建立一次數據庫連接.

8.虛擬機最容易出現的性能瓶頸主要還是磁盤,CPU倒還是其次(可能存在超售,且虛擬化后的性能損失),而內存一般無法超售.

假設一台32核心的物理服務器上跑了32個虛擬機(VPS),那物理母機的磁盤IOPS就會被32個虛擬機分攤.

所以一般服務商都建議客戶把存在大量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中可能存在性能問題的地方.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM