realurix (realurix) wrote,
realurix
realurix

Как бы это сказать помягче...

Прочитал я тут в "Огоньке" интервью со Светланой Иванниковой, руководителем LiveJournal Russia в компании SUP. Такие слезы, да еще в печатном виде, я видел впервые. И хацкеры нехорошие, и DDoS-ят они ЖЖ, и креста на них нет, и наказывать их надо отрубанием хвоста по самую шею. А потом взял и протестировал время выдачи странички. И получилось у меня слелующее:
# ab http://realurix.livejournal.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking realurix.livejournal.com (be patient).....done

Server Software:        GoatProxy
Server Hostname:        realurix.livejournal.com
Server Port:            80

Document Path:          /
Document Length:        91455 bytes

Concurrency Level:      1
Time taken for tests:   5.733 seconds
Complete requests:      1
Failed requests:        0
Write errors:           0
Total transferred:      91849 bytes
HTML transferred:       91455 bytes
Requests per second:    0.17 [#/sec] (mean)
Time per request:       5733.229 [ms] (mean)
Time per request:       5733.229 [ms] (mean, across all concurrent requests)
Transfer rate:          15.64 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      221  221   0.0    221     221
Processing:  5513 5513   0.0   5513    5513
Waiting:      589  589   0.0    589     589
Total:       5733 5733   0.0   5733    5733

А потом еще раз решил взять страничку и вот что увидел:
# ab http://realurix.livejournal.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking realurix.livejournal.com (be patient)...apr_poll: The timeout specified has expired (70007)


Когда-то давно, года три назад, времена ЖЖ были порядка 230 мсек. Тоже не сахар, но было терпимо. Но вот читаю интервью и вижу следующее: "Однако атаки, которые происходили 30 марта, 4 апреля и 6 апреля - это атаки очень высокой мощности. Легко понять, о чем я говорю, обратившись к цифрам. Например, 30 марта система, отвечающая за распределение входящей нагрузки по серверам LiveJournal, обрабатывала более миллиона одновременных соединений при средней норме 50 тысяч соединений. ЖЖ пришлось обслуживать в десятки раз больше запросов, чем обычно, и "отдавать" по 2 Гбит трафика в секунду вместо обычных 400 Мбит".

И стало мне смешно. Тут тот самый случай с ЖЖ, когда голова есть, а думай нету. Не буду говорить о том, как расставлены запятые. Это отдельная песня. Сначала стоит разделить 2 Гбит=2048 Мбит на 400 Мбит. Получается примерно 5. Т.е., нагрузка возросла всего-то в ПЯТЬ раз, а не в десятки раз, как это утверждается.

Ну ладно. Пойдем дальше. Посмотрим, что там у нас с миллионами соединений. Миллион соединений в секунду - это как минимум 2 миллиона пакетов с MTU=1500 байт. Или в 15000 бит. Байты стоит умножать на 10 для получения битов по той причине, что всегда в канале есть служебный трафик. Минимально служебный трафик дает прирост не больше 10-15% к полезному трафику. Да, еще не стоит забывать, что каждое соединение - это процедура HandShake (рукопожатие), при которой клиент и сервер обмениваются 4 пакетами - 2 шлет клиент, 2 в ответ шлет сервер, а уже после "рукопожатия" шлется запрос и получается ответ. Запросы и ответы так же упаковываются в пакеты. После окончания соединения происходит процедура "прощания". HTTP-протокол предусматривает упрощенную схему "рукопожатия" и "прощания". Но даже в этом случае для "рукопожатия" клиенту и серверу нужно обменяться по одному пакету, а "прощание" можно не делать, если в ответе указано Connection: close и в последнем пакете установлен флаг FIN. И так, имеем миллион пакетов в секунду, что равно 1000000 * 15000 бит = 15000000000 бит = 15000000 Кбит = 15000 Мбит = 15 Гбит. 15 Гбит в СЕМЬ С ПОЛОВИНОЙ раз превышает заявленную пропускную спосбность канала в 2 Гбит (см. цитату из интервью).

В общем, если был действительно миллион соединений, то это они сами там что-то "наваяли". Вряд ли провайдер, с кем они пирятся, сможет обработать такой поток. Это уже магистральные цифры. Да, чуть не забыл. 50000 соединений в секунду - это 50000 * 15000 бит = 1500000000 бит = 1500000 Кбит = 1500 Мбит = 1.5 Гбит входящего трафика. Исходящий будет 1 + 91849 / 1500 = 62.2 = 63 пакета. Следовательно, 50000 * 63 * 15000 = 47250000000 бит = 47250000 Кбит = 47250 Мбит = 47.25 Гбит. Эта цифра почти в ДВАДЦАТЬ ЧЕТЫРЕ раза больше заявленных 2 Гбит в пике и в СТО ДВАДЦАТЬ раз больше завленных 400 Мбит в штатном режиме. Куда ни кинь, где ни проверь, - везде цифры "не бьют". Это значит, что всем нам лапшу вешают на уши.

Им бы почитать мое "Эх-хе-хе...". Так ведь не будут. Причина - глупость. Как я понимаю, они снизили быстродействие своей системы ниже всяких допустимых пределов из-за количества подключаемой рекламы. А значит жадные. А глупость и жадность - сестры-близнецы. Где одна там и другая тут же, рядом. И вспоминается Жванецкий: у него теперь есть калькулятор, который жутко умеет считать от батареек...
Subscribe

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments