Как сделать тест сервера

Открытые бенчмарки для нагрузочного тестирования серверов и веб-приложений

Это — подборка утилит, составленная на основе рекомендаций резидентов Hacker News и GitHub. В список вошли: Locust, Vegeta, Slow_cooker, k6 и Siege. Ими пользуются инженеры из DICE, EA и Buoyant, а также разработчики Kubernetes и Load Impact. Расскажем об этих инструментах.

Locust.io

Инструмент для нагрузочного тестирования сайтов. Все сценарии пишутся на Python. Специальный веб-интерфейс, построенный на Flask, позволяет мониторить результаты в реальном времени. Авторы Locust — швейцарские инженеры, среди которых числятся сотрудники компаний DICE и EA, занимающихся разработкой и изданием компьютерных игр.

В основу инструмента заложена интересная концепция: Locust («саранча») эмулирует поведение целого роя насекомых (виртуальных пользователей), «атакующих» сайт во время теста. Запросы формируют с помощью сетевой библиотеки для организации параллельных вычислений — gevent. Вот пример простого теста, который приведен на официальном сайте проекта:

Locust задействует библиотеку requests. Эта надстройка над стандартными средствами Python упрощает работу с HTTP и SSL и делает код более наглядным. К слову, документацию requests можно использовать в качестве шпаргалки для отладки тестов на Locust.

Этот инструмент для нагрузочного тестирования существует уже более семи лет. За это время вокруг него сформировалось обширное комьюнити — на GitHub более 10 тыс. звезд. Locust использовали при оценке работоспособности сети Battlelog для серии игр Battlefield. Об инструменте положительно отозвался Армин Ронахер (Armin Ronacher), автор фреймворка Flask.

Среди недостатков Locust выделяют довольно низкую производительность и периодические ошибки при оценке времени ответа сайтов. Также инструмент не умеет строить графики, но проблема решается выгрузкой результатов в виде CSV-файлов и отрисовкой графиков в редакторе таблиц.

Если вы хотите поближе познакомиться с Locust, то стоит обратить внимание на документацию инструмента. Также можно рекомендовать выступление Алексея Романова из Wargaming на Python Meetup. Он рассказывает, как писать сценарии, эмулирующие поведение пользователей.

Vegeta

Утилита командной строки для тестирования HTTP-сервисов, написанная на Go. Её можно подключить как библиотеку для создания своих инструментов нагрузочного тестирования. Разработчиком Vegeta выступил один из авторов отрытой платформы Sourcegraph — это движок для рецензирования и навигации по исходному коду, который используют в Lyft, Uber и Yelp.

Vegeta оценивает возможности сетевых ресурсов, «бомбардируя» их запросами с установленной частотой. Например, для проверки localhost достаточно прописать следующую команду:

По умолчанию Vegeta работает со стандартным потоком чтения команд (stdin), поэтому ресурс для тестирования передается через echo. Параметр duration указывает продолжительность теста. Репорт будет сгенерирован в файл results.bin. Отчеты Vegeta генерирует в текстовом формате, но при этом умеет рисовать графики. Сгенерировать их можно следующей командой:

Вокруг Vegeta сформировалось крупное сообщество — 12 тыс. звезд на GitHub. Инструмент даже использовали разработчики Kubernetes для оценки производительности своей платформы — тогда Vegeta генерировала около 10 млн запросов в секунду к кластеру из тысячи узлов.

Документация с описанием всех функций и флагов для тестов Vegeta есть в репозитории на GitHub. Там же можно найти предварительно скомпилированные исполняемые файлы.

Slow_cooker

Это — инструмент для нагрузочного тестирования серверов, написанный на Go. Его разработали инженеры из компании Buoyant, которая создает сервисную сеть для Kubernetes — Linkerd. Она является частью Cloud Native Computing Foundation и считается конкурентом Google Istio.

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера
Фото — Joshua Aragon — Unsplash

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

Специалисты из Buoyant используют свою разработку для тестирования Linkerd и других сервисов, например nginx. Инструмент довольно молодой — ему около трех — поэтому пока он не обзавелся большим комьюнити. Но в будущем ситуация может измениться, например, его репозиторий уже форкнули в Skysсanner, международном сервисе для поиска авиабилетов.

Исходный код вы можете найти на GitHub.

Инструмент для нагрузочного и регрессионного тестирования микросервисов, контейнеров и сайтов, размещенных в облаке. Он написан на Go и JavaScript разработчиками из Load Impact — это приложение для тестирования «стойкости» сайтов.

Работа с k6 строится по модели everything as code, когда логика тестов и все настройки пишутся на JavaScript. В скриптах отдельные шаги можно объединять в группы (group), что может быть удобно для тех, кто привык следовать принципам BDD. Вот пример такой группы:

Также инструмент дает возможность записывать скрипты и строить графики — последняя функция реализована на InfluxDB и Grafana. И у него есть интеграции с CI-системами вроде Jenkins, Circle CI, Team City и GitLab.

Пользователи говорят, что k6 не требователен к ресурсам, и у него удобный API. Но есть и несколько недостатков, в частности, k6 не поддерживает websocket и не умеет проводить тесты на распределенных системах. Хотя разработчики k6 в тематическом треде на Hacker News рассказали, что эти функции появятся в будущем.

Если вы хотите познакомиться с возможностями k6 самостоятельно, резиденты HN рекомендуют начать с технической документации — она подробная и с примерами. Если будут возникать какие-либо вопросы, можно обратиться на официальный форум.

Siege

Siege позволяет провести нагрузочное тестирование веб-серверов. Утилиту создал инженер Джефф Фалмер (Jeff Fulmer), чтобы разработчики могли проверить ресурсоемкость своего кода в условиях, приближенных к боевым. Siege эмулирует непрерывный поток обращений к сайту от множества пользователей, как бы удерживая сервер «под осадой» — отсюда и название инструмента.

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

Siege получил довольно широкое распространение в ИТ-сообществе. Например, нагрузочному тестированию с его помощью посвящен целый раздел в книге «NGINX High Performance». Также его используют некоторые облачные провайдеры.

Из недостатков Siege можно выделить нестандартный синтаксис и неочевидные методы подсчета параметров тестирования — например, редиректы считаются успешными транзакциями, поэтому их количество может превышать общее число запросов. Если вы хотите опробовать Siege на практике, изучите онлайн-руководство — там разобраны некоторые «странности» системы.

Дополнительное чтение в блоге 1cloud.ru:

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервераЧто нового в Linux kernel 5.3 — графические драйверы, виртуализация и другие обновления
Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервераПочему разработчики мейнстрим-браузера снова отказались от отображения поддомена
Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервераПочему Apple изменила требования к разработчикам приложений

Источник

Тестовый сервер для команды разработчиков

Вводная

Варианты решений

1. Один сервер, много хостов

Самый простой вариант. Используем тот же тестовый сервер, только разработчику нужно создавать хост под каждую ветку/проект и вносить его в конфигурацию nginx/apache2.

2. Каждому разработчику по серверу!

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

3. Контейнеризация — docker, kubernetes

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.

Внедрение docker

При использовании gitlab очень часто попадались на глаза настройки AutoDevOps, kubernetes. Плюс бородатые дядьки на различных meetup рассказывают как у них круто все работает с kubernetes. Поэтому было принято решение попробовать развернуть кластер на своих мощностях, был выпрошен сервер (а тестовый трогать нельзя, там люди тестируют) и понеслась!

Так как опыта у меня с kubernetes 0, делось все по мануалу с попыткой понять как все эти кластера работают. Спустя некоторое время мне удалось поднять кластер, но потом пошли проблемы с сертификатами, ключами, да и вообще с трудностью развертывания. Мне же нужно было решение проще, чтобы научить своих коллег с этим работать (например, тот же отпуск не хочется проводить сидящим в скайпе и помогающим с настройкой). Поэтому kubernetes был оставлен в покое. Оставался сам docker и нужно было найти решение для маршрутизации контейнеров. Так как их можно было поднять на разных портах, то можно было бы использовать тот же nginx для внутреннего перенаправления. Называется это обратный прокси сервер.

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

Обратный прокси-сервер

Чтобы не изобретать велосипед, я начал искать готовые решения. И оно нашлось — это traefik.

Запускаю его через docker-compose.yml

Здесь мы сообщаем прокси, что нужно слушать порты 80,443 и 8080 (веб морда прокси), монтируем сокет докера, файл конфигурации и папку с сертификатами. Для удобства именования тестовых сайтов, мы решили сделать локальную доменную зону *.test. При обращении к любому сайту на ней, пользователь попадает на наш тестовый сервер. Поэтому сертификаты в папке traefik самоподписаные, но он так поддерживает Let’s Encrypt.

Перед стартом нужно создать в докере сеть proxy (можете назвать по своему).

Это будет сеть для связи traefik с контейнерами php сайтов. Поэтому указываем ее в параметре networks сервиса и в networks всего файла указав в параметре external: true.

Тут все довольно просто — указываем точки входа http и https трафика, не забудьте поставить insecureSkipVerify = true если сертификаты локальные. В секции entryPoints.https.tls можно не указывать сертификаты, тогда traefik подставит свой сертификат.

Можно запустить сервис

Если перейти по адресу site.test, то выдаст ошибку 404, так как этот домен не привязан ни к какому контейнеру.

Упаковываем приложения в docker

Теперь нужно настроить контейнер с приложением, а именно:

1. указать в сетях сеть proxy
2. добавить labels с конфигурацией traefik

Ниже приведена конфигурация одного из приложений

В сервисе app, в секции сети нужно указать proxy и default, это значит что он будет доступен в двух сетях, как видно из конфигурации я не пробрасываю порты наружу, все идет внутри сети.

Далее конфигурируем labels

В общей секции networks нужно указать external: true

Константу TEST_DOMAIN нужно заменить на домен, например, site.test

Теперь если зайти на домены site.test, crm.site.test, bonus.site.test можно увидеть рабочий сайт. А на домене pma.site.test будет phpmyadmin для удобной работы с бд.

Настройка GitLab

Создаем обработчик заданий, для этого запускаем

Указываем url gitlab, токен и через что будет выполняться задание (executors). Так как у меня тестовый и gitlab находятся на разных серверах, то выбираю ssh executor. Нужно будет указать адрес сервера и логин/пароль для подключения по ssh.

Runner можно сделать прикрепленным к одному или нескольким проектам. Так как у меня логика работы везде одинаковая, поэтому был создан shared runner (общий для всех проектов).
И последний штрих это создать файл конфигурации CI

В данной конфигурации описаны 2 этапа — build и clear. Этап build имеет 2 варианта выполнения — build_develop и build_prod

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

Gitlab строит понятную диаграмму выполнения процесса. В моем примере все процессы стартуют вручную (параметр when: manual). Сделано это для того, чтобы разработчик после разворачивания тестового сайта, мог делать pull своих правок в контейнер без пересборки всего контейнера. Еще одна причина это наименование доменов — site$CI_PIPELINE_ID.test, где CI_PIPELINE_ID — номер процесса запустившего сборку. То есть отдали на проверку сайт с доменом site123.test и чтобы внести горячие правки, сразу заливаются изменения в контейнер самим разработчиком.

Небольшая особенность работы ssh executor. При подключении к серверу создается папка вида

Поэтому была добавлена строчка

В ней мы поднимаемся на папку выше и копируем проект в папку с номером процесса. Так можно разворачивать несколько веток одного проекта. Но в настройках обработчика нужно поставить галку Lock to current projects, так обработчик не будет пытаться развернуть несколько веток одновременно.

Уборка мусора

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

выполняется раз в день.

Заключение

Данное решение помогло нам существенно оптимизировать тестирование и выпуск новых фич. Готов ответить на вопросы, конструктивная критика принимается.

Бонус

Для того чтобы не собирать каждый раз образы из Dockerfile, можно хранить их локальном реестре докера.

В данном варианте не используется аутентификация, это не безопасный способ (. ), но для хранения не критичных образов нам подходит.

Можно настроить gitlab для просмотра

После этого в gitlab появляется список образов

Источник

Как принять участие в тестировании нового патча в World of Tanks

Неотъемлемой частью каждой хорошей онлайн игры является проверка обновлений. В проекте World of Tanks за несколько недель до релиза обновления на основном клиенте сначала открываются тестовые сервера. Основная цель — оценка новых карт, изменений ТТХ техники, введение новых механик или правки уже существующих.

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

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

Что такое тестовый сервер

Для начала ознакомимся, что имеется ввиду под словосочетанием «тестовый сервер». По сути это виртуальный ресурс на котором хранится полная копия игры, но с уже введенными изменениями. Основная задача — тестирование и проверка нового патча, как он отразится на игровой механике, как повлияет на баланс в игре. Параллельно с этим уделяется особое внимание исправлению ошибок и багов.

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

Как скачать и принять участие в тестировании

Поучаствовать в тестировании игры может любой желающий. Существует два алгоритма для скачивая тестовой версии клиента.

Для игроков, которые используют Wargaming Game Center:

Второй вариант попасть на тестовый сервер без использования Wargaming Game Center:

Общая информация

В настоящий момент для игроков доступны два тестовых сервера. Они являются общими для представителей регионов Америки, Европы, Азии и СНГ. Поэтому не стоит удивляться, что общение в чате будет на разных языках.

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

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

Особенности тестового сервера

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

Существует два ключевых момента:

В целом надобности «донатить» здесь нет, потому что на время теста игроки получают большой запас внутриигровых ресурсов:

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

Краткие итоги

Тестовый сервер предоставляет игрокам не только возможность первыми оценить нововведения следующего патча, но и решить личные вопросы. Если вы ранее сомневались стоит ли качать какую-либо ветку, то благодаря неограниченному запасу кредитов и опыта можно открыть любую технику. Однако проверить в бою вероятнее всего получится только 8-9-10 уровни. На остальных лвлах мало игроков, поэтому можно много времени провести в ожидании боя, но так и не поиграть.

Несомненным плюсом является приобретение премиумной техники во внутриигровом магазине. Это хороший шанс опробовать ее возможности понять подойдет ли она вам перед покупкой на основном клиенте игры за реальные деньги.

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

Как скачать и установить тестовый сервер «Песочница» в World of Tanks

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

Как протестировать премиум технику в World of Tanks без покупки

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

Бета-тест подводных лодок в World of Warships

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

Как получить бесплатно премиум аккаунт и резервы

Источник

Как установить Общий тест WOT/Песочницу World of Tanks + коды WGC

Это актуальный материал об установке Общего теста/тестового сервера «Песочница», дабы Вы не искали по 100 рази не спрашивали: «Как и где?».

Коды для установки WOT в WGC, список:

Для тех, кто просто ищет список этих кодов установки.

Как установить Общий тест/Песочницу WOT:

1) На данный момент нормальная установка возможна только через лоунчер Wargaming — WGC. Скачиваем таковой если у Вас ещё его нет (если есть, сразу переходим к пункуту 2).
* Скачать WGC с оф. сайта: https://redirect.wargaming.net/WGC/Wargaming_Game_Center_Install_RU.exe

2) Запускаем WGC и переходим на главную страницу во вкладку «ВСЕ ИГРЫ» (сверху слева).

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

3) Справа сверху ищем кнопку «Установить игру по коду», жмём на неё.

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

Далее в это окно нам необходимо вставить нужный код-установки игры, которую мы хотим установить. Вот список:

Если нужен Общий тест, берём и копируем полностью строчку: WOT.CT.PRODUCTION@https://wgus-wotct.wargaming.net и вставляем в это окно в WGC.

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

4) Жмём «Установить».

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

5) Выбираем язык, тип клиента, куда будет устанавливаться, ставим галочку напротив пункта: «Обновлять игру автоматически» и нажимаем на оранжевую большую кнопку «Принять и установить».

6) После этого начнётся скачивание и установка клиента с 0.

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

7) После установки нужно клиента данную версию Вы сможете найти на вкладке игры World of Tanks (самый верх), кнопка «Копия игры». Разверните там небольшое окошечко (слева от кнопки «Настройки игры»).

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

8) Всё, жмите «Играть» (если Вы зашли в свой танковый аккаунт в WGC) если сервера открыты. Узнать статус серверов WOT можно тут: https://wgstatus.com/

9) Для дальнейшего автоматического обновления и скачивания всех файлов перейдите на нужный вам клиент игры, например, Общий тест. Нажмите сверху «Настройки игры».

Как сделать тест сервера. Смотреть фото Как сделать тест сервера. Смотреть картинку Как сделать тест сервера. Картинка про Как сделать тест сервера. Фото Как сделать тест сервера

В появившемся списке необходимо поставить галочку рядом с пунктом: «Обновлять игру автоматически».

10. Вы прекрасны! 🙂 Вернись на пункт 8.

Понравилась новость? Тогда поставь ей лайк, и не забудь оставить свой комментарий.
А так же, добавь наш сайт в закладки (нажми Ctrl+D), не теряй нас.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *