54 lines
4.2 KiB
Markdown
54 lines
4.2 KiB
Markdown
|
---
|
|||
|
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 процесса.
|
|||
|
|
|||
|
Программы могут занимать больше памяти, чем физически доступно.
|
|||
|
|
|||
|
Процессы от потоков отличаются наличием общей памяти, общих файлов.
|