2010-01-14 2 views
1

Предположим, я хотел создать веб-сайт переполнения стека. Как оценить количество товарного оборудования, необходимого для поддержки этого веб-сайта, при условии, что 1 миллион запросов в день. Существуют ли какие-либо тематические исследования, объясняющие возможные улучшения производительности в этой ситуации?Оценка товарного оборудования для приложения

Я знаю, что узкое место ввода-вывода является основным узким местом в большинстве систем. Каковы возможные варианты улучшения производительности ввода-вывода? Мало кто из них я знаю, являются

  1. кэширование
  2. репликации
+1

Wow - это загруженный вопрос. :) –

+0

Это наука о планировании емкости, плюс архитектура программного обеспечения, плюс все, поэтому ответ 42 –

+0

Все ответы были полезны. Спасибо - Bala – Boolean

ответ

2

Вы можете улучшить производительность ввода/вывода в несколько способов в зависимости от того, что вы используете для настройки вашего хранилища:

  1. Увеличение размер блока файловой системы, если ваше приложение отображает хорошую пространственную локальность в своих вводах/выводах или использует большие файлы.
  2. Использование RAID 10 (чередование + зеркальное отображение) для производительности + резервирование (защита от отказа диска).
  3. Используйте быстрые диски (Performance Wise: SSD> FC> SATA).
  4. Отдельные рабочие нагрузки в разное время суток. например Резервное копирование в ночное время, обычный ввод/вывод приложений в течение дня.
  5. Отключить atime updates в вашей файловой системе.
  6. Файл кеша NFS обрабатывает файл a.k.a. Haystack (Facebook), если хранится информация на сервере NFS.
  7. Объедините небольшие файлы в большие куски, a.k.a BigTable, HBase.
  8. Избегайте очень больших каталогов, то есть множества файлов в одном каталоге (вместо этого разделяйте файлы между разными каталогами в иерархии).
  9. Используйте clusteredstorage system (да, не совсем товарное оборудование).
  10. Оптимизируйте/создавайте приложение для последовательного доступа к диску, когда это возможно.
  11. Использование memcached. :)

Возможно, вы захотите ознакомиться с разделом «Извлеченные уроки» от StackOverflow Architecture.

+0

10 Оптимизируйте/создавайте приложение для последовательного доступа к диску, когда это возможно. Как достичь этого, рассматривая веб-сайт как переполнение стека. 7 Объедините небольшие файлы в большие куски, a.k.a BigTable, HBase. Я думаю, что это распределенная база данных с ключом. Есть учебник? – Boolean

+0

HBase основан на BigTable от Google. В предоставленной мне ссылке HBase есть все, что вам нужно для начала работы (но HBase, возможно, не является лучшим решением для вас, - сначала придумайте свои точные требования к хранению данных, а затем решите, хорошо ли это для чего вы хотите). Для чего-то вроде stackoverflow, вы хотите узнать, какие наиболее распространенные операции выполняются (вам понадобятся измерения, мониторинг и т. Д. После того, как сайт будет вверх). Затем вы хотите оптимизировать самую большую часть операций. Помните, что оптимизация приходит после развертывания (даже если требуется переписать). – Sudhanshu

+0

Вы можете попробовать это для HBase: http://stackoverflow.com/questions/tagged/hbase http://stackoverflow.com/questions/1750556/looking-for-a-good-hbase-tutorial – Sudhanshu

1

проверить этот удобный инструмент:

http://www.sizinglounge.com/

и другой гид из лощины:

http://www.dell.com/content/topics/global.aspx/power/en/ps3q01_graham?c=us&l=en&cs=555

Если вы хотите, чтобы ваше собственное сообщество, похожее на stackoverflow, вы можете подписаться на StackExchange.

вы можете прочитать некоторые тематические исследования здесь:

Высокая масштабируемость - Как Rackspace теперь использует MapReduce и Hadoop в Query терабайт данных http://highscalability.com/how-rackspace-now-uses-mapreduce-and-hadoop-query-terabytes-data

http://www.gear6.com/gear6-downloads?fid=56&dlt=case-study&ls=Veoh-Case-Study

+0

На самом деле, мой вопрос является общим и не хочет покупать дорогостоящие серверы. Я планирую написать приложение hadoop для выполнения анализа данных. Я просто хочу знать, есть ли какие-либо тематические исследования по этому поводу. – Boolean

+0

попробуйте это исследование: http://highscalability.com/how-rackspace-now-uses-mapreduce-and-hadoop-query-terabytes-data – jspcal

1

1 миллион запросов в день 12/секунд. Переполнение стека достаточно мала, чтобы вы могли (с интересными нормализациями и трюками сжатия) полностью поместили его в ОЗУ 64-гигабайтного Dell PowerEdge 2970. Я не уверен, что кеширование и репликация должны играть определенную роль.

Если у вас есть проблема с достаточным мышлением о нормализации, доступен PowerEdge R900 с 256 ГБ.

Если вам не нравится одна точка отказа, вы можете подключить несколько из них и просто нажимать обновления по сокету (желательно на отдельной сетевой карте). Даже максимальная нагрузка 12K/sec не должна быть проблемой для системы основной памяти.

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

+0

, но есть проблема с единственной точкой отказа права. как вы избежите этого. – Boolean

Смежные вопросы