Отшумели страсти после моей первой статьи на Хабре.
Тема была о веб сайте на ассемблере, так что нет ничего удивительного в количестве комментариев к статье, а также в хабраэффекте на сайте. В течение первых нескольких суток тысячи людей посетили демо сайт AsmBB.
Сайт уже был один раз под подобным наплывом посетителей — когда в августе кто-то опубликовал ссылку на сайт одновременно в Твиттер, ФБ и Реддит.
Но, судя по счетчику посещений, Хабрахабр оказался вдвое круче буржуйских сайтов и в этот раз демо сайт был нагружен значительно больше чем в прошлый раз.
Как и ожидалось, чудо свершилось. Несмотря на то, что
Посмотрим как выглядит хабра–эффект изнутри:
Статистика посещении
Статья на Хабре была опубликована 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 новых пользователей, которые написали несколько десятков постов, пытаясь протестировать форум на прочность.
Спасибо ребята! Вы очень помогли.
Вот и список исправлений, которые были сделаны во время хабраэффекта. Там не только багфиксы, но и новые функции:
- Ошибка, вызывающая исключение
- XSS уязвимость и еще одна ошибка вызывающая исключение
- Ошибка в кэшировании аватаров на стороне клиента
- Кэширование HTML постов
Насчет п.4 надо сказать, что я решил сделать эту функцию, измеряя время реализации, как доказательство того что код на ассемблере намного легче поддерживать, чем это принято считать.
Время реализации – ровно 78 минут. Наверное это несколько больше чем на ЯВУ, но все же вполне нормальный результат.
Выводы
А выводы делайте сами.
Автор: johnfound