Pull to refresh

Итоги: что сильнее – ассемблер или Хабраэффект?

Reading time 3 min
Views 33K

Отшумели страсти после моей первой статьи на Хабре.


Тема была о веб сайте на ассемблере, так что нет ничего удивительного в количестве комментариев к статье, а также в Хабраэффекте на сайте. В течение первых нескольких суток тысячи людей посетили демо сайт AsmBB.


Сайт уже был один раз под подобным наплывом посетителей — когда в августе кто то опубликовал ссылку на сайт одновременно в Твиттер, ФБ и Реддит.


Но, судя по счетчику посещений, Хабрахабр оказался вдвое круче буржуйских сайтов и в этот раз демо сайт был нагружен значительно больше чем в прошлый раз.


Как и ожидалось, чудо свершилось. Несмотря на то, что хостинг предельно слабенький (я его взял такой специально), несмотря на то, что сайт использует БД SQLite, которую все считают очень медленной, форум не упал. Он даже не замедлился. Все время сайт работал исправно и обслуживал всех посетителей.


Посмотрим как выглядит Хабраэффект изнутри:


Статистика посещений


Статья на Хабре была опубликована 2-го января. За те нескольких дней, пока длился Хабраэффект, она была просмотрена около 40000 раз. Некоторое число людей, прочитавших статью, посетили и демо AsmBB. Эти посещения выглядят так:


Дата Посетители Страницы Запросы Траффик Время
ЦПУ [с]
Время обс.
запр. [ms]
02 янв 637 4461 12224 63.06 MB 152 12.43
03 янв 5402 36453 84876 385.48 MB 795 9.37
04 янв 1961 14531 33445 171.60 MB 325 9.72
05 янв 743 5220 12504 53.17 MB 170 13.6
06 янв 343 2370 5421 23.21 MB 69 12.73
В сумме 9086 63035 148470 696.52 MB

Посетители и запрось


Из графика нагрузки CPU видно, что веб-сайт 3-его января был нагружен приблизительно наполовину. То есть он мог бы обслужить примерно 180 000 запросов или 12000 посетителей в сутки, прежде чем сервер начал тупить из за ограничений на CPU.


В пиках посещаемости веб сервер (Apache) запускал не более 6 FastCGI процессов форума. Это означает и 6 одновременных коннектов к БД.


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


Настройки SQLite такие:


PRAGMA journal_mode = WAL;
PRAGMA foreign_keys = TRUE;
PRAGMA synchronous = OFF;
PRAGMA threads = 2;
PRAGMA secure_delete = FALSE;

Посетители


Вполне ожидаемо, посетители были на 90% из России, Украины и Белоруссии.


Должен отметить что эти посетители оказались намного активнее и вовлеченнее, чем западные. Это мне очень понравилось, потому что помогло протестировать сайт не только на скорость работы, но и на недостатки кода. В процессе Хабраэффекта и обсуждения статьи были выявлены и исправлены несколько багов, в том числе и критических.


Зарегистрировались 32 новых пользователей, которые написали несколько десятков постов, пытаясь протестировать форум на прочность.


Спасибо, ребята! Вы очень помогли.


Вот и список исправлений, которые были сделаны во время Хабраэффекта. Там не только багфиксы, но и новые функции:


  1. Ошибка, вызывающая исключение
  2. XSS уязвимость и еще одна ошибка вызывающая исключение
  3. Ошибка в кэшировании аватаров на стороне клиента
  4. Кэширование HTML постов

Насчет п.4 надо сказать, что я решил сделать эту функцию, измеряя время реализации, как доказательство того что код на ассемблере намного легче поддерживать, чем это принято считать.


Время реализации – ровно 78 минут. Наверное это несколько больше чем на ЯВУ, но все же вполне нормальный результат.


Выводы


А выводы делайте сами.




Спасибо gearbox за помощь в редактировании.

Tags:
Hubs:
+84
Comments 148
Comments Comments 148

Articles