2008-09-30 48 views
2

我知道這個咒語就是數據庫總是帳篷裏的長杆,隨時在服務器端生成一個頁面。文件I/O在Web開發中的性能因素是多少?

但是在Web服務器上也有很多文件I/O。腳本代碼充斥着include/require語句。此外,其典型的做法是將模板html存儲在應用程序之外的相應文件中。

當用web開發認識時,多少角色會扮演I/O角色?它是否成爲一個問題?什麼時候太多? Web服務器/語言是否緩存任何內容?

它有沒有真正關係到你的經驗?

回答

-1

我會說文件IO速度只會成爲一個問題,如果你正在服務噸的靜態內容。當您處理數據並執行代碼來渲染頁面時,從磁盤讀取頁面本身的時間可以忽略不計。如果您正在提供的靜態文件無法放入內存,例如當您提供視頻或圖像文件時,文件I/O非常重要。它也可能發生在html文件中,但由於html文件的大小非常小,所以這個可能性較小。

+0

大多數現代服務器可以在磁盤出現問題之前使其NIC充滿,如果您正在服務大型文件。如果您提供大量非常小的文件,磁盤訪問只會成爲瓶頸。 – bmdhacks 2008-09-30 23:55:16

3

10年前,磁盤比處理器快得多,您不必擔心這麼多。在磁盤出現問題之前,您會耗盡CPU(或使您的網卡飽和)。如今,CPU和千兆網卡可能會使磁盤成爲瓶頸,BUT ....

大多數非數據庫磁盤使用情況非常容易並行化。如果您沒有通過添加更多系統來設計您的託管體系結構進行橫向擴展,那麼比微調磁盤訪問更重要。

如果您設計了橫向擴展,通常只是購買更多的服務器比試圖找出如何優化磁盤便宜。更不用說,像SSD或甚至RAM磁盤這樣的模板將會使其成爲一個無關緊要的問題。

擁有一個水平擴展的服務架構非常罕見,它足夠流行以引起可伸縮性問題,但不足以在機架中提供另一個1u的盈利。

2

如果您的外部帶寬與您的磁盤帶寬相似,那麼文件I/O只會成爲一個因素(對於靜態內容和靜態頁面而言)。這意味着您要麼連接速度非常快,要在快速LAN上提供內容,或者磁盤速度非常慢(或者存在大量磁盤爭用)。所以最有可能的答案是否定的。

當然,這是假定您不是隻爲文件的一小部分加載大文件。

0

文件I/O是影響Web應用程序性能的許多因素之一,包括帶寬,網絡連接,內存等。確定文件I/O是否導致您遇到任何問題的最有效方法是在服務器上運行一些分析,看看它是否代表您的性能的邊界因素。

很多這將取決於您從磁盤加載什麼類型的文件,很多小文件將具有與幾個大文件非常不同的屬性。 Web服務器可以緩存內存中的文件,並且可以向客戶端指示文件(例如圖像)可以被緩存,因此不需要每次都被請求。

0

不要過早優化。它的邪惡,還是什麼。

但是,I/O是關於您在計算機上可以做的最慢的事情。儘量保持在最低限度,但不要讓Knuth看到你在做什麼。