пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Мы уже рассказывали про Asterisk Manager Interface (AMI) в предыдущих статьях. Если кратко – AMI интерфейс служит для получения команд от внешних приложений на управление АТС – инициацию вызовов, например.
Как правило, приложения, которые используют AMI именно внешние и подключаются с других хостов. Именно поэтому, необходимо наверняка знать – работает ли AMI корректно? Об это и поговорим.
Windows: проверка Telnet
Самый просто способ проверки – проверка с помощью Telnet. Нам нужно просто указать IP – адрес и порт AMI (как правило, это 5038, если не меняли) и выполнить телнет коннекцию.
Проверку надежнее всего проводить с хоста, с которого будет подключаться ваше приложение, так как AMI имеет возможность фильтрации по IP;
В качестве клиента мы воспользуемся Putty. Открываем клиент и указываем следующее:
Host Name (or IP address) - IP – адрес вашего сервера с Asterisk;
Port - 5038, стандартный порт AMI (если вы его не меняли);
Connection Type - отмечаем Telnet;
Выполняем подключение. Если все работает хорошо, то вы увидите следующее:
Linux: проверка Telnet
Если вы хотите выполнить проверку с Linux – based машины, то просто дайте следующую команду в консоли:
[admin@merionet ~]# telnet 192.168.1.14 5038
Trying 192.168.1.14...
Connected to localhost.
Escape character is '^]'.
Asterisk Call Manager/2.8.0
Если вы хотите убедиться, что ваш сайт работает хорошо вне зависимости от интенсивности трафика, проведите нагрузочное тестирование.
Выражаясь простыми словами, нагрузочное тестирование – это разновидность тестирования производительности. Его используют для того, чтобы определить верхний предел веб-приложения и чтобы проверить, как система справляется с большой нагрузкой.
Если вы хоть раз задавались вопросом
«как этот веб-сайт себя поведет с точки зрения производительности при экстремальной нагрузке, если к нему одновременно будет обращаться слишком много пользователей?»,
тогда эта статья для вас – здесь мы ответим на этот вопрос.
Ниже мы продемонстрируем три различных инструмента, с помощью которых вы сможете провести нагрузочное тестирования.
Но прежде, чем мы приступим, давайте для начала посмотрим, какие данные нам необходимо собрать.
Когда речь заходит о тестировании производительности, стоит понимать, что есть определенные показатели, которые могут описать наше приложение. Вот они:
Время отклика
(Response time) – количество времени между запросом и ответом на него.
Среднее время загрузки
(Average load time) – среднее время отклика.
Максимальное время отклика
(Peak response time)
– самое большое значение времени отклика.
Пропускная способность / запросы в секунду
(Throughput / requests per second (rps)) – количество запросов, обрабатываемых в секунду.
Использование памяти/ЦП
(Memory/CPU utilization) – объем памяти/ЦП, потребляемый главным компьютером.
Частота появления ошибок
(Error rate)
– соотношение типа ошибки/запросы.
Одновременно работающие пользователи
(Concurrent users) – количество активных пользователей/сеансов в приложении.
Процентили (50% и 95%)
(Percentiles) – процент запросов, время выполнения которых лучше некоторого определенного значения.
Loadtest
loadtest
Первый инструмент – это пакет
npm
под названием loadtest.
Для того, чтобы у вас была возможность использовать данный инструмент, вы должны установить на вашем компьютере NodeJS. После этого вам необходимо запустить следующую команду:
npm install -g loadtest
Loadtest – это, определенно, самый простой и самый легкий инструмент для настройки и использования из данного списка. Все, что от вас требуется, это открыть командную строку и запустить:
loadtest [-n requests] [-c concurrency] URL
В демонстрационных целях мы будем использовать мой любимый веб-сайт blank.org. По сути, это пустая страница, которую чаще всего используют именно для тестирований.
Следующая команда отправит максимум 60 запросов от 30 различных одновременно работающих клиентов:
loadtest -n 60 -c 30 https://blank.org
Примечание: количество одновременно работающих пользователей никак не связано с количеством одновременно отправленных запросов.
Параллельно работающие пользователи/параллельные сеансы – это количество пользователей, подключенных к приложению, которые отправляют запросы через равные промежутки времени, но одновременно.
Результат работы предыдущей команды будет таким:
Этот инструмент дает нам информацию о:
процентилях
(50, 90, 95, 99 и 100%);
среднем времени отклика;
частоте появления ошибок.
Мы можем видеть, что для blank.org для 50% наших запросов время отклика 581 мс, а самое большое значение времени отклика составило 649 мс.
Loadmill
Loadmill
Еще один инструмент, который мы можем использовать для нагрузочного тестирования, - это Loadmill. Это бесплатный веб-инструмент. Он также включен в пакет npm (это на случай, если вдруг мы захотим написать код самостоятельно), но для демонстрационных целей мы будем использовать онлайн-инструмент.
Для того, чтобы провести нагрузочное тестирование с помощью Loadmill, все, что нам нужно сделать, это создать запрос в соответствующей панели и указать URL-адрес нашего приложения.
После чего мы должны нажать кнопку «
Run Test
» (Запустить тестирование) и настроить количество параллельных сеансов и продолжительность тестирования.
Вы заметите, что домен
blank.org
отображается красным. Это из-за того, что он считается непроверенным доменом. Не стоит забывать, что я не владею сайтом
blank.org
. По этой причине есть определенное максимальное пороговое значение нагрузки, которую мы можем направить на этот сайт.
Настроив такую конфигурацию, мы увидим, как себя поведет blank.org, когда в течение 2 минут приложением одновременно попытаются воспользоваться 5 пользователей.
В качестве результата мы можем увидеть производительность в динамике:
у всех запросов среднее время отклика составило 55мс;
наибольшая нагрузка была в начале, когда у 95% запросов время отклика было менее 1 059 мс, а у 50% запросов - менее 51 мс.
Это значит, что самое долгий ответ пользователь ожидал более 1 секунды.
Здесь же мы можем видеть
частоту появления ошибок
и пропускную способность в
rps
(запросы в секунду) наших сеансов. Это количество запросов, которые были отправлены нашими одновременно работающими пользователями за 1 секунду.
А теперь можете спросить себя, почему же такое большое расхождение между результатами тестирования с помощью первого инструмента и этого.
Здесь крайне важно обратить внимание на актуальность и точность данных. Вы должны оставаться реалистами и стараться, чтобы ваши тесты как можно точнее отражали реальность.
Когда речь заходит о тестировании производительности, то есть несколько стратегий. Некоторые инструменты и поставщики используют только локальную среду, тогда как другие для каждого параллельно работающего пользователя запускают виртуальные машины.
Loadmill
выделяется среди других служб тем, что для того, чтобы создать нагрузку на тестируемый сервер, он использует реальный веб-трафик. То есть, трафик, который идет на целевой веб-сервер, исходит от
реальных браузеров
.
Пакет
Loadtest
тесно связан с локальным компьютером, на котором запускаются тестирования, и вы можете удаляться от него лишь настолько, насколько позволяет вам ваш ЦП.
Вы уже видели, что я запускал тестирование с помощью
loadtest
на своем компьютере с помощью командной строки. Время отклика было в 10 раз больше, чем при использовании
Loadmill
. Давайте разберемся почему так происходит.
Если мы откроем инструментальные средства разработки на blank.org, то найдем там его IP –
18.217.80.105
. Выполним поиск и увидим, что сервер находится в
Огайо, США
.
Мы знаем, что время отклика – это время, которое прошло с момент отправки запроса и до момента получения ответа. Итак, запрос отправляется на сервер, а затем обратно с сервера к агенту (браузеру).
С помощью первого инструмента мы получили результат в 500мс, так как я отправляю запросы со своего компьютера. Получается, что запросы должны пробежать туда и обратно почти 11 000 миль.
Если мы перейдем ко второму инструменту и взглянем на его панель результатов
PERFORMANCE/COUNTRY
, то мы увидим, что все запросы были отправлены из США. Именно поэтому время отклика существенно меньше.
Не забывайте, что лучше всего моделировать условия, которые были бы максимально приближены к реальным, чтобы данные были как можно более точными.
Перед тем, как мы перейдем к следующему инструменту, я хочу отметить еще кое-что касательно Loadmill: его можно настроить для гораздо более масштабных целей, чем эта.
Мы можем создавать сложные сценарии нагрузочного тестирования с несколькими запросами, которые содержат параметры и данные, в том числе сценарии стандартной аутентификации и уведомлений по электронной почте.
Apache JMeter
Apache JMeter
Последний инструмент в нашем списке – Apache JMeter. Это Java-приложение с открытым исходным кодом, которое предназначено для тестирования производительности. Это приложение необходимо устанавливать, и в настройке он не такой уж простой. Поэтому всю дальнейшую информацию мы поделили на отдельные шаги.
Шаг 1 – Загрузите и установите
Загрузите архив с бинарными файлами на свой компьютер и распакуйте его.
Затем перейдите в папку bin и запустите файл jmeter.bat два раза. Один раз, чтобы настроить инструмент, и второй раз, чтобы его запустить.
Шаг 2 – Добавьте группу потоков (Thread group)
У
Thread Group
есть три самых важных свойства, которые влияют на нагрузочное тестирование:
Количество потоков (пользователей)
(Number of threads (users)): количество параллельных сеансов, которые создаст JMeter.
Период увеличения нагрузки
(Ramp-up period): продолжительность теста.
Счетчик циклов
(Loop count): сколько раз необходимо выполнить тест.
Шаг 3 – Добавьте набор образцов HTTP-запросов
В
шаблоне HTTP-запроса
, под названием раздела HTTP Request, заполните поля
Server Name
(имя сервера),
Protocol
(протокол) и
Path
(путь) для приложения, которое вы хотите протестировать.
Шаг 4 – Добавьте просмотр результатов
В JMeter для вывода результатов тестирования производительности используются компоненты listener. У них есть много разновидностей, но вы можете также добавить какие-то другие с помощью плагинов. В нашем случае мы будем использовать таблицу (Table).
Шаг 5 – Запустите тестирование
Нажмите на зеленый треугольник и запустите тестирование.
Теперь мы можем проанализировать наш тест.
Прежде всего, в правом верхнем углу мы можем видеть, что тест выполнялся в течение 10 секунд. Именно так мы указали в параметрах.
Далее больше всего нас интересуют столбцы
Status
(Статус) и
Latency
(Задержка/время отклика).
Latency
: количество миллисекунд, которое прошло с момент отправки запроса и до момента получения ответа.
Status
: отображает статус запроса, успешно он был выполнен или нет. Он используется для расчета частоты повторения ошибок.
Попутно хочу заметить, что значения практически такие же, как и значения, которые мы получили с помощью нагрузочного тестирования. Это потому, что они работают одинаково.
Остальные показатели
С помощью этих инструментов мы смогли получить информацию практически по всем показателям, которые упоминали в начале.
А если мы хотим получить информацию об использовании памяти/ЦП, нам нужно подключиться к компьютеру, на котором находится наше приложение, и выполнить следующие команды:
$ top
Эта команда продемонстрируем вам как процент загрузки ЦП, так и использование памяти.
или
$ free -h
Эта команда продемонстрирует вам только информацию касательно памяти, но ее вывод более удобный для восприятия.
Заключение
Существует большое количество инструментов, которые можно использовать для тестирования производительности. Очень важно найти тот, который вам будет легко использовать, но при этом он должен показывать как можно более точные данные. И помните, что ваши тесты всегда должны моделировать условия, которые максимально приближены к реальным.
В данной статье я расскажу про опыт одного из наших партнеров, которым мы помогли увеличить рост заказов до 35% за счет уменьшения оттока клиентов и избавили от проблем со связью в офисе навсегда.
Наверное, большинство из нас сталкивалось с проблемой связи в офисе: хрипит телефон, непонятные помехи и шум, прерывания в разговоре, сбои при подключении, недоступность оператора, занятые линии и так далее.
Вы или ваши сотрудники начинают нервничать, собеседник раздражается от того, что приходится снова и снова повторять слова или постоянно переспрашивать информацию и в конечном итоге мы получаем:
Негатив от клиента и потерю лояльности к компании, которая «не может наладить даже качество телефонного разговора»;
Эмоциональный стресс сотрудников, который отрицательно отражается на их эффективности работы.
Совершенно очевидно, что это огромная проблема для бизнеса, которая влечет за собой конкретные как экономические, так и нематериальные издержки, перечислю только самые основные:
Потеря клиентов из-за нестабильной работы телефонии;
Низкая эффективность работы сотрудников;
Нехватка компетенций внутри команды для решения проблем;
Растущие расходы и недополученная прибыль.
Предыстория
В августе 2018 года к нам обратилась компания «ООО НИКАС», занимающаяся оптовой торговлей напитков и продуктов питания.
Телефонные звонки – основной и жизненно важный способ связи для их бизнеса, т.к. по данному каналу:
принимаются заказы от текущих клиентов;
генерируются заявки новых клиентов (номер телефона привязан к рекламе Яндекса и Google)
В офисе клиента была установлена устаревшая аналоговая АТС, которая, как выяснилось, была балластом, тянувшим бизнес ко дну: постоянные срывы звонков и помехи прямо во время разговоров, а порой и невозможность просто дозвониться, сильно пошатнули доверие клиентов в профессионализм и надежность компании.
Проблема
Из-за некачественных или сорвавшихся звонков, как снежный ком, накапливались отрицательные результаты и к моменту обращения к нам, на стороне клиента по статистике были зафиксированы следующие критические точки:
29% ежемесячный отток лояльных клиентов;
33% потери новых клиентов и «прожигание» маркетинговых бюджетов.
Огромные убытки для бизнеса и угроза прекращения существования компании возникли всего лишь из-за игнорирования банальной проблемы.
В дальнейшем, как признался один из совладельцев бизнеса – Андрей, причиной того, что на проблему закрывались глаза было простое незнание возможностей IP телефонии:
«Мы просто боялись, что-то трогать, т.к. у нас не было на своей стороне компетенции, чтобы решить задачу, а обращаться к подрядчику нам казалось, что будет очень долго, дорого и сложно – и за это «незнание» мы заплатили в 10 раз дороже, чем любому подрядчику и потратили впустую кучу времени…»
К счастью для коллег, пускай поздно, но они все-таки обратились к нам для решения своих проблем и оказались абсолютно правы.
Проанализировав ситуацию, взвесив все «за» и «против» мы пришли к выводу, что для нашего клиента идеально подойдет установка Asterisk по следующим характеристикам:
Стоимость - бюджетное решение, которое мог позволить наш клиент;
Скорость выполнения работ – очень быстрая и оперативная реализация;
Надежность технологии – отличное сочетание по соотношению цены и качества.
Что было сделано:
Встретились с клиентом для выяснения основных «болевых точек»;
Уточнили пожелания клиента со стороны бизнес и IT подразделений;
Проанализировали полученные вводные данные и согласовали смету;
Презентовали на демонстрационном стенде возможности технологии;
Сформировали проектную документацию;
Получили доступы к системе и приступили к пуско-наладочным работам;
Завершили настройку системы и провели приемочные испытания;
Ошибок выявлено не было, и мы передали систему клиенту в эксплуатацию;
Через 3 месяц собрали и провели анализ ключевых показателей эффективности
Предложили пути оптимизации скриптов разговора.
Что получил наш клиент:
Привлечение новых заказов за счет:
Уменьшения оттока лояльных клиентов с 29% до 12% * (по результатам работы системы за 3 месяца)
Увеличения % удержания новых клиентов с 7% до 35%
Увеличение эффективности работы сотрудников за счет экономии времени на разговор
снизили среднее время разговора со 156 до 132 секунд
Увеличение лояльности клиентов за счет снижения среднего времени нахождения звонка в очереди с 21 до 9 секунд;
Увеличение количества отвеченных звонков на 15% за счет уменьшения количества не дошедших до оператора вызовов;
Увеличение количества звонков, когда оператор решил проблему клиента с первого раза с 72% до 89%;
Основные поставленные перед нами KPI клиента в графиках:
Кроме этого:
Быструю и качественную модернизацию связи в офисе без лишних затрат;
Абсолютно прозрачный план проекта с четкими сроками выполнения работ и расчета стоимости;
Техническую поддержку и личного account-менеджера;
Обучение сотрудников по использованию продукта;
Предоставление технической документации;
Предоставление скидок при закупке оборудования.
Заключение
Из-за недооценки необходимости иметь качественную связь в офисе наш клиент заплатил огромную цену, и точка невозврата была очень близка. Не бойтесь смотреть проблемам в глаза, а самое главное – признаться в себе, что пора начать действовать.
Не попадайте в ситуацию нашего клиента и модернизируйте телефонию вовремя, а команда Merion Networks будет всегда готова помочь. Наш лендинг: https://asterisk.merionet.ru/. Пришло время изменений :)
