Кто гонял Virtual Box на AWS?

User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Кто гонял Virtual Box на AWS?

Post by Sergunka »

На старости лет подался в ДДОСники. Делаю симуляцию по высокой нагрузке

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

Если мож кто с сокетами рабоатет плотно то можно как то фейковые АйПи наплодить. Я проверяю имено на критичность открытых коннекшинсов типо.

В общем любые соображения велком вплоть до болезненных :D
"A patriot must always be ready to defend his country against his government." Edward Abbey
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Кто гонял Virtual Box на AWS?

Post by helg »

Сокету для коннекшина нужен порт, а не IP. С одного клиентского хоста можно открыть тысячу сокетов на 80й порт сервера. У всех этих сокетов будет один IP, но разные порты на стороне клиента. Так что может и не надо много IP?

Если таки надо, и всё внутри одного хоста, то 127.*.*.* даёт достаточно адресов - они все идут на localhost.

А если наружу, то в случае linux в eth0 (ну или какое имя ifconfig показывает), есть витруальные интерфейсы eth0:0, eth0:1,... - и адреса добавляются командами типа:

# ifconfig eth0:0 192.168.1.100 netmask 255.255.255.0
# ifconfig eth0:1 192.168.1.101 netmask 255.255.255.0
[..]
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Кто гонял Virtual Box на AWS?

Post by Sergunka »

helg wrote:Сокету для коннекшина нужен порт, а не IP. С одного клиентского хоста можно открыть тысячу сокетов на 80й порт сервера. У всех этих сокетов будет один IP, но разные порты на стороне клиента. Так что может и не надо много IP?

Если таки надо, и всё внутри одного хоста, то 127.*.*.* даёт достаточно адресов - они все идут на localhost.

А если наружу, то в случае linux в eth0 (ну или какое имя ifconfig показывает), есть витруальные интерфейсы eth0:0, eth0:1,... - и адреса добавляются командами типа:

# ifconfig eth0:0 192.168.1.100 netmask 255.255.255.0
# ifconfig eth0:1 192.168.1.101 netmask 255.255.255.0
[..]
Кормилец - спасибо огромное. С меня бесплатный обед. Я сейчас гляну в этом направлении - по результату отпишусь с оказией после праздников.
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Likenew
Уже с Приветом
Posts: 12065
Joined: 15 Feb 2002 10:01
Location: TX

Re: Кто гонял Virtual Box на AWS?

Post by Likenew »

а вы docker не пробовали? Там каждый имаге имеет свой ИП. Амазон вам может влететь в копеечку.
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Кто гонял Virtual Box на AWS?

Post by Sergunka »

Likenew wrote:а вы docker не пробовали? Там каждый имаге имеет свой ИП. Амазон вам может влететь в копеечку.
phpBB [video]


В условиях данной задачи это одно и то же.
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Леонид Ильич Брежнев
Уже с Приветом
Posts: 8632
Joined: 22 Mar 2011 01:40

Re: Кто гонял Virtual Box на AWS?

Post by Леонид Ильич Брежнев »

Сергей, со стороны load generator можно использовать порты выше 1024 и до 65К включительно, т.е. в терминологии языка си нужно последовательно

- создаете сокет
- bind его на специфический ай-пи и порт
- send / accept ну и так далее фразы в разговоре между load generator и сервер

код где-то примерно такой. Главноe это bind свою локальную структуру на свой ip и специфический указанный порт

Code: Select all

struct sockaddr_in local; /* socket info about our local */
int mysocket;            /* socket used to send/receive */
socklen_t socksize = sizeof(struct sockaddr_in);

memset(&local, 0, sizeof(local));           /* zero the struct before filling the fields */
local.sin_family = AF_INET;                /* set the type of connection to TCP/IP */
local.sin_addr.s_addr = htonl(<один из ip адресов локальной NIC card goes here>); /* set our address to any interface */
local.sin_port = htons(<порт от 1024 и до 65К goes here>);           /* set the local port number */    

/* create socket */
mysocket = socket(AF_INET, SOCK_STREAM, 0);
  
/* bind local information to mysocket */
bind(mysocket, (struct sockaddr *)&local, sizeof(struct sockaddr));

/* other steps */ 
Когда один ip address полностью исчерпает все порты, на той же машине нужно будет добавить второй ip адресс и так далее. Т.е. условно, если есть 10 ip адресов и 50 тыс. свободных портов, то можно создать до 500 тыс. outgoing ресурсов. Далее мы упираемся в NIC карточку/карточки, поскольку там данные пихаются хоть и быстро (для 1G NIC карточки), но последовательно.

Привязывать (bind) можно только к внешнему адресу, 127.0.0.х не подойдет, поскольку Вы пытаетесь использовать internal loopback address для коммуникации наружу. Вот если бы и сервер и load generator сидели бы на oдной машине, то такой фокус удался бы без проблем. Тестовый инстанс кассанды, для примера, именно так и инсталируется, каждая нода на свой адрес: 127.0.0.1, 127.0.0.2, и так далее.

Только пожалуйста не создавайте тысячи средов на одной машине по одному на каждую комбинацию ip:port, используйте select

Задача сохранять на самом деле status каждой комбинации ip:port, что бы понимать, какой ее статус в каждый момент времени
- она только bind,
- она что-то отправила и ждет получения,
- она получила и требует анализа,
- она проанализировала и ждет след. отправки
- и так далее.

пробегать ее в while(1) и в зависимости от статуса делать следующий шаг.
ybby
Posts: 6
Joined: 26 Oct 2003 04:48
Location: MA

Re: Кто гонял Virtual Box на AWS?

Post by ybby »

Леонид Ильич Брежнев wrote: Только пожалуйста не создавайте тысячи средов на одной машине по одному на каждую комбинацию ip:port, используйте select
select упрется в FD_SETSIZE (обычно 1024) так что больше 1000 коннетов на процесс селектом не получится. Лучше epoll, но много кода писать самому. Еще лучше взять готовый wrk (https://github.com/wg/wrk" onclick="window.open(this.href);return false;) и пользоваться.
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Кто гонял Virtual Box на AWS?

Post by Sergunka »

Ребята спасибо офигено. Я думаю, что я попытаюсь просто тупорыло запускать по порту. По условиям задачи у меня все одно больше 8 сокетов на один бокс не получится так как сам симулятор требует дофига памяти.

Я там вообще попытаюсь вбубенить вот такую хренотень чтоб реально страшно было когда картинка строится динамически со стороны симулятора и на стороне time series когда на одном боксе можно смотреть как симулятор пихает данные и как эти данные проходят через облако за одно и латенси и консистенси наглядно можно показать.

Image

http://bl.ocks.org/mbostock/4060954" onclick="window.open(this.href);return false;
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Сергей Армянский
Уже с Приветом
Posts: 1997
Joined: 10 Jul 2002 18:45
Location: redwood shores

Re: Кто гонял Virtual Box на AWS?

Post by Сергей Армянский »

voila https://github.com/shekyan/slowhttptest" onclick="window.open(this.href);return false;
And America has so many enemies. Iran, Iraq, China, Mordor, the hoochies that laid low Tiger Woods, undesirable immigrants - by which I mean everyone that came after me, including my children
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: Кто гонял Virtual Box на AWS?

Post by Palych »

А ну как Jmeter использовать?
User avatar
Boriskin
Уже с Приветом
Posts: 18906
Joined: 30 Aug 2001 09:01
Location: 3rd planet

Re: Кто гонял Virtual Box на AWS?

Post by Boriskin »

Sergunka wrote:В общем любые соображения велком вплоть до болезненных :D
Когда я тестировал нагрузку до 150тыс одновременных коннектов на сервак - я напиcал скрипт, который разгонял на 10 реальных разных коробках с Линуксом внутри по 15к клиентов. Практически на каждой системе есть ограничения на кол-во сокетов/FD, поэтому разогнать такое число (150к) на одной системе малореально (сам сервак на Фре пришлось тюнить и максимизировать память).

Если цифра в пару тысяч соединений устраивает - можно разогнать и на одном боксе, коннект идет на один и тот же порт на серваке (который слушает), на клиентской машине каждый новый сокет будет отбирать один свободный порт. Если клиент - не серверная винда - то 1-2к коннектов клиент вынесет, если какой линукс - то можно и до 5-10к разогнать, возможно придется подкрутить ограничения на макс. кол-во сокетов на процесс и на систему, но ядро пересобирать имхо не придется.

Мой опыт показывает, что обычное (не уровня heavy load ISP hardware) офисное оборудование (раутеры, хабы етс) может начать сходить от нагрузки в 100к активных соединений с ума, это может быть неприятным сюрпризом.

В общем - интересное и позновательное дело. :great:
Тупизна как Энтропия. Неумолимо растет.
User avatar
Boriskin
Уже с Приветом
Posts: 18906
Joined: 30 Aug 2001 09:01
Location: 3rd planet

Re: Кто гонял Virtual Box на AWS?

Post by Boriskin »

Леонид Ильич Брежнев wrote: Когда один ip address полностью исчерпает все порты, на той же машине нужно будет добавить второй ip адресс и так далее.
Т.е. условно, если есть 10 ip адресов и 50 тыс. свободных портов, то можно создать до 500 тыс. outgoing ресурсов. Далее мы упираемся в NIC карточку/карточки, поскольку там данные пихаются хоть и быстро (для 1G NIC карточки), но последовательно.
Это теория, а на практике все зависит от количества памяти, операционной системы и ее конфигурации.
Тупизна как Энтропия. Неумолимо растет.
User avatar
Boriskin
Уже с Приветом
Posts: 18906
Joined: 30 Aug 2001 09:01
Location: 3rd planet

Re: Кто гонял Virtual Box на AWS?

Post by Boriskin »

Sergunka wrote:Ребята спасибо офигено. Я думаю, что я попытаюсь просто тупорыло запускать по порту. По условиям задачи у меня все одно больше 8 сокетов на один бокс не получится так как сам симулятор требует дофига памяти.
А можно ли сбацать на коленке примитивный симулятор симулятора? Ну типа чтото запускается на отдельной треде, присоединяется к серваку, шлет http(s) запрос(ы) на слушателя, получает ответ, отрубает коннект, засыпает на случайное время, просыпается и снова долбит?
Если логика взаимодействия позволяет такое упрощение - таким образом можно легко разогнаться до нескольких тысяч псевдоклиентов и неплохо оттестровать серверную часть варьируя длительность сна и количество псевдоклиентов, например захреначить 1000 клиентов которые не спят вообще и посмотреть, что будет с серваком.
Тупизна как Энтропия. Неумолимо растет.
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Кто гонял Virtual Box на AWS?

Post by Sergunka »

helg wrote:Сокету для коннекшина нужен порт, а не IP. С одного клиентского хоста можно открыть тысячу сокетов на 80й порт сервера. У всех этих сокетов будет один IP, но разные порты на стороне клиента. Так что может и не надо много IP?
Это предложение оказалось решающим на спрингбуте оказалось порт модифицируется параметром при вызове так, что я легко пусканул 27 серверов типо томкет у себе на маке и показал ошеломленной индусской массе как это должно выглядить.

Индюки побулькали - главный индус выразил мнение чо мол де не это они искали... на этом и порешили.

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

P.S. helg - еще раз респект и огромное спасибо :fr:
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
fruit6
Уже с Приветом
Posts: 4207
Joined: 10 Jan 2004 01:22
Location: n-sk -> MD -> VA

Re: Кто гонял Virtual Box на AWS?

Post by fruit6 »

Сожрут вас индусы с потрохами. Скажите что случайно стерли навсегда. Но можете в рабочее время восстановить по памяти если назначат самым главным и повысят в должности
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Кто гонял Virtual Box на AWS?

Post by Sergunka »

fruit6 wrote:Сожрут вас индусы с потрохами. Скажите что случайно стерли навсегда. Но можете в рабочее время восстановить по памяти если назначат самым главным и повысят в должности
Дельный совет. Спасибо :fr:
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Кто гонял Virtual Box на AWS?

Post by Sergunka »

В общем опубликовал я статью у себя в блоге. По маштабированию ограничился скупым упоминанием, что маштабируется и очень легко :great:

А чтоб индюкам не было скучно читать в надежде понять как это делается, то добавил картинок и цитат из Майкла Крайтона

Image

https://vyatkins.wordpress.com/2016/07/30/velociraptor/" onclick="window.open(this.href);return false;
"A patriot must always be ready to defend his country against his government." Edward Abbey
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Кто гонял Virtual Box на AWS?

Post by Сабина »

Интересно какая практическая задача решалась таким тестированием ?
Если timeseries собирались через сокеты, то это как я понимаю EC2 instance
https://www.quora.com/What-is-the-maxim ... -increased" onclick="window.open(this.href);return false;
There are no any limits set by AWS. I was able to handle 1 million concurrent connections on single EC2 instance using my custom Erlang based server software. The only limit is available RAM on the instance.
Если только Кафка там стоит и на нее приходит от коньсюмеров, то
I know for Kafka servers, they typically go to 300K concurrent inbound connections to a single server process. They can go upper, but the performance gain is less interesting while stability concerns start to exist, e.g. the NIO selector starts to bear overhead.
С RDS соответсвенно другая песня
http://pushentertainment.com/rds-connec ... ance-type/" onclick="window.open(this.href);return false;

В Redshift вообще очень хитро настраивается число коннекшенов для user. И все это мониторится в разных аспектах через консоль
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Кто гонял Virtual Box на AWS?

Post by Sergunka »

Сабина wrote:Интересно какая практическая задача решалась таким тестированием ?
Задача второго закона термодинамики :D
Энтропия. Второй закон связан с понятием энтропии, являющейся мерой хаоса (или мерой порядка). Второй закон термодинамики гласит, что для вселенной в целом энтропия возрастает. Оба определения второго закона термодинамики опираются на первый закон термодинамики, утверждающий, что энергия убывает.
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Леонид Ильич Брежнев
Уже с Приветом
Posts: 8632
Joined: 22 Mar 2011 01:40

Re: Кто гонял Virtual Box на AWS?

Post by Леонид Ильич Брежнев »

Ты меня прости конечно, но статья не о чем. Ты бомбардируешь что-то небольшим по размеру json-ом. Ну ок. Ничего не известно, ни о топологии на другом конце, ни о том, как это обрабатывается (может ты всегда HTTP 200 возвращаешь), нету ни application level метрик, ни аналогичных системных метрик. Нету информации о системных параметрах, если это важно. Нету интересных графиков зависимости размера payload (json в твоем случае), как функция количества запросов и лайтенси. В общем это тебе видимо понятно, но использовать эту информацую как-то еще довольно проблематично.
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Кто гонял Virtual Box на AWS?

Post by Sergunka »

Леонид Ильич Брежнев wrote:Ты меня прости конечно, но статья не о чем. Ты бомбардируешь что-то небольшим по размеру json-ом. Ну ок. Ничего не известно, ни о топологии на другом конце, ни о том, как это обрабатывается (может ты всегда HTTP 200 возвращаешь), нету ни application level метрик, ни аналогичных системных метрик. Нету информации о системных параметрах, если это важно. Нету интересных графиков зависимости размера payload (json в твоем случае), как функция количества запросов и лайтенси. В общем это тебе видимо понятно, но использовать эту информацую как-то еще довольно проблематично.
Я не могу эти данные опубликовать согласно NDA... увы. В данном случае я использую статью в блоге, чтоб забить первенство в подходе. Собственно статья только об этом какой подход я использую для генерации устройств, сенсоров и задания метрики сенсора и там много чего по мелочам.
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Леонид Ильич Брежнев
Уже с Приветом
Posts: 8632
Joined: 22 Mar 2011 01:40

Re: Кто гонял Virtual Box на AWS?

Post by Леонид Ильич Брежнев »

Прости, подход в чем? Из статьи невозможно даже понять, что генеририруешь ты на стороне нагрузки, т.е. load generator, по крайней мере именно это мы тут обсуждали. Ну т.е. если знать контент то можно понять что своим http://localhost...." onclick="window.open(this.href);return false;? ты задаешь параметры генерации. Графики, кстати с трудоим читаемые, и не совсем понятно, что у нас от чего.
Извини, это внешнее впечатление.
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Кто гонял Virtual Box на AWS?

Post by Sergunka »

Леонид Ильич Брежнев wrote:Прости, подход в чем? Из статьи невозможно даже понять, что генеририруешь ты на стороне нагрузки, т.е. load generator, по крайней мере именно это мы тут обсуждали. Ну т.е. если знать контент то можно понять что своим http://localhost...." onclick="window.open(this.href);return false;? ты задаешь параметры генерации. Графики, кстати с трудоим читаемые, и не совсем понятно, что у нас от чего.
Извини, это внешнее впечатление.
Я не ставил себе задачу рассказать как и что там делается. Моя задача была очень простой забить подход в открытой публикации и дать как можно меньше информации подражателям :wink:

Собственно я и хотел услышать подобного рода ревью, что нихрена не понятно как там чего делается - это было изначально так и задумано. Это просто часть так сказать корпоративного игры. К слову сказать мой блог ненавидят, но пока закрыть не могут. Уже открыто пишут в легал департмент с просьбами разобраться с блогом :D
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Леонид Ильич Брежнев
Уже с Приветом
Posts: 8632
Joined: 22 Mar 2011 01:40

Re: Кто гонял Virtual Box на AWS?

Post by Леонид Ильич Брежнев »

Sergunka wrote:Собственно я и хотел услышать подобного рода ревью, что нихрена не понятно как там чего делается - это было изначально так и задумано. Это просто часть так сказать корпоративного игры. К слову сказать мой блог ненавидят, но пока закрыть не могут. Уже открыто пишут в легал департмент с просьбами разобраться с блогом :D
Ну хорошо, если мы тут помогли в какой-то большей политике.
Я полистал блог, до марта 2016 года, там реально есть с чем бороться? Какая у вас там интересная жизнь. :lol: :lol: :lol:
User avatar
АццкоМото
Уже с Приветом
Posts: 15276
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Кто гонял Virtual Box на AWS?

Post by АццкоМото »

Леонид Ильич Брежнев wrote:Прости, подход в чем?
В данном случае дарагой ЛИБ тремя словами и предлогом выразил все то, что я бы изливал словесным поносом на три экрана.

Сергунька, я верю внутренне, что какой-то нетривиальный подход имеет место. Что NDA чем-то мешает. Но то, что видно из блога/Привета.... ну, скажем мягко, не впечатляет. И "забить первенство" таким болгпостом точно не выйдет
Мат на форуме запрещен, блдж!

Return to “Вопросы и новости IT”