Как стать автором
Обновить

Комментарии 36

Делаем зал славы TOP50 ботовод :) 10-15 минут.
Огласите весь список, пожалуйста (с) :)
5-е место, отлично, особенно пропорционально усилиям =)
А есть разбивка по языкам? Вообще ввязался только потому что за C# стало обидно, он вчера почти ниже всех был =)
НЛО прилетело и опубликовало эту надпись здесь
Уря!
33. ua3mqj@… 963611

Если кому-то интересно.
Пристреливался с ноута на i7. Потом оставил на кухне на компе, где супруга кино обычно смотрит.
AMD Athlon(tm) ii x2 250 processor 3.00 ghz
ОС: Windows 7
Язык программирования — Elixir
Проект никакой не делал, просто из консоли запустил. В 100 процессов. По показаниям WIN, аплоад составлял 10 мегабит (потолок моего интернета).
код
require HTTPotion
:observer.start
Enum.map(1..100, fn(xx) ->
spawn(fn ->
Enum.map(1..1000000, fn(x) ->
url = "http://stats.df.wtf/api/v1/poll"
header = ["Content-Type": "application/json"]
body = "{\"email\":\"ua3mqj@...\",\"language\":9}"
result = HTTPotion.post(url, [body: body, headers: header])
end)
end)
end)

зы. Ждем подробностей от остальных участников!
Я подпилил wrk (убрал парсинг ответа и писал несколько запросов подряд не дожидаясь ответа)
~300Mbit ~90k pps
У меня первой мыслью было JMeter натравить. Но посчитал его слишком тяжелым и отказался от затеи.
Красавчик) с какими параметрами запускал? Какая нагрузка на процессор была?
taskset -a -c 0-24 ./wrk -c 24000 -t 24 -d 36000 --timeout 5
CPU usage

Network

Netstat

Mongo

Tarantool сделал бы монгу, как стоячую.

в десяточку влез)
интересно как бы кто взламывал?
я нашел только несколько методов api(уже отключены)
http://stats.df.wtf/api/v1/poll?full=true
http://stats.df.wtf/api/v1/userstats
http://stats.df.wtf/api/v1/top
Писал на Java, запускал с рабочего компа. Уперлось все в исходящий канал 0.5мбит/с — 150rps. Запустил на VPS, но проц очень быстро за нагрузку порезали с 0.5 ядра до 0.35, итог ~3100rps
34. dzmitry_t@…
Консольный скриптик на коленке. Сразу на одной из рабочих виртуалок, а потом с домашнего неттопа-роутера (AMD C-70 2x1GHz). Вообще интересно, а сколько всего человек так или иначе пыталось DDOS'ить голосовалку?
Код
#!/bin/bash
i=0;
while [ $i -le 1000000 ]; do
nohup curl --silent -H «Content-Type: application/json» -X POST -d '{ «email»: «dzmitry_t@..», «language»: 9}' http://stats.df.wtf/api/v1/poll > /dev/null 2>&1 &
let i=i+1;
done;

В первый день я тупо сделал в баше цикл:


while true 
do
     curl ...
done

И запустил таких около 1000 процессов.


На второй день не поленился и написал на Java такой вот класс:


Main.java
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;

/**
 * Created by jatx on 06.06.17.
 */
public class Main {
    private static volatile int success = 0;
    private static volatile int total = 0;
    private static int THREADS;

    public static void main(String[] args) {
        THREADS = Integer.parseInt(args[0]);

        for (int i=0; i<THREADS; i++) {
            Voter voter = new Voter();
            voter.start();
        }

        while (true) {
            try {
                Thread.sleep(2500);
                System.err.println(success + " / " + total);
            } catch (Exception e) {}
        }
    }

    private static class Voter extends Thread {
        @Override
        public void run() {
             HttpClient httpClient = HttpClientBuilder.create().build();
            while (true) {
                try {
                    HttpPost request = new HttpPost("http://stats.df.wtf/api/v1/poll");
                    request.setHeader("Content-type", "application/json");
                    StringEntity entity = new StringEntity("{\"email\":\"e.tabatsky@gmail.com\",\"language\":1");
                    request.setEntity(entity);

                    HttpResponse response = httpClient.execute(request);
                    String result = EntityUtils.toString(response.getEntity());
                    if (result.equals("{\"status\":\"ok\"}")) success++;
                    total++;
                } catch (Exception e) {
                    //e.printStackTrace();
                }
            }
         }
    }
}

Запустил в 12500 потоков, больше ресурсы ноута не позволяли.
Итого 21 место :)

private static volatile int success = 0;
private static volatile int total = 0;
....
if (result.equals("{\"status\":\"ok\"}")) success++;
                    total++;

Разве volatile гарантирует thread-safety для инкрементальных операций?

Нет.

Но для этого кода это неважно, счётчик просто будет отставать :)

В корпоративном чатике сообщают, что коллеги («Флант») оказались на третьем месте :-) Спасибо за фан!
Написал на GO, запустил в пару сотен потоков, уперся в потолок исходящего канала провайдера
З.Ы. 22 место
За эти смайлики тем, кто пихает их куда ни попадя, нужно делать бОлЬнО
Ой, да ладно уж Вам (тут не вставлен emoji).
Все верно говорит. Как читать?
1) Самый активный «медалька» получит «приз»? — берем все смайлы.
2) Самый активный получит? — не берем смайлы вообще. Но тут уже начинаются опасения…
Или надо угадывать, какой смайл оставить, какой убрать?

Это как с матами. Умело ввернутый в нужной ситуации – отлично передает эмоциональный накал и придает экспрессии. Вставляемый же после каждой фразы "неопределенный артикль %ля" ничего кроме омерзения не вызывает.

Ребусы современные они такие… Эмоциональные…
Все так. Сделал вывод о необходимости подучить грамматику и лексику с emoji.
А призы то будут?
Дважды написал. нет ответа.
Ну как там приз?
Так никто и не ответил.
В следующий раз надо сломать им голосовалку
«голосовалку» и не сломать, а набить…
Так блэт, что-то пошло не так. Написал вам в тви в ПМ чтобы разрешить.
Я запили на Node.JS отправку запросов а несколько потоков.
К ним же добавил консольных PHP процессов, но они быстро ресурсы скушали… :( прошлось остаться только на Node.JS
Зарегистрируйтесь на Хабре, чтобы оставить комментарий