Решено Прошу совета по оптимизации веб-сайта

Тема в разделе "Lotus - Программирование", создана пользователем Gandliar, 14 фев 2016.

Метки:
  1. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Есть веб-сайт с документами (~1000 документов)
    Задача иметь иметь по каждому документу ежемесячную статистику уникальных просмотров по каждому разделу.
    Также необходимо в дневное время добиться максимально быстрой загрузки документов на веб-сайте.
    Ежедневно происходит порядка 10 000 просмотров суммарно.
    Предполагаемый процент неуникальных и ботов ~ 20%
    Сейчас реализован подсчет лотусовым агентом по первому варианту, вопрос есть ли смысл например перейти на второй вариант или как то еще реализовать?

    1 вариант
    Есть документы месячной статистики (месяц, количество показов А, количество показов Б, количество показов С)
    Есть документы ежедневной статистики (дата, ip, тип показов (А, Б или С), куки, броузер инфо)
    Когда документ открывается в разделе (А,Б или С), запускается агент, который находит документ месячного показа или создает его, если его нет.
    Затем в документе месячного показа, для соответствующего типа проверяется уникальность по ip и исключаются боты.
    Если показ уникальный, то прибавляется 1 к показам и создается документ ежедневной статистики.
    Ежедневная статистика старше 2х месяцев - просто удаляется.

    2 вариант
    Когда документ открывается, запускается агент, который пишет документ ежедневной статистики (неуникальный и с ботами) в базу.
    Ночью агент обрабатывает документы ежедневной статистики (проверяет на уникальность по ip) и модифицирует или создает документы месячной статистики.
    а) Неуникальные документы/боты и ежедневная статистика старше 2х месяцев - просто удаляется.
    б) В базе статистики документ не удаляется, а "очищается", а при записи сначала берутся "очищенные", а затем если "очищенных" нет, то создаются новые.

    --------------

    Для ежедневной статистики сделана отдельная база, в ней порядка 226 000 доков и размер 5гб используемое место в ней 15%.

    Месячная статистика находится в той же базе что и документы, доков статистики в ней 44 000 за несколько лет.

    Вот думаю как минимум вынести месячную статистику в отдельную базу, чтобы ускорить открытие страниц. Заодно думаю, есть ли смысл переписать все на второй вариант, указанный выше?

    Спасибо за внимание.
     
  2. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Вот что показывает профилирование текущего агента

    base-wqo Profile
    14.02.2016 14:06:04 ZE3
    Elapsed time: 63 msec
    Methods profiled: 18
    Total measured time: 32 msec
    Class Method Operation Calls Time
    Document Save 2 16
    View GetDocumentByKey 1 16
    Document [expandedname] Set 18 0
    Document [expandedname] Get 13 0
    Document GetItemValue 5 0
    Document ReplaceItemValue 4 0
    Document UniversalID Get 2 0
    DateTime LSLocalTime Get 2 0
    DateTime DateOnly Get 2 0
    Database GetView 1 0
    Item ValueLength Get 1 0
    Document GetFirstItem 1 0
    Session CurrentDatabase Get 1 0
    Session DocumentContext Get 1 0
    DateTime TimeDifference 1 0
    View Refresh 1 0
    Database OpenByReplicaID 1 0
    Database CreateDocument 1 0
     
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    статистика, быстрая отдача статики - это все вопросы фронтэнда
    его и надо ставить/настраивать
     
  4. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    С общей статистикой вполне справляется яндекс метрика и гугл аналитик.
    Задача стоит посчитать и отобразить в разрезе просмотров 1 документа в различных разделах.
    Также уникальный просмотр является конверсией для учета тем же гугл аналитиком и другими системами.

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

    Ведь все можно сделать и на лотусе :)
     
  5. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    Мне кажется второй вариант более эффективный. Более того, я бы не стал заморачится с поиском какого-либо документа (это время), а просто писал бы при открытии документа в базу новый документ с необходимыми данными (Дата/Время, Код страницы/документа = UNID, IP и пр. того, кто открывает документ). Потом, ночью, по этим данным можно строить любые отчёты, собирать статистику и пр.
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    зачем, если через фронт идет учет в логах и эти логи парсятся соответ движком (коих есть порядочно)
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    вот пример лога nginx
    кот. фронтом к домине и awstat спокойно покажет кол-во посещений страниц и чего угодно http://www.tech-notes.net/awstats-for-nginx/ как настроить фронт я уже описывал в админ разделе (для https)
     
  8. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    Стабы? Убить. Вместе со статистикой на домино.
     
  9. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    То есть, как вариант, еженощно брать вчерашний текстовый файл лога домино и скриптом его распарсить, вытянув оттуда необходимые данные, верно? А для простоты исключить из этого лога запись туда запросов картинок и ботов в настройках сервера.
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    домина не нужна
    нужен nginx
     
  11. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    еще как можно
    только насколько это будет оптимизировано, будет зависеть только от вашего знания механики сервера

    как минимум domlog.nsf положить на отдельный SSD как и TL
    вот это уже будет шаг на встречу оптимизации ;)
     
  12. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Настроил, чтобы домино писало в текстовый файл - быстрее получается, чем в nsf. Также в настройках указал, чтобы не писало загрузки картинок, файлов, js. Еще думаю заодно исключить из лога ботов.
    А винты поставил изначально sas с зеркалированием.


    Спасибо за рекомендации по поводу разборки именно лога - стер эти громадные базы нафиг :) в которые писал детальную статистику. Стало работать быстрее в частности и в целом.

    Осталось разобраться с месячной статистикой. Пришла мысль опробовать для этого профильные документы. Вроде как они в памяти постоянно висят.
     
  13. Gandliar

    Gandliar Well-Known Member

    Регистрация:
    16 фев 2004
    Сообщения:
    222
    Симпатии:
    0
    Перевел подсчет месячной статистики на профильные документы. Работает быстро.
     
Загрузка...

Поделиться этой страницей