我正在為我的公司運行一個 WEB 應用程式(PHP + MariaDB),在我的筆記型電腦上進行開發並在專用伺服器上運行生產版本。
最近,我開始測量效能,發現我的筆記型電腦的效能比伺服器更好。例如,其中一頁在我的筆記型電腦上產生約 50 毫秒,而在伺服器上產生約 130 毫秒。該時間是在 PHP 程式碼中使用 microtime() 測量的,因此伺服器的網路請求延遲被忽略。
問題是,伺服器在每一點上都應該比我的筆記型電腦表現得更好。 130ms 對於這個應用程式來說是可以的,因此我從未註意到這個事實。但如果可能的話,我想了解造成這種情況的原因。
我想下一步是測量程式碼不同點的時間,但差異是如此重要(> x2.5),以至於我不禁認為我錯過了一些東西。
以下是一些細節。
中央處理器
- 筆記型電腦:英特爾(R) 酷睿(TM) i5-5200U CPU @ 2.20GHz
- 伺服器:英特爾(R) 至強(R) CPU E3-1270 v6 @ 3.80GHz
記憶體
- 筆記型電腦: 16 GB DDR3 @ 1600MHz
- 伺服器: 32 GB DDR4 @ 2400MHz
作業系統
兩者都運行 Debian 9,因此它們運行相同版本的 Apache2、PHP、MariaDB...並且應該以大致相同的方式進行配置。
瑪麗亞資料庫
在伺服器上,它配置為使用 24GB RAM 作為 InnoDB 池大小,分為 12 個實例(所有表都使用 InnoDB)。目前,它僅使用 4.5GB RAM,因此磁碟存取不應該成為問題。
還有什麼?
- 交換使用量為空
- CPU大部分時間處於閒置狀態
- 特別是,測量是在沒有其他人使用該應用程式的時刻進行的
- 伺服器正在運行其他服務(例如 git、其他 WEB 應用程式),這些服務不應對效能產生如此大的影響,特別是考慮到 CPU 使用率較低