Добавить в корзинуПозвонить
Найти в Дзене

Борьба с нагрузкой на сервер из-за АСИКов

Пусть, игроков у нас не так много, но зато каждый человек - уникален. У каждого своя тактика, как разбогатеть. Кто-то просто строит риги на видео картах, а кто побогаче начинают понимать, насколько бесконечные асики могут увеличить их прибыль.
До недавнего времени все игроки считали асики бесполезной механикой, потому что все, кто их покупали уходили или в минус, или почти не получали никакой прибыли: за электричество приходят нереальные счета, а асики ломаются через пару дней.
Но один человек, далее Роман, решил просто купить кучу АСИКов, чтобы было. Оказалось, что те копейки, которые приносит каждый отдельный асик, могут складываться в бесконечность, если бесконечно покупать асики...
И мы вдвоём начали покупать асики, на локациях с бесплатным электричеством такая тактика особенно успешная, с помощью асиков очень легко пройти 10 последних локаций. С ригами на видеокартах это занимает почти месяц! А с асиками, ну, дней 10, если не меньше!
Роман прошел игру и был доволен. Но на этом он

Пусть, игроков у нас не так много, но зато каждый человек - уникален. У каждого своя тактика, как разбогатеть. Кто-то просто строит риги на видео картах, а кто побогаче начинают понимать, насколько бесконечные асики могут увеличить их прибыль.
До недавнего времени все игроки считали асики бесполезной механикой, потому что все, кто их покупали уходили или в минус, или почти не получали никакой прибыли: за электричество приходят нереальные счета, а асики ломаются через пару дней.
Но один человек, далее Роман, решил просто купить кучу АСИКов, чтобы было. Оказалось, что те копейки, которые приносит каждый отдельный асик, могут складываться в бесконечность, если бесконечно покупать асики...
И мы вдвоём начали покупать асики, на локациях с бесплатным электричеством такая тактика особенно успешная, с помощью асиков очень легко пройти 10 последних локаций. С ригами на видеокартах это занимает почти месяц! А с асиками, ну, дней 10, если не меньше!
Роман прошел игру и был доволен. Но на этом он решил не остановиться.

Поначалу его целью было 200 страниц с асиками, но, когда он достиг этой цели, он понял, насколько она была простой и какой огромный потенциал скрывается за асиками.
Он поставил цель 1 000 000 000 асиков. "Нет" - подумал он - "1 000 000 000 страниц с асиками".
Это невероятно огромные цифры, не во всех олимпиадных задачах по программированию есть такие числа! А ЗДЕСЬ ЭТО НУЖНО КАЖДЫЕ 30 МИНУТ ОБРАБАТЫВАТЬ 20 МЛРД ЗАПИСЕЙ В БД!
Уже на 200к асиков у некоторых игроков перестали приходить биткойны. Тогда я не смог найти причину этого бага, но на 600к асиков я решил проверить время выполнения обработки майнинга.
На сервере стоит ограничение в 60 сек на выполнение скрипа, которое никак нельзя увеличить. Тогда я решил разбить все асики на чанки по 8000 штук и обрабатывать 1 чанк раз в 35 секунд.

Оказалось, что 10000 асиков обрабатываются 30 секунд... Довольно долго, но что поделать, запрос к бд и так довольно оптимизированный. Но, вроде это не так много всё-таки, да? Ха-Ха-ХА-ХА-ХА

600 000 делим на 10 000 = 60 чанков по 30 секунд - это целых 30 минут на одного игрока! Это колоссально много! А если будет больше таких игроков, а если он решится на 20 млрд асиков? Уму непостижимо!

Я попытался распределить нагрузку, например. выполнять алгоритм раз в час, а не каждые 30 минут. Но временами появляются ошибки: out of the memory и тд.

Как же решить эту проблему с АСИКами?...
Напрашивается несколько решений:
1. Выполнять алгоритм раз в 2 часа с меньшим кол-во чанков, это продолжит дико нагружать сервер, могут появляться новые ошибки. При большем кол-ве игроков проблема может. Прямо сейчас увидел, что алгоритм майнинга на картах стал вместо 10 сек выполняться 51сек...
2. Огранить к чертям кол-во асиков на одного игрока в 50 тыс. штук. Этого более чем достаточно для того, чтобы пройти игру на асиках. Ничего бесконечного, всё-таки быть не должно :(

Спасибо за внимание, жду ваших ответов.