РАЗРАБОТКА ВЫСОКОНАГРУЖЕННЫХ WEB- ПРИЛОЖЕНИЙ inln.ru denis@inln.ru Кондратьев Денис.

Презентация:



Advertisements
Похожие презентации
OPTIMIZED COMPUTING Переносим нагрузку на клиент Николай Мациевский Parallels Online Marketing Director Снижаем нагрузку на сервер за счет клиентской оптимизации.
Advertisements

Разгони свой сайт Лекция 1: Особенности клиентской оптимизации Мациевский Николай 1 / 23 webo.in.
Как улучшить производительность проекта за три шага Шаромов Денис руководитель отдела техподдержки.
Разработка высоконагруженных проектов Олег Бунин.
Использование MySQL в сервисе дневников LiveInternet.ru Практика, практика, практика Гурьянов Андрей, программист Новиков Лев, системный администратор.
Построение системного ландшафта для высоко нагруженного проекта ООО «Ленвендо-Софт» Гаврилов Виталий Технический директор тел.: +7 (812)
Все о скорости сайтов Юрий Устинов Русоникс Москва, 20 июня 2013.
Как снизить нагрузку на высокопосещаемый проект? Технический директор «Ленвендо» Виталий Гаврилов +7 (812) (Санкт-Петербург) +7 (495)
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – оптимизация скорости работы приложений Из цикла лекций.
Разгони свой сайт Лекция 5: Параллельные загрузки Мациевский Николай 1 / 27 webo.in.
AJAX Выполнила: студентка группы ПИ-311 Газизова Влада.
Аспекты увеличения быстродействия «1С-Битрикс: Управление сайтом» на виртуальном хостинге Артём Рябинков 1С-Битрикс.
Учебный курс Технологии и средства разработки корпоративных систем Лекция 1 Открытые системы. Клиент и сервер Лекции читает кандидат технических наук,
Администрирование информационных систем Лекция 4. Система управления базами данных.
Нагрузочное тестирование Применение при разработке высоконагруженных веб- проектов Михаил Токовинин, генеральный директор компании QSOFT +7 (495)
Автоматизация тестирования Web-приложений 2007 г. Липский Павел Николаевич.
Разработка архитектуры больших систем О чем нужно думать перед кодированием? Александр Горный Продюсер Почта.ру
Разгони свой сайт Лекция 4: Объединение файлов Мациевский Николай 1 / 22 webo.in.
Отладка программ на JavaScript. FireBug.. FireBug – дополнение к FireFox Возможности: Анализ html-кода страницы Вычисление CSS Работа с JavaScript Анализ.
Лекция 22 Лекция 22 Локальные, сетевые и распределенные базы данных. Архитектура «файл- сервер». Двух и трехуровневая архитектура «клиент-сервер». Модель.
Транксрипт:

РАЗРАБОТКА ВЫСОКОНАГРУЖЕННЫХ WEB- ПРИЛОЖЕНИЙ inln.ru Кондратьев Денис

РАЗРАБОТКА ВЫСОКОНАГРУЖЕННЫХ WEB- ПРИЛОЖЕНИЙ inln.ru Кондратьев Денис

Высоконагрузочные проекты Производительность и масштабируемость: 2 большие разницы Если в архитектуре проекта не было учтено его масштабирование – он не будет масштабироваться Если в архитектуре проекта было учтено его масштабирование – то все равно готовьтесь к проблемам с масштабированием

Прогнозы развития проекта Планирование роста посещаемости Планирование роста данных Планирование роста статического контента

Признаки надвигающихся проблем Искать проблемы привентивно, а не когда все станет плачевно Завести регламенты мониторинга сервера и аудитов логов Максимальное время обработки запроса Количество отказов обслуживания запросов Ошибки в логах Непонятные ошибки …..

Локализация проблемных мест Premature optimization is the root of all evil (or at least most of it) in programming. Donald Knuth. Не начинайте оптимизацию решения до понимания первопричин проблем Решаем первопричины проблемы, а не их следствия

Локализация проблемных мест Поиск наиболее узких мест проекта. Поиск узких мест в инфраструктуре Поиск неразделяемых ресурсов Поиск наиболее тяжелых запросов Поиск наиболее частовыполняемых запросов

Улучшение hardware Не нужно переделывать код Быстрый рост, но не на долгий срок Дорого Проблема со стойками и электропитанием Увеличение расходов на администрирование

Оптимизация запросов к БД Анализ логов БД Анализ плана выполнения запросов Денормализация данных, избавляемся от join Уменьшение количества запросов путем использования хранимых процедур Выбирать только те данные, которые нужны

Оптимизация запросов к БД Распараллеливание запросов между несколькими серверами БД: по частоте обновлений, по связанности данных, по устареванию, сегментирование Сегментирование данных: меньше объем информации в таблице – быстрее выборки + легче переносить на новые серверы БД или делать миграцию между серверами Пишем в мастер – читаем со слейвов

Оптимизация запросов к БД Выделенные серверы для кеша. Оптимизация работы кеша: кешируем только объекты, которые часто запрашиваются, но редко изменяются

Организация серверной площадки Dev-серверы Тестовые серверы Пред-продакшен серверы Продакшен серверы

Тестирование Тестирование только на реальных объемах БД Все изменения должны проходить обязательное тестирование на предпродакшене до переноса на продакшен Никаких обновлений вечером и перед выходными

Дистрибуция измененного кода Общая информация о DFS Настройка DFS для дистрибуции кода между серверами Настройки в IIS

Зеркала и балансер Распределение нагрузки Если за балансером находится неразделяемый ресурс (БД, etc.) – результативность балансера падает Балансер позволяет постепенно вводить обновления кода

Очереди задач Переодические задачи нужно выводить в очереди задач Очередь задач необходимо мониторить Позволяет синхронизовать выполнение задач и задавать логику при ошибках выполнения задачи в очереди (преимущество перед стандартным шедулером) Можно выполнять задачи когда есть ресурсы

Очереди задач

Логгирование и мониторинг Отслеживать ошибки по типам: критические/БД/… Уведомление по СМС Профилактический просмотр логов – особенно после обновлений Иметь план на возникновение аварий в ночное время и на выходных Если проблемы часты – то должно быть 2 админа с доступом к проекту (ноутбук + 3g модем)

Логгирование и мониторинг Счетчики производительности Трассировка Вывод трассировки на продакшенах Мониторинг наиболее длительных запросов/наиболее долгих страниц

Логгирование и мониторинг

Верстка Выделение общих элементов страницы в общие файлы Включать на страницу только те css/js файлы, которые там нужны Все стили и скрипты – в css/js файлы Минимизация http-запросов: спрайты, объединение файлов Проблемы при обновлении css файлов при кешировании в браузере у клиента

Верстка Вынос css-файлов в начало кода страницы, js – в конце Компрессия и объединение css/js- файлов Отказ от CSS-expression Загрузка элементов страницы по частям – AJAX/Iframe Разделение статики по разным доменам/поддоменам Оптимизация размера изображений Уменьшение размера cookie

СПАСИБО ЗА ВНИМАНИЕ inln.ru Денис Кондратьев