Оптимизация web приложения
2010-02-23
web
оптимизация
Любой сервер (фронтенд) ограничен шириной интернет канала и собственными мощностями. У максимально оптимизированного сервера (фронтенд) должна быть возможность загружать канал исходящим трафиком на 100%, таким образом можно считать что сервер справляется с нагрузкой на 100%. Дальше остается только расширять ширину канала.
Некоторые идеи разгрузки веб приложения:
1. Высоко требовательные ресурсы
Ресурсы к которым происходит очень частое обращение можно хранить в памяти для разгрузки сервера и распределять на разных хостах для разгрузки канала
2. Статика
2.1 Переложить статику на другой хост, а upload файлов делать например через nfs
2.2 Распределение статики на разные машины, а при формировании страниц случайным образом указывать сервер статики.
3. Кеширование динамических страниц
например если глав. страница изменяется только после создания/изменения статей, то глав страницу можно сохранить в файл/базу и выдавать её при обращении клиентов, при изменении контента обновлять закешированную страницу.
4. Оптимизация БД
4.1 Основная нагрузка на БД является чтение данных. Поэтому можно построить кластер. Например поднять 10 машин с БД, при необходимости записать данные делать запись на все 10 машин, а для чтения данных выбирать машину случайным образом (
random(10)), т.к. основная нагрузка на БД является чтение, она будет распределятся равномерно на 10 машин (по теории вероятности)
4.2 Использование memcache
4.3 Анализ нагрузки
Можно вести статистику количества однотипных запросов к БД, и самые часто вызываемые запросы можно закешировать.