|
|
|
Оптимизация веб-приложений
Путь в тысячу миль начинается с первого шага.
Производительность любой программной системы может оцениваться по одному или нескольким критериям. Для веб-приложений это обычно время создания динамических страниц, которое, в свою очередь, определяет максимально возможное количество запросов в единицу времени для сервера. Для большинства систем можно сделать грубую оценку по простой формуле:
RPSmax = 2 * CPU / t
где:
- t - время генерации страницы в секундах;
- CPU - количество процессоров или ядер процессора;
- 2 - поправочный коэффициент на то, что веб-сервер некоторое время проводит в ожидании ресурсов и не потребляет процессорного времени;
- RPSmax - максимальное количество запросов в секунду.
Т.о., при среднем времени создания страницы в 300 ms и стандартной 4-х ядерной конфигурации сервера получаем производительность приблизительно в 25 запросов в секунду или 250 тыс. хитов в сутки из за неравномерности распределения нагрузки в течении суток.
Когда необходима оптимизация? Тогда, когда имеются четкие критерии для оценки работы приложения и и показатели его работы выходят за допустимые пределы. Если такие критерии еще не сформированы, то отправной точкой могут служить, например, следующие:
- 90% запросов выполняются менее 300ms;
- 99% запросов выполняются менее 500ms;
- Пиковая загрузка CPU не более 80%.
Для контроля соблюдения качества работы веб-приложения может использоваться система мониторинга (мониторинг SLA).
Для всех клиентов, которые приобретают услугу технической поддержки, мы проводим:
- Аудит качества работы веб-приложений с учетом их особенностей - так, например, сайт спортивной тематики может получать пиковую посещаемость во время проведения футбольных матчей, но в остальное время не загружать сервер более чем на десятую часть.
- Экстенсивную оптимизацию, связанную с настройкой оборудования и программного обеспечения - так, например, поведение MySQL может меняться кардинальным образом в условиях недостатка памяти.
- Составление рекомендаций по проведению интенсивной оптимизации, связанной с изменением логики работы приложения, кода - так, например, использование memcached для кэширования редкоменяющихся блоков веб-страниц позволяет существенно уменьшить время генерации динамической страницы.
|