Слайд 2Проблемы производительности
CPU
IO
Блокировки / Ожидания
Слайд 3CPU
С CPU бороться и просто и сложно одновременно
Изучение сложности алгоритмов (https://habrahabr.ru/post/188010)
Вертикальное и
горизонтальное масштабирование
Использование других языков
Использование правильных алгоритмов
80% потери скорости находится в 20% кода
Слайд 4IO
Сеть
Группировка запросов (к БД, к серверу)
Оптимистическая стратегия (chrome)
Пакетная обработка
Система хранения
Последовательное чтение
HDD (100
мб/сек, 10 мс позиционирование, 1 байт=1 мегабайт)
SSDD (1000 мб/сек, 1 мс позиционирование , 1 байт=1 мегабайт)
SAN (2000 мб/сек, 50 мс позиционирование , 1 байт=100 мегабайт)
Логическая группировка данных (gamedev)
Слайд 5Блокировки/ожидания
Приложение
Пул потоков
Уменьшение критических секций
Использование асинхронных операций (async/await)
БД
Партиции
Разные файлы (файлы партиций и файл
лога)
Правильные уровни изоляции
READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SNAPSHOT
| SERIALIZABLE
Слайд 6Стратегия разработки
Оценка производительности
Мониторинг
Профилирование / оптимизация
Слайд 7Оценка производительности
Нагрузочное тестирование
Время отклика системы
Обычно меряют в персентилях
Потребляемые ресурсы
CPU
Память
Сеть
Порог 70% - надо
добавлять мощности
Инструменты
apache jmeter
yandex tank
Слайд 8Мониторинг
Системы мониторинга
Performance monitor
Nagios
Заббикс
Prometheus
Системы виртуализации
ELK
Graphite
Слайд 9Performance monitor
TypePerf.exe –q > counters.txt
Слайд 13Профилирование
Visual Studio
DotTrace
DotMemory
Слайд 14Visual studio profiler
Sampling
Instrumentation
Elapsed
Application
Elapsed Exclusive
Application Exclusive
Слайд 15DotTrace
Удаленное профилирование
Даже на prod`е