Технические специалисты иногда ограничивают свою область деятельности нижними уровнями технологического стека, на которых они чувствуют себя наиболее комфортно. Такое поведение повышает риск упустить возможности значительного повышения производительности. В качестве примера приведу заказчика, с которым я работал в середине 1990-х. Бухгалтерия ежедневно выпускала трехфутовую стопку отчетов о предварительном балансе главной книги (General Ledger (GL) Aged Trial Balance). Выяснив причины столь частого запуска этого отчета, руководитель проекта внедрения главной книги из Oracle Consulting объяснил пользователям, как они могут получить нужные им данные менее затратным способом с помощью онлайновой формы. В результате мы смогли уменьшить нагрузку на систему на миллиарды команд в день, не затратив на «настройку» ни цента. Такое решение не только разгрузило систему, но и облегчило работу пользователей, которым гораздо удобнее работать с онлайновой формой, чем вылавливать нужные цифры из отчета толщиной в дюйм.
Сооснователь компании hotsos.com, Гэри Гудман (Gary Goodman), рассказывал о проектах внедрения приложений, которыми он руководил во время работы в Oracle Corporation. Один из приемов, практикуемых им в процессе внедрения, состоял в отключении всех прикладных отчетов в системе. Когда пользователи приходили с просьбой о недостающем отчете, специалисты подключали его обратно. По опыту Гэри, ни разу не пришлось подключить больше 80% отчетов, первоначально имевшихся в системе. Как по-вашему, какие 20% из ваших отчетов пользователи никогда не читают?
На уровне бизнес-требований вашего технологического стека вопрос, на который вы должны ответить, звучит так:
Действительно ли все предъявляемые бизнес-требования оправданны?
Не оправданные интересами бизнеса пользовательские операции следует просто отключить. В действительно необходимых пользовательских операциях постарайтесь исключить бесполезную работу (некоторые способы рассмотрены в главе 11). Данные диагностики производительности будут «подталкивать» вас в направлении снизу вверх, хотя, как правило, эффективнее продвигаться «сверху вниз». Например, прежде чем настраивать отчет, узнайте, нельзя ли от него отказаться. Не ограничивайте свою работу по оптимизации только техническими вопросами. Как было отмечено в главе 1, хороший аналитик по производительности должен хорошо разбираться в том, как соотносятся между собой требования бизнеса и вычислительные мощности, призванные обеспечивать выполнение этих требований.
Наконец, не забывайте о том, что с точки зрения бизнеса пользователи не работают с системой, они являются ее частью. Иллюстрацией этого может служить история, рассказанная моим коллегой Риком Мину-теллой (Rick Minutella). Компания пригласила его оптимизировать производительность модернизированного недавно приложения ввода заказов. В табл. 10.1 показана разница в производительности до и после модернизации. На типичном «большом совещании» с участием финансового директора, пользователей, руководителей IT-отделов и поставщиков оборудования компания потребовала от корпорации Oracle восстановить производительность формы ввода заказов, которая губила весь бизнес.
Таблица 10.1. Производительность ввода заказов до и после модернизации
Показатель
|
Значение
|
Значение после
|
производительности
|
до модернизации
|
модернизации
|
Скорость ввода заказов
|
10 вызовов/час
|
6 вызовов/час
|
Время отклика формы
|
5 сек/экран
|
60 сек/экран
|
Что и говорить, 60-секундное ожидание онлайновой формы ввода заказов - это слишком долго. Однако утверждение «производительность формы ввода заказов губит наш бизнес» попросту неверно. И вот почему. Если бизнес работает со скоростью шесть телефонных вызовов в час, то средняя продолжительность вызова составляет десять минут. В примере 10.4 приведен профиль ресурсов для такого вызова при работе с 60-секундной формой.
Пример 10.4. Профиль ресурсов процесса обработки заказа при неудовлетворительной производительности формы
Какое максимальное влияние на бизнес может оказать оптимизация формы? Ответ приведен в примере 10.5. Если полностью исключить время отклика формы, общее время обработки заказа уменьшится только до девяти минут.
Total 540s 100.0%
Беда в том, что этого недостаточно. Если оператор сможет принимать один заказ в среднем за 9 минут, то за час он примет в среднем только 6,67 заказа. Это все еще довольно далеко от требования обработки 10 заказов в час. Само по себе повышение производительности формы ввода не поможет этой компании увеличить скорость ввода заказов до указанного значения. Бизнес «убивает» вовсе не форма, а то, чем занимаются принимающие заказ операторы в оставшиеся 9 минут.
Для того чтобы улучшить производительность в данном случае, требуется выйти за рамки обычной «настройки системы». Куда же пропадает это «оставшееся» (other) время? Среди прочих возможностей выделим такие:
Большая часть его может уходить на длительное ожидание при поиске идентификатора продукта, создавая клиенту неудобства. В этом случае следует найти способ сократить это время.
«Остальное» время главным образом тратится на улучшение взаимоотношений с клиентом. Не исключено, что в этом случае имеет смысл нанять дополнительных операторов, чтобы при средней скорости приема заказов одним оператором шесть за час общая производительность соответствовала потребностям бизнеса.
Еще одно интересное предположение, которое следует проверить, - не группируются ли звонки по времени таким образом, что клиенты тратят много времени на ожидание ответа в часы наибольшей занятости. Уроки теории массового обслуживания, данные в главе 9, помогут вам более эффективно справиться с наплывом звонков, либо задействовав дополнительных операторов, либо уменьшая время обслуживания клиента. Здесь есть, о чем подумать. Главное - не ограничиваться при рассмотрении своей «системы» лишь характеристиками программного и аппаратного обеспечения. Бизнес требует, чтобы «систему ввода заказов» рассматривали шире, учитывая, что все участники процесса размещения заказа оказывают влияние на прибыль, возврат инвестиций и приток денежных средств.
Что делать, если все лишние вызовы в диагностируемой пользовательской операции уже исключены, а время отклика по-прежнему неприемлемо велико? Надо определить, насколько оправданны задержки в отдельных вызовах. Для того чтобы решить, допустима ли данная задержка, надо иметь представление о том, каких значений можно ожидать. Оказывается, эти значения состоят всего из нескольких составляющих. Наиболее важные с нашей точки зрения перечислены в табл. 10.2. Эти значения будут меняться с увеличением скорости работы оборудования, но на момент написания книги, в 2003 г., они представляют собой разумные ограничения для большинства существующих систем. В частности, значение LIO зависит от скорости работы процессора, все время стремительно увеличивающейся. Пояснения даны в сноске к табл. 10.2.
Таблица 10.2. Полезные константы для аналитика по производительности [Millsap and Holt (2002)]
Событие
|
Максимально допустимая задержка на одно событие
|
Количество событий в секунду при данной задержке
|
Logical read (LIO)a
|
20 мкс или 0,000 020 с
|
50000
|
Single-block disk read (PIO)
|
10 мс или 0,010 000 с
|
100
|
SQL*Net transmission via WAN
|
200 мс или 0,200 000 с
|
5
|
SQL*Net transmission via LAN
|
15 мс или 0,015 000 с
|
67
|
SQL*Net transmission via IPC
|
1 мс или 0,001 000 с
|
1000
|
a Джонатан Льюис (Jonathan Lewis) опубликовал результаты экспериментов, согласно которым процессор, работающий на частоте 100 МГц, должен выполнять около 10 000 операций LIO в секунду [Lewis (2003)]. Следовательно, при частоте 1 ГГц ожидаемая производительность составит 100 000 LIO/сек, или 10 мкс на операцию. Указанное в таблице значение соответствуем частоте процессора 500 МГц.
Задержки, превышающие ожидаемые значения из табл. 10.2, могут свидетельствовать о сбоях в оборудовании, но чаще они вызваны задержками в очередях к ресурсам. Чем вызваны длительные задержки в очереди? Наиболее вероятная причина (вы уже догадались?) - чрезмерный спрос на ресурс. А чем вызван этот чрезмерный спрос? Очевидно, одной или несколькими программами, конкурирующими за те же ресурсы, что и диагностируемая пользовательская операция.
< Предыдущая | Следующая > |
---|