Сходу вижу следующих «виновников»:
- Медленные запросы к субд / внешним (веб)сервисам.
- Медленный дисковый (hdd) i/o.
- Медленная сеть (большие задержки (latency) и/или пропускная способность).
- Бесконечное бессмысленное копирование данных туда-сюда.
- Блокировки на примитивах синхронизации (затраты на переключение контекста процесса/планировщик ядра).
- Кеш-промахи.
- Куча системных вызовов (syscall) с переключением в режим ядра.
Какие еще причины медленной работы ПО?
P.S. Кривая архитектура, алгоритмы и пр. ошибки проектирования не интересуют.