Web-Server
如何防止網站首次載入啟動緩慢?
我相信您已經註意到,對於許多伺服器,如果您是幾個小時內的第一個訪問者,則網站載入時間會很長。您知道為什麼會出現這種情況(只是伺服器記憶體嗎?)以及如何使網站即使對於第一個訪問者也能快速執行?在這種情況下,讓我們採用正常的 LAMP 設置。謝謝你的幫助!
有很多潛在的原因。幾乎可以肯定不止一個原因。
幾種可能性:
- 該網站在一些池化機制下執行,如 FastCGI、mod_php/mod_perl/mod_python 等。如果這些或 Apache 未配置為保持最小伺服器池,則當新請求到達並且有已載入該應用程序沒有可用的伺服器。
- 該應用程序使用數據庫連接池。與上面相同的問題,只是需要重新建立數據庫連接。一些關係數據庫在打開新連接時可能非常慢(大量成本)
- 各種記憶體機制(對於執行負載均衡器或記憶體(如 memcached)的高性能站點)可能需要直接從站點刷新他們的資訊,如果他們擁有的資訊是陳舊的。也可以應用於瀏覽器的本地記憶體:雖然它通常可以忽略網站上的所有其他靜態文件,如 css、js、圖像,但一旦這些文件從記憶體中過期,它就需要重新獲取它們。
- 站點可能具有維護活動,例如在其負載較低且站點未被訪問時發生的備份。
- 甚至可能與伺服器的作業系統磁碟記憶體一樣低級別,它的記憶體可能已被同一伺服器上的其他站點填充,從而推出了一段時間未訪問的站點的記憶體版本(這正是磁碟記憶體應該做的,記憶體經常使用的文件,而不是不經常使用的文件)。這應該導致的延遲很可能非常小,並且不會被人類註意到。
緩解策略當然取決於實際原因是什麼。但是通常應該做的一些事情:
- 確保正確配置了 Apache 的 MinSpareServers/MinSpareThreads 和其他性能設置。嘗試了解 Apache 如何、何時以及為什麼產生更多的伺服器/執行緒。
- 確保任何應用程序伺服器(如 FastCGI)也已正確配置,以保持足夠的可用池。
- 正確配置數據庫連接池或保持持久數據庫連接始終打開。
- 確保所有包含的文件(css、js 等)都是可記憶體的並且具有合理的到期時間。