Скачать 36.72 Kb.
|
Как выдержать большие нагрузки. 3 этапа оптимизации сайта 5баллов.ru (How to sustain greater loads? The three stages of the 5ballov.ru web site optimization) osukhanov@rbc.ru, ведущий разработчик www.5ballov.ru В связи с бурным развитием Интернета в последние годы, высокую популярность приобрели веб-сервисы. Многие начинают свой рабочий день с прочтения почты и просмотра новостей, а также различных приколов. В данной статье описано устройство сервисы подобного рода на примере сайта 5ballov.ru, и способы обеспечения стабильной работы при нагрузке в сотни тысяч показов в день. Определим, что собственно создает нагрузки на серверы. На первом месте стоят запросы к базам данных. Именно их в первую очередь следует оптимизировать для повышения производительности сайта. На втором месте стоят различные скрипты, генерирующие динамический контент. Замыкает список статический контент (картинки, статичные страницы), который отдается веб-сервером, что тоже создает нагрузку на сервер. Оптимизация сайта 5ballov.ru под высокие нагрузки состояла из трех этапов. Первый и самый главный – оптимизация запросов к базе данных. Здесь важно изначально правильно спроектировать базу данных и построить индексы. После проектирования базы и построения индексов нужно заполнить таблицы тестовыми данными, причем нужно учесть, что количество записей в таблицах будет постоянно расти, поэтому следует брать количество записей в таблицах с запасом. После того, как таблицы были заполнены тестовыми данными, приступаем к оптимизации индексов, которые были созданы в таблицах на стадии проектирования базы данных. Для этого нужно подготовить список медленных запросов. Медленные запросы – это запросы к базе данных, которые не используют индексы и выполняются больше определенного времени, допустим, 1 секунды. Для анализа запросов используют команду explain1. С помощью данной команды можно выяснить, использует или нет индексы запрос, эффективно ли запрос использует индексы (возможно, имеет смысл построить индексы по-другому или использовать составные индексы), сколько записей просмотрит СУБД для того, чтобы выполнить запрос, и много другой полезной информации. Данная операция позволила, пусть и незначительно, но сократить время выполнения запросов до 5% - 10%. Второй этап – это оптимизация самих скриптов. Сайт написан на языке php. Для написания кода была использована среда разработки Zend Studio 5.2.0. Так как помимо подсветки кода и всплывающих подсказок, что умеют делать почти все редакторы, в Zend Studio есть отладчик кода и профайлер (profiler). С помощью профайлера можно выяснить, сколько времени затрачивается на выполнение какой-либо функции. Так же используя профайлер, несложно выяснить, в каких функциях встречаются медленные запросы к БД и, соответственно, оптимизировать их (см. выше). На крупных сайтах страницы содержат много разной информации, для извлечения которой выполняется несколько запросов (иногда эта цифра доходит до 10), что, соответственно, создает большую нагрузку на сервер. Решением данной проблемы является использование кэширования. На сайте 5ballov.ru вся страница разделена на блоки, для генерации которых используется отдельный запрос, причем, кэшируется каждый блок отдельно. Это было сделано для того, чтобы в случае изменения информации в одном из блоков, не приходилось извлекать информацию для остальных блоков. В случае изменения информации просто очищается кэш для блока, в котором произошло изменение, и при последующем посещение страницы пользователем он автоматически кэшируется заново. В результате снижается количество выполняемых запросов при генерации страницы, что существенно снижает нагрузку на сервер. Последний этап – оптимизация отдачи статического контента. Для отдачи статического контента используется разработка нашего соотечественника Игоря Сысоева – nginx. Данный сервер позволяет отдавать статический контент гораздо быстрее, чем это делает сервер apache, так же, nginx использует меньше памяти, чем apache в связке с mod_php. Даже если нет медленных запросов, при высоких нагрузках наступает такой момент, когда сервер физически не может отдавать и генерировать контент. В данном случае на помощь приходит кластеризация - распределение задач по нескольким серверам. Проект 5баллов построен по следующей структуре:
В заключении хочется сказать, что данная организация позволяет выдерживать большие нагрузки, которые приходятся на наш сервер в период сессий и вступительных экзаменов в вузы. Автор с удовольствием ответит на ваши вопросы и выслушает критику в свой адрес по электронной почте. 1 Подробнее об этой команде: http://dev.mysql.com/doc/refman/5.0/en/explain.html |
Создание персонального сайта педагога Создание сайта должно начинаться с тщательного планирования всех этапов. Такое планирование начинается с разработки Технического... | Разработка урока на тему «Как написать статью для сайта» Задачи: усваивать требования к статье для сайта, отрабатывать навыки чтения и анализа прочитанного, развивать умения работать в группе,... | ||
Информационная карта участника третьего этапа Всероссийского конкурса... Адрес личного сайта, блога и т д., где можно познакомиться с участником и публикуемыми им материалами | Перечень вопросов для проведения конкурсного собеседования при поступлении... Лечебная физкультура как метод терапии. Лечебная гимнастика: периоды занятия, методы проведения, методические правила, кривая физиологической... | ||
Как добавить новость на сайт Ucoz Чтобы добавить на сайт Ucoz новость, следует воспользоваться ссылкой «Добавить новость», отобразившейся на главной странице сайта... | Учебный план ноу цо «православный центр непрерывного образования... Бязательной нагрузки обучающихся (максимально допустимой недельной нагрузки) и обеспечивает введение в действие и реализацию требований... | ||
Программа по формированию навыков безопасного поведения на дорогах... Гоу №704 и требованиями фгос ноо учебный план для первых классов определяет общий объем нагрузки и максимальный объем аудиторной... | 3) Порядок сопровождения и обновления сайта; 4) Другие вопросы в... Основной целью данного семинара, является ознакомить Вас с различными видами сайтов, способы их создания, а так же с требованиями... | ||
Основная цель коллектива школы-интерната это сохранение и укрепление... Занятия ведутся в одну смену, начало учебных занятий 30., до уроков проводится утренняя зарядка. В расписании предусмотрено чередование... | Программа для управления сайтом Дальневосточного координационного... Программа предназначена для обеспечения работы сайта и информирования целевой аудитории сайта релевантной информацией, такой как:... | ||
Программа по формированию навыков безопасного поведения на дорогах... Класс с использованием степ-платформы и дополнительного силового оборудования. Совмещение силовой и аэробной нагрузки. Средняя и... | Программа по формированию навыков безопасного поведения на дорогах... Информатизация. Количество компьютеров. Наличие сайта. Обновление сайта новой информацией | ||
Реферат в данной работе рассматриваются сведения о конструкциях... Выключатель нагрузки с автопневматическим дутьём является небольшим воздушным выключателем. Для гашения дуги у таких выключателей... | Балансировка интернет-трафика с помощью статической маршрутизации как задача оптимизации | ||
Пояснительная записка участника Фестиваля Образовательных сайтов... Название сайта: «ро-вестник» (Вести от учителя, работающего в технологии ро д. Б.,Эльконина – В. В. Давыдова) | Порядок сопровождения и обновления сайта; Другие вопросы в зависимости от целей и задач сайта Официальным сайтом общеобразовательного учреждения является сайт, разработанный в соответствии с настоящими требованиями, утвержденный,... |