Pull to refresh

Comments 151

А вариант Azure рассматривали? Если отказались, интересно почему (не реклама, правда интересно)
Дорого, к тому же колокейшн я баннерными показами оплачиваю
Сайту знакомств в этом плане проще…
Люди фотки смотрят, переходят со страницы на страницу, соответственно число показов растёт.
Вы сделайте просмотр фоток не в галереи, по отдельности одна фотка-одно новое открытие страницы. Тогда посещаемость ещё вырастит.
Но решать вообще вам конечно.
Ну это уж слишком, я наоборот больше аякса стараюсь внедрять
UFO just landed and posted this here
Стыдно предлагать человеку записаться в мудаки ухудшить юзабилити сайта.
посоветуйте оные баннерные сетки
Возможно, но незначительно, так как сервера подключены к одному свичу, конекшн очень быстрый и несоизмерим со временем выполнения запроса
UFO just landed and posted this here
NoSQL пока в далёких планах, использую денормализацию, кеширование «ручками» на веб-сервере, все запросы в обёрнуты в хранимки
UFO just landed and posted this here
Почему файловый? в оперативной памяти…
UFO just landed and posted this here
«Постоянное» соединение включается простым pooling=true в строке соединения, стандартный адаптер это позволяет. Главное не забыть указать разумные (подбирается под себя) Min Pool Size и Max Pool Size
А можно провести профайлинг ;)
В asp уже по дефолту поддерживается пул активных соединений
Всегда интересно посмотреть цифры сайтов разных направлений и нагрузку на сервера.
Похоже, картинки так сильно грузят. Я настраивал близкий (по цифрам) сервер и там нагрузка была значительно меньше. И там нет картинок.
Очень много мелких картинок, упиралось всё в скорость случайного доступа
Если мелкие картинки являются частью дизайна самого сайта, а не пользовательские фотки, то эту часть можно попробовать оптимизировать использованием CSS спрайтов.
Знаю=) Я не первый год в веб разработке…
Все верно сделали, но секономили же на самом главном для БД — быстрых дисках и RAID10 :(
Если грамотно кеширутся в память и этой памяти достаточно много то это не проблема.
UFO just landed and posted this here
За 3 года ни у одного из серверов не сгорал блок питания. Пару раз диски крошились
К тому же, если блок питания сдохнет, приехать в ДЦ и его заменить, проще чем возится с бекапами
Между строк читается: «Смотрите! Мы такие неформалы, что развернули свой сервер на Виндоус! Бу-га-га!»
asp.net и ms sql предлагаете хостить на nix? :)
Просто человек ошибся и между не тех строк читал :)
Но возникает резонный вопрос — зачем? :)
Памяти много. А какая редакция ОС стоит, что поддерживает столько?
гм… чем же много? Даже без R2 Windows 2008 Server x64 минимальный максимум среди редакций — 32Gb (линк).

А по поводу статьи… еще раз для себя уверился, что для высоконагруженых систем основное «узкое горлышко» — БД. И это очень хороший повод задуматься об NoSQL с самого начала разработки архитектуры.
Блин, о 64 бит не подумал :) Я только поднимал сервер с таким колво памяти на 32 битах просто.
Спать… срочно спать.
ОС Windows Server 2008 x64 Web (дата центр на халяву дал)
По условиям лицензии ее нельзя использовать для MS SQL.
Поставьте фряху, если хорошо сконфигурировать, то сервак продержится не год а 2-3:)
> Портал был написан на ASP.NET в связке с СУБД MS SQL Server 2008 R2.
Какая фряха нафиг?
Однопользовательская лицензия «Microsoft SQL Server Standard Edition 2008 R2 Russian OPEN 1 License No Level»… стоит 28 000 рублей. Как пол сервера.
Сложно сравнивать софт с железом. Винда бесплатно обновляется, а железо нет.

Ещё пример Oracle Database Enterprise Edition и сервер на котором он стоит.
У MS есть программы WebSpark и BizSpark, дают на 3 года бесплатно
А когда кончится программа, то назад они не попросят софт ;)
Платеж отменили
слышал что отменили для WebSpark, а для BizSpark тоже отменили?
лицензии можно и арендовать :)
Лицензии на пользователя не подходят, а на процессор довольно дорого стоят…
Если сильно грузят грузят картинки — как вариант вынести их на S3.
Рассматривал такой вариант, посчитал, было дешевле купить SSD
О боже, я посмотрел на адрес картинок на сайте и понял, откуда такая большая нагрузка)
Как минимум, что картинки отдаются скриптами.
Не знаю как в ASP, а в пхп это точно не самый лучший вариант
Щас ухожу на пару часиков, по приезду отпишусь почему я так сделал
Отдача картинок делается через свой HttpHandler. Единственное оправдание для этого я вижу в том, что картинки при этом хранятся в базе. Отсюда похоже и большая нагрузка на базу. Или я не прав? Почему бы не хранить картинки в файловой системе? В этом случае их хостинг можно было бы вынести на выделенный сервер и отдавать при помощи nginx, тогда и нагрузка на базу меньше будет да и ASP.NET не будет участвовать в генерации картинок. Правда в этом случае немного тяжелее конфигурировать систему и следить за целостностью данных.
А потом народ удивляется почему приватные картинки по прямым линкам доступны
Картинки хранятся в файловой системе. Каталогизированы по папкам. В каждой папке не более 1000 штук. Хендлер нужен для того чтобы увеличивать рейтинг при просмотре некоторых видов фоток. Это относится к большим картинкам.

Но способ отдачи картинок практически не влияет на производительность. Всё упиралось в чтение с диска.
Спасибо, но я за такие проекты даже не возьмусь из-за принципа… когда-то давно в далекой-предалекой галактике мне был открыт true debian way и с тех пор на windows-сервера у меня а-… а-… апчхи; аллергия, я хотел сказать.
Будьте здоровы!
UFO just landed and posted this here
Безусловно, случаи бывают разные; и честь, и хвала автору за найденный выход и проделанную работу в условиях ограниченных обстоятельств.
Но я так думаю у автора все еще впереди, и он поймет, что эти обстоятельства мы вольны выбирать себе сами. А я прошу прощения за первый, столь эмоциональный пост.
PS. Я и сам неоднократно поступал практически также в силу обстоятельств непреодолимой силы, разве что с меньшим масштабом, поэтому масштаб-то и впечатлил — представляется что получилось бы в стиле true path;)
PPS. Хотя, как говаривал некто: грамотно настроить и заставить работать ОС от microsoft — много больший труд, нежели проделать тоже самое с… более правильными ОС?) Мы же понимаем, что такое microsoft и какова ее политика, верно?) Впрочем, не стоит отвечать, ответ и так очевиден.
Автор бесспорно молодец, что в заданных ограничениях решил проблему минимальной кровью.

Меня удивляет другое: цифры то плевые. Всего 50 тыс в сутки почему-то укладывают выделенный сервер. Я был лучшего мнения о технологиях микрософта.
Эти пользователи просматривают более миллиона страниц, причём каждая страница с кучей фоток… для социальных сетей и сайтов знакомств 50 тысяч — это хороший показатель на выделенный сервер
какая разница сколько фоток? Если их, конечно (о ужас!) в базе не хранят.

Миллион хитов в день — это нормальная нагрузка, но незапредельная. Даже мускль справляется с этим.
абсолютно колбаса.
Оптимизировать вообще можно до бесконечности(не берем в расчет [s]костыли[/s]фиксы [s]для[/s] высокого ПО, разработчики которых не обременяют себя никакими дополнительными сведениями о влиянии тех или иных собственных конструкций на общую производительность — но это отдельная история). Тонкий тюнинг — своеобразное искусство :) К сожалению, с проприетарным ПО зачастую далеко не разбежишься.
Я бы взял и поставил nginx как кеширующий прокси, даже в виртуалку на том-же сервере.
Мне непонятно то, что для 50,000 уников хватает 1-го сервера, а в статье про автодилера Рольф они говорят о 250 серверах для своих нужд! Это что нужно такое делать автодилеру, чтобы 250 серверов требовалось. Может кто объяснит?
Что-то типа: зять брата владельца продает серверы.
у них 1С: Предприятие стоит, как одна из основных платформ автоматизации
если они всех в терминалку запихнули, то каждый сеанс требует около 200 МБ ОЗУ на пользователя, итак на 4ГБ выходит 15 пользователей (за вычетом 1ГБ под систему)
Рольф очень крупный диллер, для примера средний диллер в регионе: порядка 20-ти серверов, и это количество за счет виртуализации, раньше серверов было еще больше.

А у крупных диллеров есть всякие порталы для сабдиллеров, плюс куча офисов.
Харды плохие. У нас такой сдох после 170 дней аптайма… (нагруженный сервер)
А какие хорошие?
SAS Seagate и SAS Fujitsu…
Может быть еще Seagate ES.2
В бюджет не укладываются…
Из сотни хардов, два всегда не работают.
Пока аптайм чуть больше месяца и нормально. Если что рейд, думаю спасёт. Я эти харды юзал на ещё одном сервере, так вот там аптайм полтора года и всё отлично.
Насчет неиспользования SSD под базу — зря.
Бюджетные SLC intel 311 20GB в RAID10 и они заткнут за пояс все ваши велосерапторы по той же цене.
SSD в рейд 10… нафига? у них ресурс записи в рейде кончится одновременно и все сдохнет…
SSD только в рейд 0…
Не все ССД диски дохнут одновременно. Многие дохнут как им вздумается.
Во-первых одновременно у них ресурс не кончится — контроллеры записи все равно по разному делаю. Просто перед использованием запишите на пару из них по гигу-два и сотрите таблицу.
Во-вторых, вы хоть один в мире SSD диск видели, который кончился от исчерпания ресурсов записи? Не говоря уж об SLC.
А в рейд для повышения надежности, но не из-за ресурсов перезаписи, а на случай проблем с контроллерами и т.п., что и встречается в мире и считаются как проблемы у SSD дисков.
Я не использовал SSD по базу. SSD под базу помоему не лучшее решение. Лучше оперативки добавить.
касательно RAID, на IBM сервере было тоже заявлено RAID 10, но в биосе не могли найти
оказалось сначала делаешь два RAID0, а затем из них собираешь RAID 1
тупо? тупо! но работает
извините, что значит «тупо»?) Raid 10 — это два Raid1 в стрипе, соответственно; у вас же raid 0+1, или зеркало стрипов. Но в принципе хороши оба, ваш вариант несколько выигрывает в производительности, raid10 же — в отказоустойчивости.
«тупо» касалось заявленного raid10, это был один из критериев выбора
не получив его накинулись на суппорт, который и разъяснил что в нашем случае есть raid10 )) мы просто до этого не сталкивались с тем, что можно средствами встроенной рейдовой утилиты собирать рейд рейдов ))
Интересно, что же в вашем понимании RAID-10, что вас так удивляет если его собирают из двух массивов…
Блин — фотки отвратительные, ГЛАЗ РЕЖЕТ, все не в фокусе, или руки тряслись от аккуратности или надо научиться херовой телефонной камерой фотать при любом освещении
Просто света побольше дать надо было)
На телефон снимал, нормальный фотик забыл взять.
А какой канал вы загружаете? По моей логике у вас в скорость сети все должно легко упираться…
100 Mbit, загружается вечерами под 30 Mbit на отдачу
Сурово у вас приложение кушает, неужели на такой трафик нужно такую железку?
Особенность архитектуры социальных сетей и сайтов знакомств
Ниже возник закономерный вопрос про нее habrahabr.ru/blogs/hosting/121117/#comment_3977613
В контексте вашего сетевого порта, мне кажется у вас и из старой железки можно было выжать еще.
Если вы любите хранить в базе все, то тут можно было вопрос решить оперативной памятью.
Вопрос связан с тем, неужели чтение рандомное у картинок? Кэш?
надо наверно UPD написать что картинки в базе не храню
А объем базы какой? X25E (SLC) кроют ваши рапторы по иопсам раз так в сто. И стоят всего как два раптора. А запилить SLC — это надо много апдейтить, при 10 мегабитах непрерывной записи проживут 5 лет.

А вообще машинка как машинка -не вижу ничего круто мощчного. Я таких 20 в неделю пихааю :) Хоть бы шестиядерники воткнули, или хоть тесты показали. У меня 200 тысяч хитов прекрасно на шаредах живут, увы не Windows-ASP, а FANMP.

PS 1366 ксеоны с треханальным контроллером памяти, так что можно было 24 гига пихать.
Вижу — база 15G
Один SLC SSD на 64 гига — то что надо.
база одного проекта 15 гигов + до 3-х гигов логи, второй проект 25 гигов и тоже около 5-ти гигов логи. Плюс рост проекта… решил не рисковать, поставил проверенные временем рапторы
У меня рапторы под нагрузкой дохнут за год…
Если брать, так SAS — неубиваемы.
Дохнут, дохнут… быстрее, у нас за пол года. Считайте фотохостинг :)
Вспоминаю сцену из ДЦ, сижу я починяю что-то, а в соседнем ряду мылрушники ходят с двумя коробками винтов. Из одной достают новые, в другую кладут мертвые.

Говорят они так часто приходят с двумя коробками.
пытался под хостинг использовать. Видимо взря.
Мы тоже используем software raid в windows, и, как оказалось, он не совсем RAID. В некоторых случаях (а может быть, и всегда) синхронизация происходит только при выключении/перезагрузке.

У нас это вылилось в следующее: в марте 2010 полетел один из винчестеров в Software RAID1 (Windows Server 2008). После перезагрузки выяснилось, что на втором винчестере, который должен был быть зеркалом, данные — за февраль, когда происходила последняя перезагрузка сервера.

Спасла ситуацию ежедневная резервная копия.
Точно? я просто проверял общий рейд вынимая по одному диску в 5 минут — сервер работал, данные читались хорошо.
У нас так случилось.
Возможно, это уже пофиксили, но лучше не забывать про бэкапы.
А зачем вы картинки через БД отдаёте?

У вас тут не MSSQL виноват, а то, как им пользуетесь. Если положите всё по-человечески на диск и будете отдавать nginx-ом, то проблемы сами собой рассосутся.
можно более подробно о структуре директорий на сервере для хранения большого количества картинок?
Опытным путём выснил, что если файлов в папке заметно более 1000, то скорость доступа к ним заметно снижается. Поэтому разбиваю по папкам следующим образом: [тип фото]\[размер фото]\[остаток от деления ID на 1000]\[ID].jpg
Стандартный рельсовый механизм раскладки картинок закрывает потребности очень надолго:

wwwroot/images/000/234/543/000234543956.jpg

Как-то так. На каждом уровне максимум 1000 каталогов/картинок.
> Онлайн доходило до 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 :)
Я как понял вы хотите сказать что две WD-шки на 7200 оборотов способны отдавать около 50 млн картинок в день? причем в пиковые часы по 1000 в секунду?
Если отдавать nginx ом и поднять кэш у ФС, и его хватит — вполне себе отдаст и больше. Вопрос в количестве картинок.
1000 не знаю, 600 бывает.
Я вот уже боюсь всяких нонеймовых шасси, сдохнет через год БП и где его потом такой найти?

Сегодня найти блок питания не составляет труда любой мощности и форм-фактора
Очень не верю в это, по тому как недавно искал под двухлетнюю супермикру блоки питания, не нашел.
Для сравнения поискал похожие БП, стоят 10-15 тыр. В итоге поменяли всё шасси.

Для этого корпуса кстати попробуйте найти БП нужного размера. Хотя дельтаэлектроникс распространный ОЕМ-щик.
Обязательно такого же бренда? Форм-фактор совпадает, прикрутить получается, молексов хватает, питания достаточно, что ещё надо?
того же размера, с креплениями в тех же местах, через полгода будет непонятно как его искать, сейчас то наверное по модели можно найти.

Где размещаетесь, кстати?
Я почему-то подумал что у вас региональный проект и сервреа где-то в казани.
Основная аудитория распределена примерно пополам в Казани и в Москве
Обновлять железо и ставить SSD под фото… жестоко.
Вместо того, чтобы подключить облачную файлопомойку от амазона или еще кого-нибудь.
Хотя после asp…
Я подсчитал стоимость облачной файлопомойки… У меня SSD диск окупает себя за 2 месяца.

Что вы против ASP.NET имеете?
Возможно Вы правы, было бы интересно посмотреть на Ваш расчет.
Но тут надо прикидывать цену всей машины. Свой сервер это достаточно плохо на мой взгляд, к примеру на hetzner дополнительный 120 GB SSD стоит 15 евро. какие 2 месяца могут быть?
В компании, в которой я работаю, прилично своих серверов, в том числе сейчас вводится Oracle Exadata и это большая печаль.

Против ASP.NET меня настраивает для начала цена. Windows сервера стоят дороже, а какой-то дополнительной радости от них не исходит.
Я на лецензии ни рубля не потратил, заметьте
Не хотите картинки на CDN хранить?
Хочу, в будущем планирую. В данное время это довольно дорого для меня.
Сервер покупать ведь тоже дорого
Нагрузка бы упала в пару раз так точно при такой посещаемости, особенно на дисковую подсистему
2500 превратились бы в 15 Терабайт трафика клаудфронт. На сколько бы этого вам хватило? Месяца на 2?
Это действительно полезная информация, что ССД решает проблему случайных картинок, но боюсь что я все равно не смогу этим воспользоваться.
У меня уже 57 гиг, и это только 10% от расчетного количества по ТЗ. ССД пришлось бы покупать несколько, живем на S3 + Cloudfront. Пока это 50 долларов в месяц.
Собрать массив из SSD на 500 гигов? Окупит себя за год.
Один 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$ в мес.
Анвар,

Тут все решит время. Преимущества вашего решения ясны. Недостатки (надежность SSD) — наоборот, соврешенно не ясны.

Можно вас попросить, в случае выхода из строя SSD дать мне знать?
Если выйдут из строя, я об этом пост напишу или сообщу Вам лично=)

Первый SSD я приобрёл 1,5 года назад — интеловский на 80 гигов. Недавно установил его в ноутбук — отлично работает. Перезаписано порядко 3-х терабайт
Уважаемый, а подскажите пожалуйста, чем вы профилировали нагрузку на систему (память, диски, проц, сеть)? Абсолютно не имею представления как это делается в windows.
Стандартные системы мониторинга.

Панель управления\Все элементы панели управления\Администрирование\Системный монитор
Sign up to leave a comment.

Articles