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