Давненько я не писал сюда... так всё хорошо было...

Всё началось 31 октября. Хостер, у которого находится основной фронтэнд, сказал что у него проблемы с провайдерами и будет технические работы. Некоторое время он просто лежал. Потом отрубился ipv6 (а по нему у меня общается фронтэнд и бэкэнд). Заметил я это похоже только через несколько часов. Как заметил - переключил их на ipv4 и реактор, наконец, заработал. Но по вечерам загрузка картинок реально тормозила. Хостер сказал, что починит всё "очень быстро" - за пару недель.

8го октября мы решили "Хватит это терпеть!". И я пошёл искать где бы ещё арендовать сервер в европе, тянущий 10Гбит и прокачивающий 0.5Пб трафика в месяц за копейки. Нашлось только 2 предложения:
- одно от достаточно хорошей компании Swiftway, но в 2 раза дороже и жёсткое ограничение по трафику - превышение 0.5Пб было дорогим. Хотя можно было подоговариваться по поводу превышения трафика.
- второе от британской redstation. Там предлагался безлимитный 1.5Гбит по цене моего сервера. У меня в среднем трафик 1.8Гбит и 95% burstable - 2.5 Гбит. Поэтому два сервера должны были вполне уместиться по трафику и иметь запас. Но дальше я начал расспрашивать их как они считают трафик и оказалось, что они жёстко шейпят на 1.5Гбит. А у реактора бывают кратковременные (и не очень) всплески сильно выше среднего. Поэтому тоже не очень
- третье предложение было от нашего же хостера. У него датацентров много. Проблемы только в одном. Почему бы не попробовать другие? Это и было принято за рабочее решение.

Оказалось, что в двух нормальных ДЦ - Вене и Праге - у него мест нет. Есть только в Злине - деревушке на востоке Чехии. Ну делать нечего - попробуем его. Оплатил. Всё поставили. Ipv6, как всегда, заработал с 3ьего раза у них. Попинговал разные места - по одному из маршрутов был небольшой пакетлост. Написал им - ответ мы скажем своему провайдеру, чтобы они увеличили канал в том месте, но когда они это сделают не знаем. Ладно, наверное что-то немного лагающее будет лучше чем сильно лагающее. Переключил реактор на сервер в Злине и начался пиздец. По вечерам пакетлост по всем направлениям, ещё хуже чем в лагающем Амстердаме.

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

После такой недели у меня была только одна мысль - "Придётся это терпеть".

Протрезвев через пару дней ко мне пришла ещё одна мысль. Бэкэнды у реактора стоят у другого хостера. Там с каналами всё достаточно плохо, зато сервера дешёвые. И недавно они обновили линейку своих серверов. И теперь за 50 евро можно взять лучший сервер, чем у меня стоят за 60 евро. Только надо установочный платёж в размере 50евро заплатить. Вот я и решил - через 5 месяцев этот апгрейд всё равно окупится. Давай сделаю сейчас, на некоторое время старые всё ещё будут работать, а новые настрою на отдачу картинок. Тогда хотя бы немного разгружу амстердам и часть картинок будет отдаваться быстро. За неделю я не успею выбраться за лимиты трафика.

Сказано - сделано. Сделал всё это. Пару дней оно проработало в этом режиме и потом Амстердам починили, наконец. Вернее, основные лаги там пропали, но остались ещё небольшие по ipv4 и полностью не рабочий ipv6. Но это решаемо (сейчас вот решаю потихоньку).

И тут наступает другая проблема - перенос старых серверов на новые. Перенос я делал в попыхах (чтобы меньше платить за старые сервера) и в результате не все данные в свифте перенеслись. Заметили это только когда сервера уже забрали. В результате потерялись порядка 1-2% картинок. Из хороших новостей, что у меня одна и та же картинка хранится в куче разных вариантов - увеличенная, уменьшенная, с вотермарками и т.д. Сейчас восстанавливаю что возможно.

Вторую проблему вчера решал. Новые сервера нещадно жрали проц. Это при том, что он там на 2 поколения лучше, чем на старых. До полуночи дебажил всё это. Оказалось, что в libmemcached в последней версии сломали ipv6. Причём там был такой код:

#if 0
hints.ai_family= AF_INET;
#endif

Он никогда не работал. Но какой-то умный человек решил, что это наверное ошибка и удалил If/endif. Из-за этого строчка начала работать, а она запрещает использование ipv6. Ну сегодня нашёл предыдущую версию, накатил её на все серера, нагрузка сразу спала. Уф, хоть одна хорошая новость.

Надеюсь в следующей части я расскажу как сделал CDN, ибо уже давно жду, когда мне поставят 2ой фронтэнд в Нью-Йорке.