С
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