--- date: 2024-01-28 parents: - "[[Архитектор высоких нагрузок - OTUS 2019]]" zero-link: - "[[00 Базы Данных]]" linked: - "[[source/курсы/otus/Архитектор высоких нагрузок 2024/Проблемы высоких нагрузок|Проблемы высоких нагрузок]]" --- ## Цель занятия - Понять в чем мерить нагрузку - Узнать типичные проблемы - Узнать виды масштабирования - Понять что такое "переключение контекста" - Узнать модели языков программирования - Узнать модели веб-серверов - Узнать, что такое трехзвенная архитектура и зачем она нужна *** В чем измеряется нагрузка: - Количество запросов в единицу времени - Requests per seconds (RPS) - Request per minute (RPM) - Количество данных в единицу времени - Packets per seconds (PPS) - Мегабит в секунду (MB/s) - Количество одновременно обслуживаемых соединений - Simultaneous connections - Cuncurrency Есть какая-то проблема 10 000 одновременных соединений. Latency - это время, которое проходит от запроса до получения ответа. Чем оно ниже, тем лучше. Throughput - пропускная способность системы. Например, сколько писем могут принимать наши сервера. В реальных проектах приходится выбирать между Latency и Throughput. В highload системах, как правило, предпочтение отдают Throughput. Виды масштабирования: - вертикальное: увеличение мощности сервера - каждое следующее обновление железа обходится дороже предыдущего - горизонтальное: использование большего колличества серверов. - сложнее разрабатывать, дороже обходятся программисты В настоящее время все программы запускаются в так называемом "защищенном режиме", когда одна программа не имеет доступа к данным другой программы. В этом режиме указатели программы содержать не настоящий адрес на область памяти, а виртуальный, который маппится на настоящий, таким образом в двух разных программах может использоваться один и тот же адрес памяти, но на самом деле это будут разные области памяти. Когда программа просит ОС выделить ей какой-то объем памяти, то ОС не обязательно выделяет такой объем, однако приложение об этом не знает. Появляется понятие резидентной памяти, это память, которая действительно физически выделена программе. Появляется такое понятие, как страницы. Страница это непрерывный кусок памяти, размером 4 килобайта, бывает и 4 мегабайта. Страницы, в которых размещается код самой программы защищены от записи. Страницы с кодом не копируются при fork процесса. Программы могут занимать больше памяти, чем физически доступно. Процессы от потоков отличаются наличием общей памяти, общих файлов.