Про конкурс техноманьяков у Тормоза 
Тормоз продолжает развитие своего рекламного движка DAOS. Сейчас он занимается тем, что пытается построить сколько-нибудь эффективную защиту от накруток. Все прекрасно понимают, что полностью защититься нельзя, но от совсем простых способов защититься нужно. В связи с этими работами, он решил провести конкурс техноманьяков. Суть этого конкурса сводится к тому, что участники должны попытаться накрутить показы на новой версии DAOS, которая защищена от накруток. Тот кто первым накрутит 1 млн. показов, тот и победил.
Я решил прикинуть сколько времени может занять такого рода накрутка, при условии, что у накрутчика существуют все необходимые для этого ресурсы. Во-первых, DAOS хранит все данные в обычном текстовом файле. Из этого следует последовательная обработка всех запросов (пока файл заблокирован, никто не сможет в него писать, значит до окончания работы скрипта все остальные нервно курят в сторонке), кроме этого каждый сеанс связан с открытием и закрытием файла, а эти операции достаточно дорогие. В свое время, Тормоз проводил оценку производительности алгоритмов чтения и записи в файл. Среднее время выполнения одного конкурентного запроса получалось около 500 мс. Отсюда нетрудно посчитать, что в течение секунды может обрабатываться порядка 2-х запросов. Не густо.
С учетом того, что тестовые данные были получена на слабой машинке, давайте предположим, что в боевой системе скорость будет в два раза больше - четыре запроса в секунду. Тогда простыми вычислениями получается, что для накрутки 1 млн. показов одному человеку необходимо около 70 часов. Не хило правда? В реальности, как я понимаю, будет один общий хостинг на всех. Все участники будут пытаться накрутить DAOS одновременно. А это скорее всего приведет к тому что: либо хостер ляжет в глубокий дауне, либо время, необходимое для накрутки, значительно возрастет.
Вывод: концепция конкурса требует пересмотра, хотя бы в части количества показов. Но это, конечно же, решать не мне, а Тормозу.
подписаться на блог
Тормоз
Гость
Хостинг я предварительно планировал брать в облаке, одинаковые для всех участников установки. И насчёт подсчёта показов тоже думал много ещё. Пока наверно принципиальных изменений не будет, но в Daos 2.0 может радикально поменяю принцип подсчёта. Возможно он будет точный не на 100% (а нафиг?), но гораздо более быстрый.
А ещё формат вывода ab немножко непонятный. Конкуренция не должна сильно влиять на скорость выполнения отдельного запроса.
Тормоз
Гость
Смотри, там уровень конкурентности был равен трём, значит скорей всего считать правильно так: за 500 мс выполнится три конкурентных запроса, итого даже на той слабенькой машинке выходило суммарно 6 запросов в секунду.
Жаль не сохранил отчеты, так бы можно было и по общему времени выполнения расчитать, сейчас лень заново запускать.
Тормоз
Гость
Хотя сейчас всё же запущу.
Тормоз
Гость
root > ab -n 1000 -c 3 do/Daos/dist/JSblock.php
…
Server Software:
Server Hostname: do
Server Port: 80
Document Path: /Daos/dist/JSblock.php
Document Length: 553 bytes
Concurrency Level: 3
Time taken for tests: 164.813 seconds
Complete requests: 1000
Failed requests: 668
(Connect: 0, Receive: 0, Length: 668, Exceptions: 0)
Write errors: 0
Total transferred: 936929 bytes
HTML transferred: 627929 bytes
Requests per second: 6.07 [#/sec] (mean)
Time per request: 494.440 [ms] (mean)
Time per request: 164.813 [ms] (mean, across all concurrent requests)
Transfer rate: 5.55 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 2
Processing: 442 494 52.7 477 757
Waiting: 442 494 52.7 477 757
Total: 442 494 52.7 477 757
Percentage of the requests served within a certain time (ms)
50% 477
66% 501
75% 504
80% 507
90% 555
95% 635
98% 669
99% 681
100% 757 (longest request)
1000 запросов за 165 секунд. Так что на миллион запросов к старому обработчику Daos (без защиты) ушло бы не более 46 часов даже в случае вот с этой моей маломощной домашней машинкой, ну а реально можно было бы выжать гораздо больше.
Но в конкурсной игре будет другой код. Во-первых, с защитой, во-вторых, может быть вообще совсем другой.
Однако, я много обо всём этом думал, может и не стану делать определяющим фактор времени. Тут ещё есть чего обмозговать хорошенько
Leave a Reply