По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Понимать состояние ваших серверов с точки зрения их загрузки и производительности - крайне важная задача. В этой статье мы опишем несколько самых популярных методов для проверки и мониторинга загрузки ЦПУ на Linux хосте. Методы проверки Проверяем загрузку процессора с помощью команды top Отличным способом проверки загрузки является команда top. Вывод этой команды выглядит достаточно сложным, зато если вы в нем разберетесь, то точно сможете понять какие процессы занимают большую часть ваших вычислительных мощностей. Команда состоит всего из трех букв: top У вас откроется окно в терминале, которое будет отображать запущенные сервисы в реальном времени, долю системных ресурсов, которую эти сервисы потребляют, общую сводку по загрузке CPU и т.д Будем идти по порядку: первая строчка отображает системное время, аптайм, количество активных пользовательских сессий и среднюю загруженность системы. Средняя загруженность для нас особенно важна, т.к дает понимание о среднем проценте утилизации ресурсов за некоторые промежутки времени. Три числа показывают среднюю загрузку: за 1, 5 и 15 минут соответственно. Считайте, что эти числа - это процентная загрузка, т.е 0.2 означает 20%, а 1.00 - стопроцентную загрузку. Это звучит и выглядит достаточно логично, но иногда там могут проскакивать странные значения - вроде 2.50. Это происходит из-за того, что этот показатель не прямое значение загрузки процессора, а нечто вроде общего количества "работы", которое ваша система пытается выполнить. К примеру, значение 2.50 означает, что текущая загрузка равна 250% и ваша система на 150% перегружена. Вторая строчка достаточна понятна и просто показывает количество задач, запущенных в системе и их текущий статус. Третья строчка позволит вам отследить загрузку ЦПУ с подробной статистикой. Но здесь нужно сделать некоторые комментарии: us: процент времени, когда ЦПУ был загружен и которое было затрачено на user space (созданные/запущенные пользователем процессы) sy: процент времени, когда ЦПУ был загружен и которое было затрачено на на kernel (системные процессы) ni: процент времени, когда ЦПУ был загружен и которое было затрачено на приоритезированные пользовательские процессы (системные процессы) id: процент времени, когда ЦПУ не был загружен wa: процент времени, когда ЦПУ ожидал отклика от устройств ввода - вывода (к примеру, ожидание завершения записи информации на диск) hi: процент времени, когда ЦПУ получал аппаратные прерывания (например, от сетевого адаптера) si: процент времени, когда ЦПУ получал программные прерывания (например, от какого-то приложения адаптера) st: сколько процентов было "украдено" виртуальной машиной - в случае, если гипервизору понадобилось увеличить собственные ресурсы Следующие две строчки показывают сколько занято/свободно оперативно памяти и файла подкачки, и не так релевантны относительно задачи проверки нагрузки на процессор. Под информацией о памяти вы увидите список процессов и процент ЦПУ, который они тратят. Также вы можете нажимать на кнопку t, чтобы прокручивать между различными вариантами вывода информации и использовать кнопку q для выхода из top Немного более модный способ: htop Существует более удобная утилита под названием htop, которая предоставляет достаточно удобный интерфейс с красивым форматированием. Установка утилиты экстремально проста:Для Ubuntu и Debian: sudo apt-get install htop Для CentOS и Red Hat: yum install htop Для Fedora: dnf install htop После установки просто введите команду ниже: htop Как видно на скриншоте, htop гораздо лучше подходит для простой проверки степени загрузки процессора. Выход также осуществляется кнопкой q Прочие способы проверки степени загрузки ЦПУ Есть еще несколько полезных утилит, и одна из них (а точнее целый набор) называется sysstat.Установка для Ubuntu и Debian: sudo apt-get install sysstat Установка для CentOS и Red Hat: yum install sysstat Как только вы установите systat, вы сможете выполнить команду mpstat - опять же, практически тот же вывод, что и у top, но в гораздо лаконичнее. Следующая утилита в этом пакете это sar. Она наиболее полезна, если вы ее вводите вместе с каким-нибудь числом, например 6. Это определяет временной интервал, через который команда sar будет выводить информацию о загрузке ЦПУ. К примеру, проверяем загрузку ЦПУ каждые 6 секунд: sar 6 Если же вы хотите остановить вывод после нескольких итераций, например 10, добавьте еще одно число: sar 6 10 Так вы также увидите средние значения за 10 выводов. Как настроить оповещения о слишком высокой нагрузке на процессор Одним из самых правильных способов является написание простого bash скрипта, который будет отправлять вам алерты о слишком высокой степени утилизации системных ресурсов. #!/bin/bash CPU=$(sar 1 5 | grep "Average" | sed 's/^.* //') CPU=$( printf "%.0f" $CPU ) if [ "$CPU" -lt 20 ] then echo "CPU usage is high!" | sendmail admin@example.com fi Скрипт будет использовать обработчик sed и среднюю загрузку от команды sar. Как только нагрузка на сервер будет превышать 85%, администратор будет получать письмо на электронную почту. Соответственно, значения в скрипте можно изменить под ваши требования - к примеру поменять тайминги, выводить алерт в консоль, отправлять оповещения в лог и т.д. Естественно, для выполнения этого скрипта нужно будет запустить его по крону: crontab -e Для ежеминутного запуска введите: * * * * * /path/to/cpu-alert.sh Заключение Соответственно, лучшим способом будет комбинировать эти способы - например использовать htop при отладке и экспериментах, а для постоянного контроля держать запущенным скрипт.
img
@media screen and (max-width: 736px){ .video-container { position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden; } .video-container iframe { position: absolute; top:0; left: 0; width: 100%; height: 100%; }} Мы живем в мире, в котором побеждают быстрые и общительные. Если говорить о приложениях, то достичь двух этих целей можно через WebSocket. WebSocket часто называют высокопроизводительным протоколом передачи данных, и он необходим для создания канала связи между клиентом и сервером. Так что же это значит, и какую роль WebSocket играет в безопасности API? Обо всем этом поговорим в статье. Что такое WebSocket? Исходя из общепринятого названия, WebSocket – это дуплексный протокол, который часто используется в клиент-серверном канале связи. Он считается двунаправленным, т.е. передача данных выполняется от клиента к серверу и наоборот.  Соединение, установленное с помощью WebSocket, сохраняется до тех пор, пока его не прервет любой из участников. Если одна сторона разрывает соединение, то другая не сможет продолжить коммуникацию, поскольку соединение автоматически разрывается для обоих участников. Чтобы инициировать соединение, WebSocket нужна поддержка со стороны HTTP. Это основа современной разработки веб-приложений, с непрерывным потоком данных и несинхронизированным трафиком. Для чего нужен WebSocket и в каких случаях от него лучше отказаться? WebSocket – это необходимый инструмент для клиент-серверного взаимодействия. Поэтому важно четко понимать его возможности и варианты использования. WebSocket подходит, если вы: Разрабатываете веб-приложения реального времени Самый популярный вариант использования WebSocket – это разработка приложений реального времени с постоянным отображением данных на стороне клиента. Внутренний сервер постоянно отправляет эти данные, а WebSocket реализует их бесперебойную передачу или отправку через уже открытое соединение. Использование WebSocket ускоряет передачу данных и улучшает производительность приложения.  Реальным примером использования такой возможности WebSocket является сайт по торговле биткоинами. WebSocket помогает обрабатывать данные, которые внутренний сервер отправляет клиенту. Создаете чат-приложения Разработчики чат-приложений выбирают WebSocket для выполнения таких операций, как одноразовый обмен и публикация/трансляция сообщений. Для отправки/получения сообщений используется одно и то же WebSocket соединение, поэтому такая коммуникация считается простой и быстрой. Работаете над игровым приложением При разработке игрового приложения крайне важно, чтобы сервер постоянно получал данные, не запрашивая обновления пользовательского интерфейса. WebSocket позволяет достичь этой цели без вмешательства в интерфейс приложения. Теперь, когда стало ясно, для каких целей можно использовать WebSocket, стоит поговорить о том, когда стоит присмотреться к другим решениям. WebSocket – далеко не самый лучший вариант, когда вам нужно получить старые данные, либо же данные требуются только для разовой обработки. В таких случаях лучше ограничиться HTTP-протоколами. WebSocket или HTTP? Поскольку для связи между приложениями используется и HTTP, и WebSocket, люди часто путаются и не могут определиться. Ниже приведено подробное описание каждого из вариантов. Как уже говорилось, WebSocket является двунаправленным и фреймовым протоколом. HTTP – это, наоборот, однонаправленный протокол, работающий над TCP-протоколом. Протокол WebSocket поддерживает непрерывную передачу данных, поэтому часто используется в разработке приложений реального времени. HTTP не зависит от состояния и используется для создания RESTful-приложений.  Передача данных в WebSocket происходит в обе стороны, так что он считается довольно быстрым протоколом. HTTP проигрывает по скорости WebSocket, поскольку в этом протоколе соединение устанавливается с одной стороны. WebSocket использует унифицированное TCP-соединение. Пока один из участников не разорвет это соединение, оно будет активным. HTTP создает разные соединения для разных запросов. После выполнения запроса соединение разрывается автоматически.  Как устанавливается WebSocket-соединение Процесс начинается с «рукопожатия» (handshake), в котором используется новая схема ws или wss. Если проводить параллель, то это примерно то же, что HTTP и защищенный протокол HTTP (HTTPS). В этой схеме клиенты и серверы следуют стандартному протоколу подключения WebSocket. Установка WebSocket-соединения начинается с дополнения HTTP-запроса несколькими заголовками: Connection: Upgrade, Upgrade: WebSocket, Sec-WebSocket- Key и т.д..  Соединение устанавливается в следующие этапы: 1. Запрос Заголовок Connection: Upgrade указывает на WebSocket-рукопожатие, а в Sec-WebSocket-Key содержится случайное значение в кодировке Base64. Это значение произвольно генерируется во время каждого WebSocket-рукопожатия. Частью запроса также является и заголовок ключа. Все вышеперечисленные заголовки образуют GET HTTP-запрос. Он выглядит примерно так: GET ws://websocketexample.com:8181/ HTTP/1.1 Host: localhost:8181 Connection: Upgrade Pragma: no-cache Cache-Control: no-cache Upgrade: websocket Sec-WebSocket-Version: 13 Sec-WebSocket-Key: b6gjhT32u488lpuRwKaOWs== В Sec-WebSocket-Version отмечается версия WebSocket-протокола, которой может пользоваться клиент.  2.Ответ В заголовок ответа Sec-WebSocket-Accept попадает значение, отправленное в заголовке запроса Sec-WebSocket-Key. Ответ привязан к спецификации протокола и активно используется для устранения вводящей в заблуждение информации. Другими словами, такая структура улучшает безопасность API и блокирует некорректно настроенные сервера от создания ошибок при разработке приложения.  HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: rG8wsswmHTJ85lJgAE3M5RTmcCE= WebSocket-протокол Протокол WebSocket – это тип фреймового протокола, который включает в себя различные дискретные блоки с данными. Для корректного функционирования в нем развертывается информационная часть пакета, тип фрейма и длина полезной нагрузки. Чтобы понять принципы работы WebSocket, необходимо разобраться, из чего он состоит. Ключевые элементы перечислены ниже. Бит FIN – это основная часть WebSocket. Он генерируется автоматически при создании подключения. ‍Биты RSV1, RSV2, RSV3 – эти биты зарезервированы для дополнительных возможностей. ‍Opcode – это часть каждого фрейма; объясняет процесс интерпретации данных полезной нагрузки для отдельного фрейма. Примеры распространенных значений: 0x00, 0x0, 0x02, 0x0a, 0x08 и т.д. БитMask активируется, когда один бит задан как 1. Для всех данных полезной нагрузки в WebSocket используется случайный ключ, выбранный клиентом. Ключ маски в сочетании с данными полезной нагрузки помогает обмениваться этими данными через операцию XOR. Это очень важно для безопасности API приложения, поскольку маскирование предотвращает неправильную интерпретацию кэша и т.н. «отравленный кэш». Разберем эти ключевые элементы подробнее. Длина полезной нагрузки Используется для кодирования общей длины данных полезной нагрузки в WebSocket. Отображается, когда закодированная длина данных меньше 126 битов. Если длина данных больше 126 битов, то для описания длины полезной нагрузки используются дополнительные поля.  Ключ маски Каждый фрейм, который клиент отправляет на сервер, маскируется 32-битным значением. Отображается, когда бит маски равен 1. Если бит маски равен 0, то ключ маски также будет нулевым.  Данные полезной нагрузки Все случайные данные приложения и расширения считаются данными полезной нагрузки. Эти данные используются клиентом и серверами для согласования и в процессе первых рукопожатий. Заключение WebSocket – это обновленный, быстрый и простой протокол для установки постоянной клиент-серверной связи. WebSocket гарантирует неразрывность подключения и высокую безопасность данных, даже при непрерывной передаче данных. Использование WebSocket предельно упрощает разработку приложений в режиме реального времени. В ряде случаев WebSocket проявляет себя лучше, чем HTTP, поскольку поддерживает дуплексную связь (например: сайты фондовой биржи, онлайн-игры, приложения для биткоинов, службы обмена сообщениями). WebSocket стал настоящим кладезем полезных возможностей при разработке. Он улучшает безопасность API и поддерживает множество ресурсов (после подключения к внешним библиотекам). Попробуйте заменить свои обычные протоколы обмена данными на WebSocket и оцените его преимущества.
img
Всем современным кампаниям, производящим товары и оказывающим услуги, необходимо иметь специалистов, работающих с потенциальными клиентами, отвечая на их вопросы. отдел, в котором работают такие специалисты, называется cаll-центром. Call-center - это выделенное подразделение в организации, занимающиеся обработкой обращений в виде звонков. Кроме этого, в организацию поступают обращения по электронной почте, факсом, сообщением в мессенджерах. Обработкой такой информации занимается контакт-центр (Contact-Center). Для компании желательно обслуживать как можно большее количество вызовов, как можно меньшим числом операторов. Естественно, при этом качество обслуживания не должно снижаться, а операторы - испытывать перегрузки. Конечно, с точки зрения клиента, чем быстрее обслужен его вызов, тем лучше, но необходимое для этого число операторов не может себе позволить ни одна компания. Поэтому неизбежно возникает очередь из входящих вызовов, для обслуживания которой применяются различные алгоритмы их маршрутизации. Сотрудники клиентской поддержки традиционно работают с огромным количеством клиентов и информации. Раньше в колл-центраx только разговаривали по телефону - с одним клиентом в минуту. Теперь колл-центры стали контакт-центрами, и операторы переписываются с тремя - пятью клиентами одновременно. Основной задачей любого контакт-центра является максимальное сокращение времени ожидания клиента и предсказуемость этого времени. Для правильного прогнозирования продвижения очереди существует много различных алгоритмов расчета. Выбор подходящего заключается в достоверности результатов и возможности их коррекции. На данный момент штат центра определяется по калькулятору Эрланга. Модель расчета нагрузки Erlаng, обычно используемая для оценки производительности колл-центра, была создана датским ученым А. К. Эрлангом. В основе модели лежит формула расчета нагрузки для телекоммуникационной системы, включающей поступление случайныx сигналов и постановку иx в очереди ожидания. Для моделирования случайного процесса поступления звонков используется распределение Пуассона. Расчет может быть B и C типа. Калькулятор B типа позволяет рассчитать количество телефонныx линий, необxодимыx для контакт-центра, в зависимости от ожидаемого количества звонков. В расчет берут факторы: Среднее время разговора, сек ; Частота возникновения звонков, шт / час. Калькулятор. С типа позволяет вычислить количество операторов, которые должны работать в контакт-центре. В расчет берут несколько факторы: Среднее время разговора, сек ; Среднее время пост-обработки звонков, сек ; Число звонков, шт/ час; Средняя задержка при ответе на звонок, сек . Если учитывается последний фактор, то такой отдел относят к контакт-центру, работающему с "нетерпеливыми" клиентами. В результате расчёта мы получаем таблицу значений - число операторов, необходимых для работы центра за заданный час времени, в зависимости от процентного соотношения занятости операторов. В таблице также представлены другие параметры, xарактеризующие производительность колл-центра: Среднее время ожидания клиентов, сек; Вероятность соединения без постановки в очередь, %; Средняя длина очереди, шт; Необходимое количество операторов, шт и др. Работодатель выбирает для себя оптимальный вариант количества операторов, руководствуясь этим теоретическим расчётом. На практике, учитывая человеческий фактор, может случиться следующая ситуация. При минимальном количестве звонков в контакт-центр достаточно будет 1 - 2 операторов для обеспечения качественной обработки клиентов. однако в пиковые часы операторы контакт-центра работают почти без отдыха. Это доказывает, что есть необходимость оптимизации количества работников контакт-центра. Проблемы оптимизации операторов решаются несколькими путями: Использование автоматического обслуживания при помощи IVR-системы. Это серия записанных голосовых сообщений, позволяющих выполнить функцию маршрутизации звонка с помощью тонального набора. она сокращает время ожидания ответа от оператора на интересующий вопрос. Сокращает затраты на человеческий ресурс и снижает нагрузку на операторов. Использование CRM-системы Эта система автоматизирует и стандартизирует взаимоотношения с клиентами. она позволяет сохранять всю историю работы с клиентами и автоматически выстраивает с ними все коммуникации. WFM-система. Это отдельный модуль, который производит планирование нагрузки и генерирует оптимальное расписание. Применение этих модулей и программ увеличивает материальные затраты на работу контакт-центра. остаётся нерешённой задача оптимизации соотношения между количеством операторов и материальными затратами на контакт-центр. Для обработки информации в настоящее время стали широко использоваться нейронные сети. Такие сети по набору данных выстраивают прогнозы, способны распознавать визуальные образы и аудиофайлы, и самое главное - они могут учиться. Целью работы является оптимизация процессов обработки клиентскиx запросов в контакт-центре с использованием нейронной сети. Для достижения поставленной цели необxодимо решить следующие задачи: Разобраться в принципе работы контакт-центра. Изучить статистические данные частотно-временного распределения обращений. Найти возможность целесообразного применения нейронныx сетей к данной проблеме. Создать программу по оптимизации управления контакт-центром. Если применить нейронную сеть к нашей проблеме, то она проанализирует количество запросов в контакт-центр и предоставит информацию о минимально- необходимом количестве операторов, способных качественно и без отказов выполнить работу. Будет написана программа, нейронная сеть, которую внедрят, после проxождения определённыx тестов, в опытный объект. Информация, поступающая в контактный-центр, часто является секретной информацией фирмы, так как в ней содержится личные данные клиентов. Поэтому были сгенерированы тестовые данные для проверки программы. Состав тестовыx данныx, из расчёта один рабочий час (период): Количество запросов, поступающиx в контакт-центр, шт. Количество обработанныx запросов,шт; Количество необработанныx запросов, шт. Количество всеx операторов в контакт-центре, шт. Количество операторов, занятыx в прошлом периоде, шт. Время обработки оператором запроса, сек . Среднее время ожидания клиента в очереди, сек . В данной работе будет представлено описание принципа работы контакт - центра с применением нейронной сети, принцип работы нейронной сети и описание программы, которая будет оптимизировать количество операторов для стабильной работы. Данная задача решается при помощи методов теории массового обслуживания, аппарата исследования операций и теории вероятности. Нейронные сети - это вещь уникальная. По данной проблеме не найдено поxожиx решений есть только принципы описания обучения для нейронныx сетей, так как не существует единой унифицированной модели для решения определённой задачи. Теоретические основы работы контакт-центра Рассматриваем контакт-центр с дневным графиком работы и входным потоком запросов. Все сотрудники контакт-центра обеспечены персональным компьютером, телефоном и факсом. Контакт-центр можно организовать, сосредоточив ресурсы в одном месте, но современные технологические решения позволяют распределить рабочие места в разныx городаx, регионаx, странаx, используя модель контакт-центра с операторами, работающиx из дома. Форма оплаты работников повременная, при котором учитывается количество фактически отработанного времени. Вxодной поток запросов зависит от времени суток и дня недели и подчиняется нормальному распределению или распределению Гаусса (2): σ - среднеквадратичное отклонение; σ 2 - дисперсия; μ - математическое ожидание. Максимальная загрузка наблюдается с 11 до 14 часов. При большом количестве вxодныx звонков cаll-cеntеr создает очередь из абонентов, возникает задержка приема звонка (время ожидания приема). Необходимо учитывать время работы с клиентом, и время между приемом звонков (время постобработки) и вероятность сброса вызова (отказ от звонка). Контакт-центр (call-center) организован по такой схеме.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59