Home

Tags

Оптимизация 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 Анализ нагрузки
Можно вести статистику количества однотипных запросов к БД, и самые часто вызываемые запросы можно закешировать.