Насколько File I / O является фактором производительности в веб-разработке? - PullRequest
2 голосов
/ 01 октября 2008

Я знаю, что мантра заключается в том, что база данных всегда является длинным полюсом в палатке каждый раз, когда страница генерируется на стороне сервера.

Но на веб-сервере также происходит множество операций ввода-вывода файлов. Скриптовый код изобилует инструкциями include / require. Более того, обычно рекомендуется хранить шаблонный html вне приложения в файлах, которые загружаются и заполняются соответствующим образом.

Какую роль играет файловый ввод / вывод при веб-разработке? Это когда-нибудь становится проблемой? Когда это слишком много? Кэшируют ли веб-серверы / языки что-нибудь?

Это когда-нибудь имело значение в твоем опыте?

Ответы [ 5 ]

3 голосов
/ 01 октября 2008

10 лет назад диски были настолько быстрее процессоров, что вам не пришлось об этом беспокоиться. Вы исчерпали процессор (или насыщали свою сетевую карту) до того, как возникла проблема с диском. В наши дни центральные процессоры и гигабитные сетевые карты могут сделать диск узким местом, НО ....

Большая часть использования диска без базы данных легко распараллеливается. Если вы не разработали свою архитектуру хостинга для горизонтального масштабирования путем добавления большего количества систем, это важнее, чем точная настройка доступа к диску.

Если вы спроектировали горизонтальное масштабирование, обычно покупка большего количества серверов обходится дешевле, чем попытка выяснить, как оптимизировать диск. Не говоря уже о том, что такие вещи, как SSD или даже RAM-диски для ваших шаблонов, сделают его без проблем.

Очень редко встречается обслуживающая архитектура, которая масштабируется горизонтально, достаточно популярна, чтобы вызвать проблемы с масштабируемостью, но недостаточно прибыльна, чтобы позволить себе еще 1U в вашей стойке.

2 голосов
/ 01 октября 2008

Файловый ввод / вывод станет фактором (для статического контента и статических страниц), только если ваша пропускная способность для внешнего мира аналогична пропускной способности вашего диска. Это может означать, что у вас очень быстрое соединение, вы обслуживаете контент в быстрой локальной сети, или у вас очень медленные диски (или у вас много конфликтов с дисками). Так что, скорее всего, ответ - нет.

Конечно, это предполагает, что вы не загружаете большой файл только для небольшой части файла.

0 голосов
/ 01 октября 2008

Не преждевременно оптимизировать. Это зло или что-то в этом роде.

Однако, ввод / вывод - это самая медленная вещь, которую вы можете сделать на компьютере. Постарайтесь свести это к минимуму, но не позволяйте Кнуту видеть, что вы делаете.

0 голосов
/ 01 октября 2008

Файловый ввод-вывод является одним из многих факторов, включая пропускную способность, сетевое подключение, память и т. Д., Которые могут повлиять на производительность веб-приложения. Самый эффективный способ определить, вызывает ли файловый ввод-вывод какие-либо проблемы, - запустить некоторое профилирование на сервере и посмотреть, является ли это ограничивающим фактором для вашей производительности.

Многое из этого будет зависеть от того, какие типы файлов вы загружаете с диска, множество маленьких файлов будет иметь очень разные свойства по сравнению с несколькими большими файлами. Веб-серверы могут кэшировать файлы, как внутри памяти, так и могут указывать клиенту, что файл (например, изображение) может быть кэширован, и поэтому нет необходимости каждый раз запрашивать.

0 голосов
/ 01 октября 2008

Я бы сказал, что скорость ввода-вывода в файл становится проблемой только в том случае, если вы обслуживаете тонны статического контента. Когда вы обрабатываете данные и выполняете код для отображения страниц, время чтения самой страницы с диска незначительно. Файловый ввод / вывод важен в тех случаях, когда обслуживаемые вами статические файлы не помещаются в память, например, когда вы обслуживаете файлы видео или изображений. Это также может произойти с html-файлами, но поскольку размер html-файлов слишком мал, это менее вероятно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...