Вы сделайте просмотр фоток не в галереи, по отдельности одна фотка-одно новое открытие страницы. Тогда посещаемость ещё вырастит.
Но решать вообще вам конечно.
«Постоянное» соединение включается простым pooling=true в строке соединения, стандартный адаптер это позволяет. Главное не забыть указать разумные (подбирается под себя) Min Pool Size и Max Pool Size
Всегда интересно посмотреть цифры сайтов разных направлений и нагрузку на сервера.
Похоже, картинки так сильно грузят. Я настраивал близкий (по цифрам) сервер и там нагрузка была значительно меньше. И там нет картинок.
Если мелкие картинки являются частью дизайна самого сайта, а не пользовательские фотки, то эту часть можно попробовать оптимизировать использованием CSS спрайтов.
гм… чем же много? Даже без R2 Windows 2008 Server x64 минимальный максимум среди редакций — 32Gb (линк).
А по поводу статьи… еще раз для себя уверился, что для высоконагруженых систем основное «узкое горлышко» — БД. И это очень хороший повод задуматься об NoSQL с самого начала разработки архитектуры.
Отдача картинок делается через свой HttpHandler. Единственное оправдание для этого я вижу в том, что картинки при этом хранятся в базе. Отсюда похоже и большая нагрузка на базу. Или я не прав? Почему бы не хранить картинки в файловой системе? В этом случае их хостинг можно было бы вынести на выделенный сервер и отдавать при помощи nginx, тогда и нагрузка на базу меньше будет да и ASP.NET не будет участвовать в генерации картинок. Правда в этом случае немного тяжелее конфигурировать систему и следить за целостностью данных.
Картинки хранятся в файловой системе. Каталогизированы по папкам. В каждой папке не более 1000 штук. Хендлер нужен для того чтобы увеличивать рейтинг при просмотре некоторых видов фоток. Это относится к большим картинкам.
Но способ отдачи картинок практически не влияет на производительность. Всё упиралось в чтение с диска.
Спасибо, но я за такие проекты даже не возьмусь из-за принципа… когда-то давно в далекой-предалекой галактике мне был открыт true debian way и с тех пор на windows-сервера у меня а-… а-… апчхи; аллергия, я хотел сказать.
Будьте здоровы!
Безусловно, случаи бывают разные; и честь, и хвала автору за найденный выход и проделанную работу в условиях ограниченных обстоятельств.
Но я так думаю у автора все еще впереди, и он поймет, что эти обстоятельства мы вольны выбирать себе сами. А я прошу прощения за первый, столь эмоциональный пост.
PS. Я и сам неоднократно поступал практически также в силу обстоятельств непреодолимой силы, разве что с меньшим масштабом, поэтому масштаб-то и впечатлил — представляется что получилось бы в стиле true path;)
PPS. Хотя, как говаривал некто: грамотно настроить и заставить работать ОС от microsoft — много больший труд, нежели проделать тоже самое с… более правильными ОС?) Мы же понимаем, что такое microsoft и какова ее политика, верно?) Впрочем, не стоит отвечать, ответ и так очевиден.
Эти пользователи просматривают более миллиона страниц, причём каждая страница с кучей фоток… для социальных сетей и сайтов знакомств 50 тысяч — это хороший показатель на выделенный сервер
абсолютно колбаса.
Оптимизировать вообще можно до бесконечности(не берем в расчет [s]костыли[/s]фиксы [s]для[/s] высокого ПО, разработчики которых не обременяют себя никакими дополнительными сведениями о влиянии тех или иных собственных конструкций на общую производительность — но это отдельная история). Тонкий тюнинг — своеобразное искусство :) К сожалению, с проприетарным ПО зачастую далеко не разбежишься.
Мне непонятно то, что для 50,000 уников хватает 1-го сервера, а в статье про автодилера Рольф они говорят о 250 серверах для своих нужд! Это что нужно такое делать автодилеру, чтобы 250 серверов требовалось. Может кто объяснит?
у них 1С: Предприятие стоит, как одна из основных платформ автоматизации
если они всех в терминалку запихнули, то каждый сеанс требует около 200 МБ ОЗУ на пользователя, итак на 4ГБ выходит 15 пользователей (за вычетом 1ГБ под систему)
Рольф очень крупный диллер, для примера средний диллер в регионе: порядка 20-ти серверов, и это количество за счет виртуализации, раньше серверов было еще больше.
А у крупных диллеров есть всякие порталы для сабдиллеров, плюс куча офисов.
Пока аптайм чуть больше месяца и нормально. Если что рейд, думаю спасёт. Я эти харды юзал на ещё одном сервере, так вот там аптайм полтора года и всё отлично.
Во-первых одновременно у них ресурс не кончится — контроллеры записи все равно по разному делаю. Просто перед использованием запишите на пару из них по гигу-два и сотрите таблицу.
Во-вторых, вы хоть один в мире SSD диск видели, который кончился от исчерпания ресурсов записи? Не говоря уж об SLC.
А в рейд для повышения надежности, но не из-за ресурсов перезаписи, а на случай проблем с контроллерами и т.п., что и встречается в мире и считаются как проблемы у SSD дисков.
касательно RAID, на IBM сервере было тоже заявлено RAID 10, но в биосе не могли найти
оказалось сначала делаешь два RAID0, а затем из них собираешь RAID 1
тупо? тупо! но работает
извините, что значит «тупо»?) Raid 10 — это два Raid1 в стрипе, соответственно; у вас же raid 0+1, или зеркало стрипов. Но в принципе хороши оба, ваш вариант несколько выигрывает в производительности, raid10 же — в отказоустойчивости.
«тупо» касалось заявленного raid10, это был один из критериев выбора
не получив его накинулись на суппорт, который и разъяснил что в нашем случае есть raid10 )) мы просто до этого не сталкивались с тем, что можно средствами встроенной рейдовой утилиты собирать рейд рейдов ))
Блин — фотки отвратительные, ГЛАЗ РЕЖЕТ, все не в фокусе, или руки тряслись от аккуратности или надо научиться херовой телефонной камерой фотать при любом освещении
Ниже возник закономерный вопрос про нее habrahabr.ru/blogs/hosting/121117/#comment_3977613
В контексте вашего сетевого порта, мне кажется у вас и из старой железки можно было выжать еще.
Если вы любите хранить в базе все, то тут можно было вопрос решить оперативной памятью.
Вопрос связан с тем, неужели чтение рандомное у картинок? Кэш?
А объем базы какой? X25E (SLC) кроют ваши рапторы по иопсам раз так в сто. И стоят всего как два раптора. А запилить SLC — это надо много апдейтить, при 10 мегабитах непрерывной записи проживут 5 лет.
А вообще машинка как машинка -не вижу ничего круто мощчного. Я таких 20 в неделю пихааю :) Хоть бы шестиядерники воткнули, или хоть тесты показали. У меня 200 тысяч хитов прекрасно на шаредах живут, увы не Windows-ASP, а FANMP.
PS 1366 ксеоны с треханальным контроллером памяти, так что можно было 24 гига пихать.
база одного проекта 15 гигов + до 3-х гигов логи, второй проект 25 гигов и тоже около 5-ти гигов логи. Плюс рост проекта… решил не рисковать, поставил проверенные временем рапторы
Вспоминаю сцену из ДЦ, сижу я починяю что-то, а в соседнем ряду мылрушники ходят с двумя коробками винтов. Из одной достают новые, в другую кладут мертвые.
Мы тоже используем software raid в windows, и, как оказалось, он не совсем RAID. В некоторых случаях (а может быть, и всегда) синхронизация происходит только при выключении/перезагрузке.
У нас это вылилось в следующее: в марте 2010 полетел один из винчестеров в Software RAID1 (Windows Server 2008). После перезагрузки выяснилось, что на втором винчестере, который должен был быть зеркалом, данные — за февраль, когда происходила последняя перезагрузка сервера.
У вас тут не MSSQL виноват, а то, как им пользуетесь. Если положите всё по-человечески на диск и будете отдавать nginx-ом, то проблемы сами собой рассосутся.
Опытным путём выснил, что если файлов в папке заметно более 1000, то скорость доступа к ним заметно снижается. Поэтому разбиваю по папкам следующим образом: [тип фото]\[размер фото]\[остаток от деления ID на 1000]\[ID].jpg
> Онлайн доходило до 1800 пользователей при посещаемости свыше 50 тысяч за сутки(>20 тыс. уников). Портал размещался на одном выделенном сервере. В ходе анализа было выяснено, что не справлялся не только процессор, но и вся дисковая подсистема. Нужно было решать, что делать дальше.
> Портал был написан на ASP.NET в связке с СУБД MS SQL Server 2008 R2.
> Текущий cервер обладал такой конфигурацией: процессор — Intel Core Quad 9550 (12MB кеша), 4 Гб памяти, 2 диска — серверные WD на 7200 оборотов.
> Проблема дисковой подсистемы решалась просто — покупкой SSD диска на 90 гигобайт и размещением фоток на нём, на данный момент их около 40 гигабайт(про опыт использования SSD-дисков на серверах могу написать отдельный пост).
50 тыщ показов в сутки и SSD? У меня сайтик на PHP + MySQL показывает 270 тыщ в сутки при 50 тысячах уникальных пользователей и 120 тысячах постоянных коннектов к торрент трекеру на 2 x Opteron 242, 4 Гб памяти и двух WD 7200 :)
Очень не верю в это, по тому как недавно искал под двухлетнюю супермикру блоки питания, не нашел.
Для сравнения поискал похожие БП, стоят 10-15 тыр. В итоге поменяли всё шасси.
Для этого корпуса кстати попробуйте найти БП нужного размера. Хотя дельтаэлектроникс распространный ОЕМ-щик.
Возможно Вы правы, было бы интересно посмотреть на Ваш расчет.
Но тут надо прикидывать цену всей машины. Свой сервер это достаточно плохо на мой взгляд, к примеру на hetzner дополнительный 120 GB SSD стоит 15 евро. какие 2 месяца могут быть?
В компании, в которой я работаю, прилично своих серверов, в том числе сейчас вводится Oracle Exadata и это большая печаль.
Против ASP.NET меня настраивает для начала цена. Windows сервера стоят дороже, а какой-то дополнительной радости от них не исходит.
Сервер покупать ведь тоже дорого
Нагрузка бы упала в пару раз так точно при такой посещаемости, особенно на дисковую подсистему
2500 превратились бы в 15 Терабайт трафика клаудфронт. На сколько бы этого вам хватило? Месяца на 2?
Это действительно полезная информация, что ССД решает проблему случайных картинок, но боюсь что я все равно не смогу этим воспользоваться.
У меня уже 57 гиг, и это только 10% от расчетного количества по ТЗ. ССД пришлось бы покупать несколько, живем на S3 + Cloudfront. Пока это 50 долларов в месяц.
Один ssd диск правильного производителя (480GB) будет стоить 1500 USD.
Поскольку они сыпятся часто — нужно 2. 3000 usd.
Делим на 12 — получаем 250 долларов в месяц.
Также учитываем, что за трафик все равно придется платить, просто не $0.16/GB а $0.1/GB (т.е. экономия будет не 50 а примерно 20 баксов в месяц). К тому же, как видно по статье, каждый год нужно обновлять ССД диски.
Я не знаю, где тут видна окупаемость.
Один ssd диск правильного производителя (480GB) будет стоить 1500 USD.
Поскольку они сыпятся часто — нужно 2. 3000 usd.
Где данные о том что они сыпятся часто? Если сомневаетесь в надёжности, может проще делать постоянные бекапы данных на обычный HDD? У меня за 3 месяца пока 3 Гб данных перезаписано на каждом из SSD-дисков.
Также учитываем, что за трафик все равно придется платить, просто не $0.16/GB а $0.1/GB (т.е. экономия будет не 50 а примерно 20 баксов в месяц).
Давайте остановимся на тарифах с соотношением, например 4:1 — исходящий ко входящему. В этом случае стоимость будет порядка 20 тыс. руб в мес.
К тому же, как видно по статье, каждый год нужно обновлять ССД диски.
Где так написано?
Я не знаю, где тут видна окупаемость.
Давайте посчитаем. Скажите, сколько вы потратите храня на амазоне 500 гигов с нагрузкой канала как минимум в 300 Мбит? Учитывайте, что это картинки размером в несколько десятков килобайт.
Сколько потрачу я.
Сервер(срок службы 3 года + 30% на амортизацию):
1. Платформа + процессор + память + 2 обычных HDD= 1500$
2. SSD 480 Gb = 1500$
Итого: 3000$ + 30% = 3900$
Делим на срок службы, 3900 / 3 = 1300$ в год.
Далее, размещение сервера с каналом в 1GBit(Shared, соотношения 4:1) 700$ в мес(примерно)
1300 + 700 * 12 = 9700$ то есть чуть больше 800$ в мес.
Уважаемый, а подскажите пожалуйста, чем вы профилировали нагрузку на систему (память, диски, проц, сеть)? Абсолютно не имею представления как это делается в windows.
Мощный сервер БД за чуть более 2000$