我在AWS上運行一箇舊的PHP(7.1)/ NGINX(1.10.2)應用程序。該應用程序在AWS上運行超過幾個月。自2天以來,我們遇到了高延遲問題。但它不會影響整個頁面。只有「密集型」PHP流程似乎在交付內容方面存在問題。在AWS上突然變慢的PHP應用程序
現在我查了很多其他相關的主題,但沒有任何東西指向正確的方向。
首先:等待時間與網絡無關,因爲當從服務器向本地主機發送請求時,也會收到這些等待時間。它似乎也與數據庫無關(該網站可以在< 3ms內連接到RDS DB,而DB CPU〜20%,內存自由> 2GB看起來不錯)。連接到數據庫並運行網絡服務器進行的一些查詢也表現良好。
網絡服務器本身不佔用太多的硬件資源(CPU 10-25%和內存空閒〜2GB)。此服務器上未安裝任何cronjobs /計劃任務。服務器上仍有超過50%的iNodes可用。網關正在檢索/傳輸8-25MB /秒。我們根本不監視任何類型的DoS。
我已經檢查並試圖調整PHP FPM設置(memory_limit,進程管理,子進程等)。這裏沒有什麼幫助。取消/激活OPCache確實沒有影響。
即使當我使用先前安裝的AMI並啓動新服務器時,也會再次發生相同的延遲問題。在多個可用區域中運行應用程序時也是如此。
要查看PHP花費的時間,我使用了blackfire.io,實際上它告訴我它大部分時間都用在了mysql交互上(這並不奇怪,因爲應用程序發送大量連接等的髒查詢。和它唯一的性能昂貴的東西在這裏..)。我還爲代碼本身添加了一些調試輸出。它通常在不到6秒內完成(這可悲的是我們從搜索中知道的正常平均值)。
根據目標羣體的等待時間平均在3-8秒之間,但我們也發現很多請求超時(30-60秒)的延遲。
在這一點上,我甚至不確定要在這裏提供什麼。我不想在這裏粘貼每個相關的配置等。所以請告訴我你需要什麼幫助:/
php-fpm/nginx日誌不會記錄任何與此問題有關的內容。與syslog一樣。唯一可以找到的是Timed out waiting for reply from 91.189.89.199:123 (ntp.ubuntu.com)
,但即使date
仍然同步.. PHP FPM慢日誌(超時設置爲5秒)也是空的。 ELB訪問日誌只監視高「backend_processing_time」。
Nginx實際上將請求路由到S3存儲區,除了一個S3掛載之外,我們沒有任何大量臨時文件或服務器上的其他東西。
發送到互聯網的請求按預期執行。 DNS似乎也不是問題(像平常一樣可以在互聯網上訪問數據庫和其他服務)。
有沒有人有想法可能會導致這些延遲問題?還應該調查哪些/ ?我非常感謝每一個幫助或問題,這些都可以讓我指出正確的方向。
最好的問候。
你使用T2 EC2實例嗎? –
是的,通常很小,但我隨機也嘗試了一種媒介。 – Tim
您需要設置一些基本的操作系統監控,以關注CPU,內存和IO等事情,以便您可以瞭解服務器上正在發生的事情。如果你對性能的唯一可見性是「應用程序很慢」,那麼你將會有一段非常艱難的時間來確定問題實際上是什麼。 – Sammitch