Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Прожектор Бритни Спирс

  • записи
    54
  • коментарів
    625
  • перегляд
    35 031

Одна история оптимизации сайта, и как не надо делать? И почему jetcache + filter viever - это путь в Вальгалу ? Часть вторая.


Yoda

3 734 перегляди

Порадовался я тут значит этой истории

Сделал промочку на вторую часть... И...  Все опять накрылось медным тазом.

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


Но давайте  с самого начала. 
С чем мы столкнулись. 
Магазин на 65 000 товаров, самая большая категория на 10к товаров, у каждого товара 5-8 атрибутов. Из бредомодулей стоит jetcache и filterviewer.

Жил себе и жил этот магазин на обычном виртуальном хостинге, пока не начал потреблять порядка 30% физического сервера хостинга, превышая в пике допустимый лимит нагрузки пакета в 10 раз. 

 

Когда я первый раз увидел этот проект, у меня было однозначное мнение, что это мертвый проект, так как скорее всего какой-то сеошник посоветовал сделать вот эти все посадочные под все со всеми и глаз пал на FV. 
В чем печаль ситуации. Этот фильтр генерит явную ссылку на страницы фильтра в формате все со всеми атрибуты, опции, и еще вот это в наличии и по рейтингу. И вместо того чтобы сделать явными только посадочные, а остальные страницы спрятать за js-редирект, а еще бы и закрыть по какому то признаку в robots, как тот же ?mfp= в Мегафильтр, viewer такой возможности не дает. Так как это же сео, это посадочные, это сеошники так сказали.
В итоге боты прриходят и застряют в этом болоте из сотен тысяч мусорных страницы фильтра, вместо того чтобы приходить на нормальные страницы товаров, категорий и руками созданные размеченные посадочные с адекватными тайтлами и контентом. Ща прибегут хейторы и скажут йода опять несет чушь. Предлагаю любому хейтеру показать мне проект, где подобный финт ушами от вивер фильтра дали хотя бы +200 уников из органического поиска. 
И еще, viver говорит, что ну че там - ну у меня ж ноиндекс на второй третий уровень вложенности. Это все прекрасно и волшебно, но для того чтобы увидеть этот ноиндекс все равно надо сгенерить страницу, а их я напомню несколько сот тысяч. На которые пришли гугл, яндекс и бинг бот.
Как говорит один мой знакомый, тут никакого сервера как у Пентагона не хватит.
Ну и поверху всей этой красоты еще стоит jetcache, который создает видимость спокойствия. Не ну а че.. Ну из файлика же быстро html подгрузился по готовому кешу. А то что 3+ секунды загрузка на холодную. Так ну то фигня - самое главное же из кеша быстро, все 5 страниц которые туда попали и еще 50 000 страниц фильтра, а нормальный контент как был туп так и остался. Как грузилась категория на 10 000 товаров 5-6 секунд так и грузится (там еще нон стоп обновления товаров) и весь jetcache ходит по бороде так сказать.
Но вот ложное чувство нормализации процесса давал.

 

 

Ок. что делать? Перенесли сайт на впс - стало хуже. Так как на шареде, можно было забираться по уши в ресурсы соседей, а тут два ядра - и только они.
И в этот момент владелец магазина обратился ко мне с вопросом, что же таки куда.

И самое удивительное, он признал с первого раза всю дичь логики работы фильтер вивер и согласился его убрать. И поменять на  OcFiltere от  @SooR.

После настройки серванта, после простановки индексов в базу, решения вопроса с кешами, выжигания filterviever и jetcache -  у нас вроде нормализовалась работа. И получились вот те графики которые были в первой статье. Но это была только прелюдия....


Вчера опять проект лег в момент попытки обновить какие-то 6000 товаров.
Начали разбираться и обнаружили падение базы. Начали смотреть почему падает, обнаружили нехватку памяти. Начали смотреть куда девается память - обнаружили оверхед потребления php-fpm. Начали разбираться почему - обнаружили, что в момент импорта-обновления таблиц mysql хоть их и не блочит, потому что innodb, но начинает подтупливать, потому что перестраивает индексы на больших таблицах. И в момент тупняка базы, становиться очередь запросов на генерацию страниц из php-fpm потоков, которые резервируют под себя память и в какой-то момент watchdog прибивает базу, как самый жадный процесс по потреблению памяти и пытается ее перезапустить, естественно убивая импорт и создавая проблемы для пользователей. Ну и оно в целом все время висит в момент импорта.


Начали смотреть внимательней, и обнаружили в логах очень много зверей типа ahrefs, mj12  и других. Закрыли. Не полегчало.

Попросил я дообавить 2 гигабайта памяти к 2 существующим на сервер. Добавили полегчало. И мало того, еще перенесли VPS на сервер с физической частотой процессоров в 5Ghz и вот тут полегчало глобально, импорт пролетел за какие-то 70 секунд. Все отлично. 

 

Прошли сутки. И сегодня опять мне прислали вот такой скрин:

 

image.png.61d0bcafd5ae82f2c3cfd600b23b4c93.png

Со словами - там в логах очень много гугл бота.

 

 

Я был готов уже проклять тот день когда я сел за баранку этого паровоза.

Но нет. Все решили. И сейчас вот так

image.png.d6047ba661fa55a6fb9ccb9e57e15676.png

И время ответа страниц без каких либо кешей 300-800 мс. С фильтрами, и всем остальным всем, что было до.

 

Вы спросите, а что же ты йода втираешь дичь. Типа. вот ты там решил потом не решил, потом опять справил и опять нет.
Ну вот такой вот я Йода, который не может предусмотреть все. 
Но если вы не хейтор, а вам интересно что же это было и как исправилось. То я вам расскажу, и это очень смешно:

 

Помните мы убрали фильтр? А помните, по страницам фильтра боты ходили? 
А теперь они увидели там 404, и что? Да пошли с утроенной силой чтобы проверить весь ресурс. На всю эту прорву мусороного контента, который был в очереди на сканирование. И был уже проиндексирован!

 

Просто всего ничего к нам зашло за день и только на html контент (обращения к статике в логе не учитываются):

 

image.png.3d1ef56aecb687296a84b2b673114fee.png

 

Удивительно, чо же там с нагрузкой. 
Ну ладно. Но у нас же проблема. Боты приходят на чпу ссылки. У нас нет хвоста site.com/filterviewer/какаятотупаястраницафильтра.

Так бы мы могли спокойно в nginx-конфиге заблочить сразу это все в 404 на корню и забыть про проблему.


Ок. Смотрим, что у нас есть в ссылках, а у нас там есть ~ в ссылках вида 
023~500-031621~sp0720-8003-ts~500-0702701~500-0702702~2140-180~2141-228~2516-240~4152-250~4155-213~kr2300-205~tstr6-762ef~500-031616.


Проверяем таблицу url_alias, там у нас символа ~ нету. Волшебно, БИНГО. Через минуту после блокировки всех ссылок с таким признаком на уровне web-сервера, наша нагрузка пришла в норму и проект зажил ровно так как и должен работать, зарабатывая владельцу деньги а не геморрой и седые волосы. 

 

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

 

UPD: прошли сутки и у нас новое бинго

 

image.png.f4061ddd0f5dd8534fa22419bf08ac63.png

 

657 мать его тысяч запросов от гугл бота..

Как это развидеть! Viiver ты что курил, прежде чем написать этот бред?

Как тебя выпустили, я не знаю откуда, но людям тебя нельзя показывать!

  • +1 9

35 коментарів


Recommended Comments



20 минут назад, Yoda сказал:

проект на 300к товаров, с ттфб меньше 300 сек без каких либо кешей.  

какие параметры сервера и количество хостов в сутки?

Надіслати
2 минуты назад, trialon77 сказал:

какие параметры сервера и количество хостов в сутки?

1 - учимся читать - выше написано сколько хостов.

2 - какая разница сколько хостов если у нас овер 100к генераций страниц и это было по моему на 7 вчера.

3 - вопрос про параметры сервера не совсем корректен. Я уже реально утомился рассказывать, что два ядра на целероне, два ядра на каком-то xeon прощлого века, и два ядра  на Ryzen Epic - это как мерседес 63 года и AMG 63 2020. Кроме того опять же все зависит от  жадности хостера, и того какой у кого коэффициент оверселлинга.
В данном случае всего три ядра и 6 гиг памяти на секретном хостинге. Такой же Турбо VPS от HostPro  не справился.

Надіслати
4 минуты назад, Yoda сказал:

1 - учимся читать - выше написано сколько хостов.

1. Уважаемый yoda, читать умеем, а вы излагать свои мысли?) 

У вас в начале поста написано, что есть сайт с фильтр бибер и 3.5к хостов орнаники и этот фильтр удалить нельзя... Пришлось оптимизировать. 

А в конце поста, вы же пишите, что есть проект, но он уже на ocfilter с 300к товарами. Естественно, можно предположить, что это два разных проекта. Или как 3.5 к хостов первого проекта относятся ко второму? 

 

Надіслати

Так какой вопрос такой ответ.

 

какие параметры сервера и количество хостов в сутки?

Где? У opencartforum, на первом проекте, на втором?

 

Ну и на самом деле - неважно. Там где 30-40к+ товаров, нагрузка от ботов на порядки превышает трафик от реальных покупателей.

 

И я еще раз, попробую объяснить, почему ocfilter работает быстрее всего остального.

У @SooR есть механика денормализации данных. Он приводит oc_product_attribute к виду key => hash(value), что позволяет обрабатывать таблицы с нормальной работой механизмов индексации базы. В MegaFilterPro есть похожая реализация, но через find_in_set(), а эта штука ну не совсем быстрая.. Все остальные же - пытаются работать по таблице product_attribute и делать агрегацию текстового поля значений атрибутов. А это очень долго. Даже если там будет FULLTEXT индекс, или перевести его в VARCHAR.


Поэтому на больше 1000 товаров в категориях без того или иного волшебства, альтернативы ocfilter из дешевых решений - нету.


Что касается фильтра бибера. Это реальное дно, которое генерит какое-то невообразимое количество индексируемого хлама вида igrushki/cena_70~16370/.
А когда бибер, говорит что там ноиндекс, то он тупорылит как маркушаналопате, так как для того чтобы этот noindex увидит ПС, надо эту страницу сгенерировать, а мы же помним, что фильтр у него тупой. Поэтому это дикая нагрузка и отдача ботам контента, который яйца выеденного не стоит в промышленных масштабах.

 

И тут в отличии от бибера, умничка @SooR делает индексируемыми только те страницы, под которые есть посадочная страница с нормальным контентом и от этого действительно есть толк. Бот ходит туда куда надо и индексирует то что надо, а не автоматически сгненерированный хлам.

Надіслати
1 час назад, Yoda сказал:

Где? У opencartforum, на первом проекте, на втором?

Вы серьёзно? По моему, там в цитате вашего поста указано, какой именно сайт интересует. 

Какой опенкартфорум? 

Ну да ладно, с вами спорить бесполезно. 

Надіслати
38 минут назад, trialon77 сказал:

Вы серьёзно? По моему, там в цитате вашего поста указано, какой именно сайт интересует. 

Какой опенкартфорум? 

Ну да ладно, с вами спорить бесполезно. 

Это хорошо... Спорить - это к Ванюкче.

Надіслати
2 часа назад, travkovs сказал:

Был у меня  опыт с этим же фильтром filterviever на этапе разработки закупил с attributextom  от этого же автора

Спарсили 5000 товаров и в течении недели сайт лег. Общее кол-во атрибутов  было порядка 700шт

Вы это серьезно?

а если я часть нашей переписки покажу -

В 03.08.2020 в 12:10, vier сказал:

если у Вас очень много Параметров, то сокращайте их (зачем иметь 10тыс атрибутов - ни одному клиенту это не понравится - выбирать из 10тыс. свой параметр).

 

на что Вы ответили -

В 03.08.2020 в 12:24, travkovs сказал:

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

 

2 часа назад, Yoda сказал:

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

почему нет желания? - от трошки мозгов я никогда не отказывался (и не бесплатно).
мне помог существенно оптимизировать запросы здесь один пользователь (за что я его отблагодарил). думаю, эта модель и есть у Вас.

 

На данный момент я еще больше оптимизировал запросы в новой версии Фильтра - версия 59, и от много чего в своем коде отказался.

 

Что касается ссылок в параметрах Фильтра, то после первого выбора параметра (настраивается в админке модуля), ссылки становятся "недоступные" для поисковиков - они их не видят и не ходят по ним.


Можно настроить так, чтоб только ссылки из Посадок были видны.

3_meta_tags.thumb.png.c7c54b7d15170552e08ebd084a7e7e7b.png

 

Надіслати
Цитата

 

Вы это серьезно?

а если я часть нашей переписки покажу -

 

Всегда пожалуйста!

 

 

Цитата

почему нет желания? - от трошки мозгов я никогда не отказывался (и не бесплатно).
мне помог существенно оптимизировать запросы здесь один пользователь (за что я его отблагодарил). думаю, эта модель и есть у Вас.

Потому что волк не тот кто покупает акции, а покупает все по акции!

Могу нагуглить по форуму несколько десятков постов с проблемами по фильтру и отзывами разрабов @spectre не даст соврать.

 

 

Цитата

На данный момент я еще больше оптимизировал запросы в новой версии Фильтра - версия 59, и от много чего в своем коде отказался.

Да так можно еще лет 20 что-то делать! Какой толк ?
Коммунистическая партия 70 лет коммунизм обещала. И все верили. Да.

 

Цитата

На данный момент я еще больше оптимизировал запросы в новой версии Фильтра - версия 59, и от много чего в своем коде отказался.

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

https://www.sostav.ru/publication/onlajn-magaziny-bolshe-goda-iskali-tainstvennogo-pokupatelya-im-okazalsya-bot-google-44125.html

 

Цитата

Можно настроить так, чтоб только ссылки из Посадок были видны.

Можно иметь любовные отношения и с полотенцем - но зачем..

Если внимательно читать что я пишу - то у нас ситуация когда этот бред нельзя никуда деть. Все.. он уже проиндексирован и за неимением дворника как говориться.

 

Что касаемое в целом концепции поделки под названием фильтер бибер - то, у меня мое личное мнение. Был паренек, который увидел что горесеошники хотят фильтр с посадочными, ну и че там, давай им в угоду, и чтобы продавалось сделаем все со всеми параметры. Сделал - аферисты начали раскупать как горячие пирожки.. В итоге толку ноль. Я много раз просил, чтобы кто-то мне показал проект, которому помог этот шаманизм хоть на пару сотен хостов в день.


Кроме пессимизации и мусора в выдаче фильтр ничего не дает!!!! И продавать такое решение - это реально преступление перед совестью.
А продавать такое решение, которое тупит как скотина - это преступление в квадрате...


И да - это все мое личное мнение...
Если хотите спорить - ванюкча вас всегда поддержит!

Надіслати
10 минут назад, vier сказал:

Вы это серьезно?

а если я часть нашей переписки покажу -

.

Здравствуйте) Серьёзно! Сейчас продолжу выкладывать для ясности!
Не знаю как у вас сейчас работает. Опираюсь на даты когда работали с вашими продуктами.
5000 товаров - это далеко не значит что у каждого товара свои атрибуты
Поделив товары на группы общее кол-во атрибутов составило около 700 разных, сначала была вместо 700 около 15000 - 20000 атрибутов потом ещё хуже, со значениями я не помню ситуацию потому как по значениям вариаций много...   Мы ещё даже далеко от посадочных были

С моим разработчиком отказались разговаривать, а я вовсе не программист, собственно для этого и нанял человека

Забрать свой продукт тоже отказались

.

image.thumb.png.45557fb557965c0e5f6af51656e10432.png

image.thumb.png.fdef37daacf122b4e861d26ed375fd15.png

image.thumb.png.f1b8c115bd32346113cd876ba6bc052b.png

  • +1 1
Надіслати
36 минут назад, travkovs сказал:

.

Здравствуйте) Серьёзно! Сейчас продолжу выкладывать для ясности!
Не знаю как у вас сейчас работает. Опираюсь на даты когда работали с вашими продуктами.
5000 товаров - это далеко не значит что у каждого товара свои атрибуты
Поделив товары на группы общее кол-во атрибутов составило около 700 разных, сначала была вместо 700 около 15000 - 20000 атрибутов потом ещё хуже, со значениями я не помню ситуацию потому как по значениям вариаций много...   Мы ещё даже далеко от посадочных были

С моим разработчиком отказались разговаривать, а я вовсе не программист, собственно для этого и нанял человека

Забрать свой продукт тоже отказались

.

 

image.thumb.png.fdef37daacf122b4e861d26ed375fd15.png

 

 

Pin on Юмор

 

Боль! боль боль!!! Вот в этом моменте увеличивайте параметры сервера.
Мальчик этот блин - реальный неадекват. Там кроме параметров сервера, чтобы такое жило, надо прокачивать все сервисы (веб-сервер, сервер базы). И я думаю что он даже не догадывается что и как необходимо сделать, чтобы БОЛЬШОЙ ЖИРНЫЙ ВЫДЕЛЕННЫЙ СЕРВЕР, смог внятно переварить 30-40 одновременных потоков от ботов на этот хлам, который попадает в выдачу.

А также, если его поделка формирует несколько тысяч запросов при генерации параметров фильтрации, и эти запросы по 0.001сек, но 2000 запросов - это две секунды.
А еще его тупорылый собственный кеш, у которого может быть пару десятков тысяч файлов, и только  на разборку кеша при каждой инициализации уходит секунда-полторы. 
И закрытый код (ну ладно крякается если сильно надо). А если обновления ?  

Реальная дичь!

Надіслати

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.