С
10 августа 15:00
по31 августа 15:00
по московскому времени.
Apple iPad Air 2 Cellular 16GB
за первое место.WD MyCloud 6TB
за второе и третье места.WD MyPassport Ultra 2TB
за места с 4 по 6 включительно. По традиции, ТОП-20 участников получатфутболки с символикой чемпионата
.
Любой желающий может попробовать свои силы в Highload Cup. К участникам соревнования есть два требования:
- На момент даты проведения финала участнику должно быть не менее
18 лет
;- Участники не могут быть сотрудниками или близкими родственниками сотрудников
Mail.ru Group
.
Раунды чемпионата проходят на сайте Highload Cup в режиме онлайн.
Необходимо сначала создать, а затем и развернуть производительный сервер приложения, который будет реализовывать необходимое задачей
Web API
. Подробнее
Чтобы стать участником чемпионата, необходимо зарегистрироваться и активировать свой аккаунт. Задачи открываются для всех участников одновременно в момент начала раунда.
Участник может использовать любые серверные технологии, языки программирования, фреймворки по своему усмотрению
C++
,Java + Tomcat
,Python + Django
,Ruby + RoR
,JavaScript + NodeJs
,Haskell
или что-то еще). Также и для хранения данных:MySQL
,Redis
,MongoDB
,Memcached
- всё, что получится установить вdocker
.
Все решения запускаются как
docker-контейнеры
на одинаковых серверах со следующей конфигурацией: Процессор:Intel Xeon x86_64 2 GHz 4 ядра
. Оперативная память:4 GB RAM
. Жесткий диск:10 GB HDD
.
Решение участника является контейнером docker, который получен с помощью команды
docker build
. Максимальный размер контейнера на диске не должен превышать5 Gb
.
Система проверки выполнит сначала
docker pull
и затемdocker run
. В случае успеха, начнется обстрел решения.
В результате обстрела получаются логи и метрики, которые затем будут показываться участникам в виде графиков на странице решения.
Внутри запускается
yandex-танк
с движкомphantom
, который ведет обстрел в несколько потоков с линейно растущим профилем нагрузки (специфично для задачи). Перед началом обстрела у пользовательского решения есть несколько минут (точное время зависит от задачи), чтобы обработать данные из полученногоJSON-файла
, а также успеть прогреться. Корректная работа с этими данными - необходимое условие победы.
Вот максимально близкие к боевым примеры конфига демона докера и конфига compose:
{
"userns-remap": "custom_user"
}
networks:
internal-net:
external:
name: internal-net
services:
client_8570:
cpuset: 0-3
expose:
- 80
image: ***
mem_limit: 4096M
memswap_limit: 4096M
networks:
- internal-net
volumes:
- ***:/tmp/data:ro
tank:
depends_on: &id001
- client_8570
image: tank
links: *id001
networks:
- internal-net
version: '2'
Существует два типа проверки решения: экспресс-обстрел и рейтинговая проверка.
Доступен
неограниченное число раз в сутки
, и составляет по объем примерно1/10
от рейтинговой проверки решения. Такая проверка является способом узнать, готово ли решение для рейтинговой проверки. Предполагается, что экспресс-обстрел занимает не более3 минут
.
Доступна
2 раза в течение 12 часов
. По результатам рейтинговой проверки участник занимает место в лидерборде текущего чемпионата. Проводится она таким образом:
Перед обстрелом запланировано
180 секунд
ожидания для того чтобы решение участника могло проанализировать переданные тестовые данные и подготовиться к обстрелу.
180 секунд
длится первая фаза с линейным профилем от1 до 200 RPS
. Будет выпущено:integral (199/180x + 1) dx from 0 to 180 = 18090
запросов
120 секунд
длится вторая фаза с постоянным профилем в100 RPS
. Будет выпущено:100 * 120 = 12000
запросов
120 секунд
длится третья фаза с линейным профилем от200 до 2000 RPS
. Будет выпущено:integral (1800 / 120x + 200) dx from 0 to 120 = 132000
запросов.
Валидация ответов
~20 секунд
. Анализ результатов на сайте~30 секунд
. Всего обстрел длится порядка15 минут
(при отсутствии очереди). Всего запросов в обстреле:162090
.
Скорее всего вы запустили рейтинговый обстрел уже
2 раза в течение 12 часов
. Подождите. Если проблема не будет решена, то напишите в поддержку. Мы постараемся вам помочь.
В результате обстрела получаются логи и метрики, которые затем будут показываться участникам в виде графиков на странице решения. Отдельно отслеживаются следующие метрики:
- Корректность ответа
- Время ответа на запрос
- Кол-во ответов в секунду
Рейтинг решения считается следующим образом: система берет время всех верных ответов, которые успел дать API во время обстрела. Прибавляется к этому штрафное время для каждого неправильного ответа или запроса, ответ на который мы не смогли получить (штрафное время всегда равно общему таймауту запроса). Участник, суммарное время которого окажется меньше прочих, оказывается выше в лидерборде и имеет шанс стать победителем чемпионата.
Подробнее об этом вы можете прочитать здесь.
Пример базового решения доступен на сайте, а также здесь.
Подробнее об этом вы можете прочитать здесь.
Можно попробовать этого неофициального клиента или другого от одного из наших участников.
Ошибка при выполнении docker-compose up...
client_8649_1 |Killed
Скорее всего пришел OOMKiller и убил решение, т.к. вы не влезли в RAM