← All posts tagged Авиабаза

Balancer

Пару дней назад чудовищно возросла нагрузка на io сервера. Вот просто, практически единомоментно. Интересно, что если останавливать PHP в контейнере Авиабазы, то все оставшиеся сервисы начинают летать. В т.ч. PHP в других контейнерах. Если работает PHP Авиабазы, то тормозят диск чаще не его процессы, а nginx, раздающий мелкую статику...

Если число параллельных процессов PHP в контейнере Авиабазы резко ограничивать и урезать время работы каждого — всё начинает более-менее работать. Так сейчас и выкручиваюсь. Если увеличивать число процессов и/или возвращать время работы, всё начинает резко тормозить.

Сегодня вообще прикол обнаружил. Попутно логгирую тяжёлые PHP-скрипты через xhprof, чтобы видеть, что тормозит. Обычно тормозят (sic!) MySQL-запросы (третья сущность в области тормозов). Но, вдруг, вижу, как PHP-скрипт в течении 129 секунд ожидал выполнения функции session_start(). Ну да, понятно, она файл сессии пишет на диск и когда диск тормозит, всё может тоже виснуть. Вот только файлы сессии пишутся в ... tmpfs. Т.е. оно 129 секунд ждало очереди на запись в RAM-диск o_O.

В общем, в системе какие-то кранты с io и не похоже, что это проблема с HDD (smartctl/mdadm/dmesg — всё идеально). Пока планирую тупо снимать нагрузку, перенося часть тяжёлых операций на другие сервера. Но это — косметика поверх трупных пятен зомби, какая-то.

Balancer

В идее распределённых статических сайтов решил, таки, от Zim отказаться в пользу Markdown. Markdown стал фактически популярным стандартом, а Zim перестал шевелиться. И хотя Markdown-based десктопной Wiki в файловой системе я пока не вижу, это направление явно перспективнее.

Как мелкий бонус — заодно на GitHub документы вполне прилично смотрятся :) Вот для затравки: github.com
~~~

Balancer

Как я ни искал альтернативы, но ничего для расширения функционала форумов Авиабазы в социальную сторону, более подходящего чем LiveStreet, так и не подобрал (щупал в живой установке Dolphin, InstantCMS, Oxwall, Elgg, WordPress, рассматривал ещё несколько альтернатив...).

Так что снова берусь за оживление LiveStreet на Авиабазе. До этого было в подвешенно-замороженном состоянии (думал, что придётся переезжать на что-нибудь получше).

Работы по интеграции, конечно, предстоит много, но архитектура LiveStreet, в общем, вполне сносная, работать с его API не всюду удобно, но не противно :)

Одна засада сразу же — в XXI веке там пароли хранятся в виде md5() без соли. Придётся переделывать.
~~~

Balancer

Непонятно. Авиабаза последние пару-тройку недель тормозила. Ну, это понятно — Украина, все дела, онлайн до 350 человек одновременно при старой норме 200, количество хитов 150k в сутки вместо прежних 100k (это не считая десятков обращений к мелочи на показ каждой страницы) и т.п. И поверх всего многие десятки потоков активных поисковых ботов всех мастей.

top'ы/iotop'ы показывали, что основная нагрузка — mysql. Его я понемногу и допиливал/оптимизировал. Однако, хотя прогресс по разгрузке явно был, система всё равно тормозила. А сегодня ночью, проводя глубокое профилирование и переписывание генерации превьюшек (совсем для другого проекта) обнаружил в движке забавный баг — во множестве случаев данные по превьюшке не сохранялись в БД и поэтому при каждом запросе данных параметры читались с диска, а нередко превьюшки перегенерировались даже при наличии их на диске.

Исправил ошибки — и опаньки. Волшебны образом сайт залетал. Не знаю, как к вечеру будет, но сейчас онлайн 250 и всё работает шустро.

Что ещё непонятно — по загрузке машины по top/iotop/etc всё выглядит примерно по-прежнему. iowait не упал, в отчётах munin никаких «провалов» по загрузке. Всё выглядит примерно одинаково как при прежних тормозах, так и сейчас, без тормозов. Удивительное, блин, дело. Походу, кроме глубокого профилирования фиг поймёшь, что на самом деле тормозит...

Balancer

Сегодня в голову пришла дурная мысль. Экспортировать контент форумов (напомню, 3+ млн. сообщений объёмом около 5Гбайт) в текстовом виде в репозиторий :) Типа, таким образом получается автоматическая версионность сообщений, плюс произвольные мастер-мастер соединения для ковыряния с контентом, плюс упрощается раздача форума в standalone (но тут надо решить, что делать с закрытыми, не публичными форумами — делать два репозитория?). А MySQL при этом приобретает роль эдакого кеша. Прикинул — оптимально раскидывать по 10 тыс. записей в подкаталоге. Написал скриптик и делаю сейчас экспорт. Потом устрою стресс-тест mercurial vs git :)

Интересно, насколько оптимально получится?

Balancer

У меня давний технический затык.Хочу приличный клиент для блогов/форумов Авиабазы. Блогов/форумов — потому что по сути у меня блоги — это элемент форумов.

После долгих изысканий пришёл к выводу, что в качестве таковых клиентов альтернатив нет WordPress'у (реально обалденный клиент) и Tapatalk (не лучший вариант, но альтернативы просто отсутствуют).

Дальше логика простая, рождённая ещё на LiveStreet (хотя там только юзеры синкались, не записи). Поднимаем WordPress и настраиваем двухсторонний синк с моими блогами. Пишем в WP из клиента — запись появляется на и форумах. Пишем в блог на форумах — читать можно в клиенте под Андроидом. Естественно, та же история с комментами.

Итак, с движком для блогов всё понятно. Тем более, кстати, что у WordPress и десктопный клиент нынче великолепный. Весь из себя WYSIWYG и AJAX, удобный, функциональный...

Вот с форумами оказался затык. Вообще, я поначалу долго думал реализовать свою поддержку Tapatalk через их API. Но быстро сдался. Я тупо не нашёл документации по API. Пытался разбираться на примерах их плагинов к популярным форумам, но не осилил. Времени жалко :)

Дальше логика та же. Ставим какой-то форум с официальной поддержкой Tapatalk и делаем двухсторонний синк с ним. Целиком на новый движок не переходим, так как мне функционал и архитектура ни одного из популярных движков не нравятся, а переписывать чужие движки... опять получится мой вариант, который, кстати, из punBB растёт.

Открытых движков с поддержкой Tapatalk целых шесть. Первая мысль была о phpBB. Прошло больше десятка лет с того момента, как у меня был последний негативный опыт с этим движком, старое овно успело забыться, движок в 3-й версии мегапопулярен... Была надежда, что его достаточно вылизали :)

Поставил, погонял в паре с Tapatalk. Отлично. Полез в потроха, оценить удобство интеграции с ним без ковыряния в коде. Адъ и Израиль. Сообщения хранятся в перелопаченном BB-коде, ускоряющим вывод. Пример кода в Juick не кинуть, но это реально извращение :) С подключением плагинов относительно невесело. Часто требуются патчи движка. В общем, всё как и было 10 лет назад, только ещё BB-код в бэкенде доломали. В общем — не наш выбор.

Simple Machines. Даже не ставил. По тестам производительность хреновая. Ещё очень свежи в памяти ряд случаев, когда меня через него ломали. В общем, не щупал. Может и зря, ну и фиг с ним.

Kunena — на Joomla. Не то, чтобы у меня предубеждения против Joomla, но как-то не впечатлило. Ни рыба, ни мясо…

bbPress. Внезапно оказалось, что у WordPress'а есть «нативный» форумный движок. Исследования отзывов в Интернете (да, это был обязательный элемент по всем движкам — общий поиск, LOR, Хабр, AlternativeTo, …) Года до 2009-го был полной опой с массой негатива, в последних версиях стал много лучше. Вариант был интересен тем, что плотно интегрирован с WordPress, который, напомню, у нас итак стоит блоговым параллельным движком из-за качественного клиента. На этот движок я в итоге делал большие ставки. Плевать, что интерфейс не привычный, всё равно основные пользователи будут на форуме через мою морду сидеть. Зато у WordPress сейчас лучшая, вероятно, система плагинов. Полный автомат, ничего вручную качать не надо, ничего не надо патчить. Сказка. Поставил. Поиграл. Понравилось. Полез в потроха, чтобы повозиться с конвертацией. Закрыл и решил больше не возвращаться. В WordPress все объекты (блоговые записи, постинги, топики, форумы, страницы сайта) в одной таблице. Это ад. Как представляю, как это всё будет работать, когда в таблице будет 2-3-5 млн. записей… Жесть. Отказать.

Vanilla. Очень много позитива об этом движке. Загорелся. Поставил. Муть с плагинами и разметкой. Из коробки даже bbcode нет. Плагины конфликтуют. Всё кривое. Многое требует патчей. Добило то, что по бенчмаркам оно ещё и тормозом оказалось.

Итить... в Juick больше не влезает (при чём он молчит как партизан). Так что продолжил на plus.google.com
~~~

Balancer

Это уже скучной традицией становится. 3-й заход. Вот в упор не понимаю, какой смысл делать DDoS ночью(!) перед праздниками(!!). Итак, ведь, на сайте никого.

На этот раз не просто DDoS, а ещё и управляемый DDoS. Я затыкаю объект атаки — объект атаки меняется на новый...
~~~

Balancer

Пока болею и ни на что продуктивное голова не годится, пошёл, прикрутил к форумам Авиабазы LiveStreet: balancer.ru

LS внутри устроен страшновато, часто неудобно, но проблем подлезть в него и организовать перенос юзеров с форумов на LS даже в моём нынешнем состоянии осилил, достаточно прозрачно всё.
~~~

Balancer

Сегодня выкроил, таки, время на Авиабазу. Зачистил до нуля каталог с 99 тыс. писем (отчёты о неудачной доставке почты, ошибки на cron-задачах и т.п.)

На АвиаПорте радует почти полное отсутствие ошибок сайта в логах. Несколько крупных зачисток за последние пару месяцев не прошли даром. Впрочем, работы по рефакторингу ещё много. Несколько толстых костылей многолетней давности рассосались, но парочка ещё есть :)

Balancer

Агава — такая Агава. Преамбула от Агавы: «12 ноября (суббота) в период с 8:00 по 13:00 часов по московскому времени в дата-центре «Агава-Север» будут проводиться плановые работы по техническому обслуживанию источника бесперебойного питания (ИБП). Все работы будут проводиться под контролем наших технических специалистов. Перерывов в подаче питания не планируется»

Фабула от Яндекса: «Согласно данным мониторинга, обнаружены проблемы с доступностью сайта: www.aviaport.ru (12 ноября в 09:11). Рекомендуем проверить работоспособность сайта»

«Согласно данным мониторинга, обнаружены проблемы с доступностью сайта: airbase.ru (12 ноября в 09:13). Рекомендуем проверить работоспособность сайта»

Balancer

Прэлестно… Сегодня отваливаются сразу оба сервера. Потом поднимаются со сброшенным аптаймом. Запрашиваю: «шо цэ такэ?». Отвечают: «Сегодня, 13.09.2011г. в Дата-Центре "Агава-Cевер" возникли проблемы с питанием. Наши технические специалисты в данный момент делают все возможное для возобновления предоставления услуг в кратчайшие сроки. Причины возникшей проблемы с электропитанием выясняются. Приносим свои извинения за доставленные неудобства. Работоспособность Ваших серверов на данный момент восстановлена». Хорошо ещё в этот раз, вроде, ничего не посыпалось, как прошлый раз.

Balancer

Офигеть, не встать! :D Накопал тут страничку-заглушку
kron.chat.ru
Этой заглушке уже 13 лет (а сайт сделан — без малого 14 лет назад). Вот это я понимаю, надёжный хостинг! :D Интересно, что ещё из бесплатных хостингов живо с 1997-го года? При чём при отсутствии активности пользователя более 10 лет. Залез на FTP — там последние файлы (я как файлопомойку использовал какое-то время в духе «если хостер убъёт — не жалко») от октября 2000-го года :)
Ещё интересно, что пароль смог вспомнить со второй попытки.
Ностальгия, прямо :D
Интересно, что у меня там за баннерная система крутится и сайтовое кольцо — надо бы вспомнить аккаунты, посмотреть, что с ними, живы ли :)
А вот в таком виде оно (со второй попытки) было размещено на chat.ru: airbase.ru :)

Balancer

Сегодня было обнаружено, что на форуме регистрируется по 300 ботов в день. Сделать они ничего не могли, так как стоит ограничение, что новички в первые сутки после регистрации не могут создавать новые темы, только отвечать, но в базе стало что-то за 60 тыс. юзеров... В результате была введена «матан-капча» :) — img51.imageshack.us

В отладочных логах сразу стало попадать по нескольку ботов-неудачников в минуту, а лог попыток создавать новые темы новичками сразу опустел :)
Из базы пользователей было дропнуто 54 тысячи ботов (и, попутно, неактивных юзеров, которые никогда ничего не писали, не редактировали профиль и не заходили на форумы в течении месяца)...