Любой аппаратный комплекс, программа или сетевые системы создаются в расчете на определенные нагрузки. Нас не удивляет, когда покрышки автомобилей испытываются на максимально допустимую скорость и продаются с четким указанием допустимых величин. Но крайне редко приходится встречать подобное отношение к программно-аппаратным комплексам.
Очень редко компании перед запуском проекта в эксплуатацию проводят нагрузочное тестирование сервера и определяют максимально допустимую посещаемость. Кстати, в рамках тестирования легко выявляются наиболее частые ошибки и слабые места, и в результате производительность сервера увеличивается в несколько раз.
Но мы поговорим о причинах, по которым обычный веб-сервер в результате нагрузочного тестирования или реальных пиковых нагрузкок прекращает нормальное функционирование.
При больших нагрузках проект может прекратить нормальное функционирование по следующим причинам:
Нехватка оперативной памяти для нормальной одновременной работы процессов веб-сервера и базы данных. В большинстве систем на каждый запрос к сайту открывается отдельный процесс веб-сервера. Обычный размер процесса Apache с подключенным PHP-модулем и работающим приложением может составить порядка 20-30 мегабайт. В результате пиковых нагрузок происходит одновременный запуск очень большого числа процессов (иногда больше нескольких сотен процессов). И как следствие, начинается свопирование процессов, а это неизбежно сказывается на производительности базы данных, и производительность всей системы в целом резко снижается.
Нехватка процессорных ресурсов для одновременного выполнения процессов и обеспечения адекватного для пользователя времени реакции. Данная ситуация может возникнуть в том случае, если в результате большого числа запросов к вашему серверу число одновременно выполняемых запросов превысит процессорные мощности сервера. И даже если у вас достаточно оперативной памяти и первая проблема не проявила себя, вы можете обнаружить, что система перестала адекватно отвечать на запросы, время выполнения страниц увеличилось в несколько раз, база данных перегружена очень большим числом запросов. Все это может привести к тому, что все без исключения пользователи не смогут работать с сервером.
Недостаточная производительность базы данных при одновременных конкурентных запросах, невозможность полностью использовать ресурсы сервера. Данная ситуация очень часто возникает при работе с MySQL. Надо отметить, что обычно MySQL использует формат таблиц MyISAM. Это очень простой и эффективный вариант работы, но, к сожалению, при большом числе одновременных запросов такая база данных становится критически узким местом в производительности системы в целом. Во время вставки данных, обновления и некоторых других запросах, происходит эксклюзивное локирование таблиц и, как следствие, все запросы выполняются только последовательно, а не одновременно. В результате, при росте нагрузки, время генерации страниц возрастает необоснованно резко и в итоге становится неприемлемо большим. Менее всего подвержены подобным проблемам проекты, использующие Oracle или MSSQL, MySQL с форматом таблиц InnoDB.
Общая несбалансированность веб-системы при пиковых нагрузках и быстрая регрессия производительности даже при незначительных стрессах. При пиковых нагрузках вся система испытывает перегрузки. В дополнение к перечисленным проблемам возможно возникновение проблем в дисковой подсистеме. В итоге, если под одной из составляющих начинается потеря производительности, то существенно падает производительность всей системы, начинается падение производительности в других частях и, в итоге, еще больше снижается работоспособность, производительность системы регрессирует и иногда наступает полная остановка в работе.
Страница
1 - 1 из 3
Начало | Пред. |
123
|
След. |
Конец
| Все