Готовый перевод Mastering Swoole PHP: Build High Performance Concurrent System with Async and Coroutines / Осваиваем Swoole PHP: построение высокопроизводительной конкурентной системы с асинхронностью и корутинами: Проблемы производительности

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «идёт перевод»

Проблемы производительности

В своих программных проектах мы никогда не останавливались на проблемах производительности, предпочитая рассматривать приложение как программу, которая выдает немедленный ответ на запросы. Задача добиться от службы или сайта максимально быстрого отклика ложилась, в основном, на программистов.

Одним из недостатков системы без сохранения состояний является неоправданная трата ресурсов на восстановление контекста при обслуживании каждого запроса. Сюда относятся и подключение к удалённым службам, и выборка из базы данных. Этот процесс вообще может быть многоступенчатым.

Перед обработкой логики самого запроса, в модели без сохранения состояний много ресурсов тратится впустую на восстановление предыдущего контекста выполнения и всех зависимостей.

Переход на модель с частичным сохранением состояния со Swoole PHP может обеспечить прирост производительности в 2-5 раз. Только представьте, в некоторых проектах, где были применены Swoole и основные концепции, описанные в этой книге, в 10-100 раз снизилась стоимость серверов. Об улучшении производительности отчиталось множество команд из разных проектов по всему миру.

Каждый может и сам увидеть основные проблемы своих систем, связанных как с параллельным исполнением, так и с производительностью. Если перед вами не стоят вопросы высокой конкурентности запросов, корутины и асинхронный I/O будут для вас не слишком полезны. Поэтому, первым делом надо определить узкое место системы, понять, связаны ли первопричины проблем с параллельными задачами ввода-вывода, или вы просто не хотите терять процессорное время и другие ресурсы на восстановление состояний.

Хотя корутины и асинхронный ввод-вывод, это основные возможности, которых большинство людей ожидает от Swoole PHP, экономия затрат при использовании сервера даже с частично сохраняемым состоянием влечёт за собой немедленное сокращение затрат для самого бизнеса.

Задумываемся ли мы над этими вопросами, анализируя свои системы?

Не тратим ли мы ресурсы впустую, игнорируя возможность повторного использования однажды полученных переменных?

Не выбираем ли одну и ту же информацию из базы данных при каждом запросе?

Не получаем ли избыточные данные, не нужные для текущего запроса?

Возможно ли локально кешировать данные, полученные удалённо?

Можем ли мы использовать асинхронный I/O вместо блокирующего I/O, чтобы не терять запущенные процессы?

Можем ли мы отложить немедленное исполнение тяжёлой задачи, и, поместив её в очередь, выполнять независимо?

И так далее.

Проблемы производительности могут различаться в зависимости от характера и сложности конкретной веб-системы. В этой книге мы опишем, как подходить к решению проблем производительности с нескольких разных точек зрения. А вы сможете применить почерпнутые идеи и концепции к собственной системе, снизив затраты и увеличив скорость и эффективность.

Повышение производительности - одна из самых сложных проблем, с которыми нам приходится сталкиваться в своих проектах. Но первым шагом всегда требуется выявить узкие места системы в целом и избежать точечных оптимизаций.

Между тем, производительность не главная тема этой книги. Оптимизируя повторное использование сохранённых состояний, мы можем добиться значительного прироста производительности, но связанные с ней проблемы будут зависеть и от того, где обрабатываются состояния (локально или удалённо), и насколько затратен доступ к ним.

В последующих главах мы более подробно остановимся на этой теме.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод

Переведено на Нотабеноиде
http://notabenoid.org/book/81342/496683

Переводчики: Kee

Настройки

Готово:

100.00% КП = 1.0