Pull to refresh

Игра вКонтакте — история одного запуска

Reading time3 min
Views1.5K
Всем привет. В пятницу мы запустили гонки для социальной сети вКонтакте — ТурбоГонки. Поиграть в них можно здесь: http://vkontakte.ru/turboraces, а выглядят они приблизительно так:

image

Пока еще игра в режиме бета-теста, поэтому вы можете испытывать ненависть к автору топика, непримиримое желание выбросить свой браузер и даже уверен, что найдете некоторые баги, но милости просим к нам на огонек.

На чем это написано?


Клиентская часть — ActionScript, реализация физики — Box2D. Серверная сторона, управляющая процессом гонки — Qt, менюшка, магазин и прочие мелочи — PHP (CodeIgniter), база данных — MySQL.

Как мы запускались


Писалась игра долго. Неприлично долго. Мне даже стыдно эти сроки называть, поэтому не буду. Сменилось несколько разработчиков, на моей памяти проект 2 раза замораживался и 3 раза переносилась дата релиза. В конце-концов решили релизиться и запустились в прошлый четверг. Если быть точным, то в пятницу, т.к. денек приложение повисело на модерации.

В игру потихоньку начали приходить пользователи, начали создавать заезды и играть и мы поняли, что попали. Количество багов оказалось раза в 4 выше, чем мы ожидали и вылезли даже те, которые вообще не могли проявиться — закон Мерфи в силе. Главное, что играть можно было, несмотря на них (критические мы уже пофиксили, немного стабилизировали игру).

Посмотрев на это, решили за выходные обкатать на небольшом количестве пользователей (за первые сутки тысячи полторы установило), выявить большую часть проблем, а с понедельника их пофиксить и через неделю уже заниматься активным продвижением.

Но в субботу мы решили попробовать протестировать рекламу вКонтакте. Трафик полз понемногу, эксперименты довели стоимость установки приложения с 1.5 рублей до 0.4, что просто великолепно, как мне кажется, а потом пришло 11 вечера и трафик полился рекой.

С чем это связано — сказать тяжело, т.к. анализировать было некогда. Передаю печальный опыт следующим поколениям — НИКОГДА не запускайтесь с приложениями в соцсетях, когда на сервере стоит Apache. Мда, в общем, т.к. мы не ожидали резкого наплыва трафика, то сервер был с обычными дефолтными настройками, там еще даже магазин крутился. Да, 8 Гб оперативки, 80 SSD и какой-то 4-ядерный процессор, но это все не помогло, т.к. повесился веб-сервер. Мы прямо так и представляли, как Апач грустно выглядывает из окна, видит толпу разъяренных бледнолицых, разворачивается и грустно набрасывает петлю на крюк.

Быстро развернул nginx, хотя бы как прокси перед Апачем — помогло, чуть похорошело ему. Утром уже понял, что нужно было worker'ов явно не 2 поставить, и количество процессов увеличить, но дефолтный конфиг тоже спас. На некоторое время.

В течение ближайшего часа траффик шел плотно, потом спал. В результате не помню, как за первый час, но когда я в 5 утра пошел спать, уже приняв решение завтра переезжать в облака, в приложении было 7000 пользователей.

В 10 часов меня разбудили звонком о том, что опять лег сервер. Обновив страницу со счетчиком, я, мягко сказать, удивился — пользователей было уже 14000 (x2 за 5 часов) и они шли плотным потоком дальше. Здесь оказалось уже проще — чуть поправил конфиги nginx'a и сервер бодро забегал дальше. За следующие 5 часов снова было x2 — в 3 часа дня у нас было 28 тысяч пользователей. Дальше уже попустило.

Как выглядит архитектура сейчас


За воскресенье мы разместились в «Оверсан-Скалакси». Почему там? Да я о других российских облаках просто понятия не имею, а в Штатах или Европе меня смутили пинги. Поставили лоад-балансер и 2 сервера за ним, выглядит в панели управления это так:

image

База и игровой сервер еще не в облаках, пока на более мощном выделенном сервере в другом датацентре лежат.

На балансере поставили HAProxy, которая и распределяет нагрузку между серверами за ним. Конфиг почти дефолтный и лежит тут: http://pastebin.com/xZ7Prc3u, я ее увидел впервые в воскресенье, так что времени особо глубоко разобраться не было, если кто подскажет, как сделать лучше — с удовольствием выслушаю.

На веб-бекендах стоит nginx+php-cgi. масштабированием средствами панели Скалакси только еще разбираюсь, поэтому сложно сказать о том, как оно работает)

Спасибо всем, кто прочел эти 8 километров текста, не сказал «фу, вконтакте» и не поставил минус :)

С удовольствием выслушаю замечания, пожелания, рекомендации, советы.

Напоследок скриншот игрового процесса по просьбе из комментариев:

image
Tags:
Hubs:
+93
Comments104

Articles