Самые глупые деньги в вашей жизни! Криптохуйня!

Сегодня я вот такие нажил.
Мне было интересно что такое майнинг.
Я немножко помайнил. И нажил на этом кое-какие копеечки.
Я не знаю зачем это, куда это. Но оказалось что это работает.
Я чувствую себя идиотом! Самым дебильным человеком в мире. Тут заплатил — там получил.

Подмайнил я тут:

HashFlare

 

На самом деле я немного припиздел!
В новогодние праздники у меня появилсоь чуть-чуть свободного времекни , и я очень плотно задался вопросом изучения всей этой криптохуйни, не могу  сказать, что у меня есть окончательно мнение про все это, но определенное понимание появилось.

Так что возможно в ближайшее время я запущу новый проект, посвященный криптохуйне!

Хуйнаныр(0)Очко(0)

Итоги года

Предлагаю подвести итоги …

И определить. Кто у нас:

Человек года?
Упырь года?
Лучший автор модулей?
Лучший шаблон?
Лучший модуль?

 

Хуйнаныр(10)Очко(0)

Антидно

tenor

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

Ну да ладно.
Есть несколько новостей. Появился Sphinx 3.0.1 release и это  очень круто. Будем его раскуривать плотно в ближайшее время.

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

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

Что же хорошего то стало в фильтре?

Во первых в нем пропали огромные кеши, вместо них появились нормальны атомарные запросы. Во вторых появилась действительно правильная реализация посадочных seo-страниц. Т.е. ссылки на сеостраницы есть ровно там, где вы их создали, остальные ссылки ботам не доступны. Вощим фильтр стал быстрый и сеокошерный. Недавно обновлял его на магазине в 30 к товаров, обновление дает прирост в скорости в два-четыре раза (без моего тюниха не обошлось канеш, но и «из коробки» быстро).
Меня канеш удручает его унылый внешний вид, удручает неинтуитивная админка, но внешний вид легко отрисовывается под дизайн, умеючи, а админка — так с ней в принципе можно разобраться.
Вощим однозначно рекомендую к использованию.

Кроме фильтра. Есть отличный, я бы сказал отличнейший модуль рассылок.
Почтовая рассылка PRO для 2.x.x  от Shchs.
Вы спросите что сделал мне такого автор, что я его упоминаю. ровным счетом — ничего.
Я несколько раз сталкивался с его дополнением. Все баг-репорты были приняты на ура. Критичные ситуации разобрали обсудили поправили. Никакого негатива и звездности. Корректно и вменяемо. Рассылка — это не просто, очень непросто. Я видел состояние модуля год назад  и сейчас — земля и небо. Доделано все по уму и постоянно доделывается.
Вот так надо работать, беретесь за сложную тему. Изучите ее и дорабатывайте планомерно. А не строчите дерьмофиксы каждые два дня.

И еще один пример хорошей реализации. Это Geoip pro от Progroman.
Что же тут хорошего спросите вы?
Ну во первых, я ни разу не видел чтобы эта хрень глючила.
Во вторых, у нее классный инсталлер (там большая база и инсталлер сделан вот — как бабка прописала).
В третьих, сам код модуля написан на очень хорошем уровне и любые допилы дописки к нему — как два пальца, несмотря на то, что основная библиотека закрыта ионкубом.
Ну и в последних версиях нет ебучего Jquery UI наконец то. Наконец то стало можно отключать попап  «ваш город Верхнезалупинск, мы угадали».
Внутри отличная реализация гео-редиректов на поддомены, отличный механизм связи Maxmind-геозон с геозонами Opencart и хорошая реализация с чекаутами.

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

Вы спросите где же в этом списке мой друг МракиМрак. Ну так про него все все и так знают, он написал чудоюдонеповоротливый велосипед в котором он сам не может разобраться. И егойный блог — это ужос ужос. Ну и про него вы все все и так знаете))

Вощимта как то так)

Ну и на затравочку, еще один анонс поста про один нагруженный проблемный магазин:
20к+ уник хостов в день, практически реал-тайм апдейт цен-наличия. 100к товаров. 250-500 человек онлайна. И вот как можно вдеть на графике, после оптимизации и настройки еще и 180 000 pageview от гугла за день прилетело. А если посчитать общий трафик с ботами получится около 100 000 pageview от живых посетителей, еще столько же от яши и 180 от гугла — итого под 400 000 pageview в день, при общей нагрузке на сервер в рамках 20%, при стабильных <500 мс загрузки любых страниц без html-кешей, а главная и категории без товаров, так совсем за 200 не выходят.

stat_webmaster

 

 

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

 

Хуйнаныр(16)Очко(0)

Пост без мата

mememe

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

Пришел ко мне владелец магазина с проблемой. Тупит —  ужос. Сфинкс стоит. тупит валяется. Ок будем смотреть.

По вводным данным сразу запахло бедой. Одноклассник админит сервер и двое ребят с fl.ru через гит работают с магазином.  Ну и Mirohost — «отличный» хостинг.

Что в этом настораживающего спросите вы.

А плохо здесь сразу все. Одноклассник сначала вмыкнул рога. Потом клялся божился про то что все необходимые библиотеки установлены. Потом таки дал какой то sudo с ограниченными правами, с которыми толком сделать ничего нельзя. И он никакой ответсвенности не несет — ему ничего не применишь. Когда сервером занимаются админы хостинга — они как роботы их главная задача делать, а не корчить морды с заявками — буду не буду. Я занят и так далее…

Никогда, запомните, никогда не работайте с друзьями за бутылку, особенно если это админы.

С админом мы решили быстро, мы просто съехали на hostpro.

А дальше начался ад и Израиль. Кроме гита в проекте чудесным образом обнаружилась куча библиотек загруженных композером. А также нашлись интересные патчи. Вместо /catalog/controller/product.php у нас возник /catalog/controller/modified/product.php. Окмоды, стандартные расширения, критичные обновления дополнений. Да о чем ты шепчешь. Мы ж работаем через git! У нас контроль версий. У нас обновление пакетов при помощи Composer с Packagist и с нашего собственного репозитория в BitBucket.

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

Кроме того, по большому счету, если psr-4 библиотек надо чуть больше чем одну — их можно спокойно скопировать в папку vendor и следить за обновлениями. В Opencart есть механизм autoload, который подхватывает все на лету, единственное все названия файлов надо в lowercase.

Но вот с BitBucket возникла вишенка на торте. Зачем-то.. У меня разные версии — каждый придумает сам. Но зачем-то они тащили несколько собственноручно написанных библиотек с собственного непубличного репозитория с доступом по паролю. На бесплатный github — выложить не судьба. И вот тут вопрос. Если с вами рассчитались. С какого перепугу пакеты грузятся с закрытого репо?

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

И еще момент парни заявили мол так и так у нас работает сфинкс все в порядке — а поиск 2-3 секунды. И они же сделали модуль, который в результатах поиска выводит категории в которых есть искомые товары. Но… чудо-люди. Сделали этот модуль на mysql, и знаете, лучше бы про сфинкс они просто не заикались.

А еще. А еще ну просто Ocfilter c вареза, который продали владельцу магазина как лицензионный.

В конце концов мне стало совсем интересно, я посмотрел в их Git. А там потрясающий по скорости  темп разработки. Две строчки кода в неделю. Зато к каждому коммиту комментарии. И таки «мы ж сделали уже 290 коммитов» и так каждый коммит — 2 строчки. А делов то было развернуть готовый шаблон и перенести все с 1.5 на 2.3.

У меня вот тут возникает вопрос. Почему люди не ходят к паталогоанатомам лечить зубы. Ведь у них тоже мед образование, все дела.  Почему когда болит зуб человек идет к стоматологу. Как можно было связаться с совершенно непонятными кожаными мешками с fl.ru которые может быть и имеют какое-то представление о php и новых стандартах программирования, но не имеют ни малейшего представления как работает Opencart.

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

А ничего не делать — сухари сушить. А ведь магаз успешный и торугет неплохо. Зачем надо было взводить себе ружье и практически спускать курок стреляя в ногу — у меня нет ответа.

Что делать в такой ситуации?
Ну как бы я заведомо мудак в глазах этих персонажей. Я самый умный, не могу себе сложить цены и так далее. На это мы внимания не обращаем. Но категорически я буду настаивать на том, чтобы эти подрядчики провели рефакторинг своих доработок вернули всю файловую структуру движка в default, и все доделки оформили модификаторами. Собрали все сторонние пакеты в stand-alone, убрали все обращения к сторонним репо. Ну и от одноклассника-админа удачно сбежали в пользу hostpro. Правда они оказались как и все сказочниками и vps в Украине у них нет, но иногда у них бывает нормальный саппорт и хотя бы это хорошо.

Очень хочется пожелать парням 1000 Марселасов Воласов в одно лицо

zed

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

Хуйнаныр(13)Очко(0)

Анонсы статей — для самого себя чтобы не забыть

1 — spl_autoload в версиях 2х и тормоза. По моему я на грани обнаружения суперархитекутрной ошибки.

2 — методология поиска косяков по методу Брюса Ивановича Ли, там где никто не смог.

3 — Наверное первый раз я сам про себя напишу отзыв, или как у меня получился проект, который на холодную без всяких кешей при 100 000 товаров отзывается за 100 мс, и чего мне это стоило.

А вы пока расскажите, как там у вас дела к новому году продвигаются, телочкам брюлики-айфончики приготовили? Телочки, вас мало но вы есть, я знаю, уже знаете какой формы снежинку на лобке выбреете для вашего пупсика под бой курантов. Вот я так и вижу. Каталина себе выстрижет нежное July на фоне сердечка. А луис — какое нить слово Prana стилизованное индийской вязью. А жена шопутилса 12strun, по моему пизду ваще не бреет, потому что она мужик.  И шопутилса на новый год ждет новый свеженький СТРАПОН!.

ЧЕ как ваще? Путин заебал? Порошенко заебал? Работа гавно? Собчак- лошадь? Навальный — гей? Извиниться ли на всякий случай перед горным народом за то что дрочил с 12 лет?

Хуйнаныр(13)Очко(0)

Если звезды зажигают, значит это кому то надо….

Но вот хер пойми кому.

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

Самая паскудная категория — это администраторы linux-серверов и «я не владелец магазина, я не приинимаю решения».

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

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

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

В продолжение темы.
Перед новым годом происходит какое то обострение в головах.
Был такой себе парень DEEMAN, был он беден и никому не известен, сделал клиенту магазин, клиент попросил одностраничное оформление, наш герой кряхтя сделал модуль и пошло. Наверное процедура оформления важна. Я не спорю. Наверное наши люди не такие тупые как американцы, которые почему то могут спокойно заполнить сегментированную форму, а наши нет. Но в банкомате блядь деньги даже бабушки с альцгеймером с карточки научились и ничего. Но суть не в этом. Раньше диман вроде был вмнеямым перцем.  А тут как напродавал модулей началась ебала. То там косяк то тут, нахуевертил вместо простого понятного модуля конструктор, в котором черт ногу сломит, и пользуясь отсутствием конкуренции сидит не свистит в хуй.
Приходит ко мне старый клиент и говорит мол так и так. Везде оформляется в хроме не оформляется. Бля буду. Диману пишут — тот на хуй — обновляйте, у вас косяки хуесяки. Обновлять нихера нельзя, так как диз запилен под конкретную версию. Разбираться парню в лом. Тексты ну ахуеть — я блять вам буду раз в сутки отвечать. Да посмотри ж ты ебана рот косяк там и там из-за того и из-за того. Модуль закодирован. Лазить  с бубном ну в рот ебалось если ты знаешь свой код как пять копеек. О чем говорить глянул -увидел проблему да забыли. Нет же…
ЕСЛИ ВЫ БУДЕТЕ МЕНЯ В ТОМ ЖЕ ДУХЕ ЗАЕБЫВАТЬ — ОТВЕЧАТЬ БУДУ РАЗ В СУТКИ. Это называется Борзый петух. При чем вот с хуяли. Зарабатывал ты 5 лет назад три копейки, бегал бы за каждой просьбой. А теперь взлетел и зазнался. Пока что не зашкварился только Usergio c его парсером и всегда оказывает посильный саппорт и реагирует на багфиксы.

Вторая ситуация. Опять же старый знакомый пишет — переехал на 2.x версию у меня два программера работают через GIT, через гит блять на опенкарте. А Ocmod, чем вам не гит. Ебать молотить. Сука сука. Ну да ладно еще у него одноклассник сисадмин. Рут не дам, то не дам это не дам, этот пакет ставить не буду, тут не то, там не это. Ебаный ту сука конченный сисадминский олень, поймать бы тебя в подворотне, да начистить ебальник. Ебет тебя буду не буду, надо  не надо, ты специалист  в opencart — нет, ты несешь финансовую ответственность за магазин нет. Ты сука ебанная тупая обезьяна, замены тебе на фрилансе — ЛЕГИОН! Сиди блядь тихо и делай то что от тебя требует. Ты за это получаешь деньги.  Обычно я такие проблемы шлю лесом. Не дадите — ебитесь сами. Но тут позитивный тип, отказать в помощи как то невдобно. Поэтому я думаю что все будет хорошо. Пока не могу раскрывать тайну про развитие ситуации.

Третья ситуация. Очень большой магазин. 100к+ товаров. Постоянные обновления. Выделенный сервер. Специально нанятый штатный программист и штатный сисадмин. Та же хуйня. Фтп блять полдня рожали. Полный доступ в админ с 20го раза, и то после пожелания, чтобы они всю жизнь геморрой лечили по фотографии.
Предыстория, сначала приходит программист — мол так и так. Магаз тормозит. Не смог он найти со мной общий язык. Ушел. Слава богу отдал контакт владельцу, с которым мы нашли понимание моментально. В общем сука чате с владельцем и двумя парнями из ларца одинаковыми с лица мне пришлось вынимать раскаленными клещами доступы.
А оказалось почему? Да потому что  последние три месяца они дули в уши хозяину что с проектом все в порядке. Сервер заебись, с кодом все заебись с базой заебись — и это просто черная магия виновата в том, что уже три недели нет возможности добавить новый товар. У владельца падает трафик, падает выдача в поисковиках, новый год  на носу, надо нарубить бабла на год вперед. А наши парни «все в порядке» пиздят как дышат. Получив доступ к проекту. Оказалось что с базой пиздец. По коду работать и работать. Сфинкс стоит — но не работает. И сервант — какой то древний на древних HDD, и filesseek операционной системы для поиска сверки дат изменений изображений занимает полсекунды. А еще полсекунды поиск-чтение кеша сео про. Вобщем делать там было особо не хуй. Приговор — сначала менять сервер, а потом все остальное.
В ответ:

[13 декабря 2017 г. 11:41] 500 мс. на сканирование картинок — это какая-то архитектурная глупость — зачем их сканировать каждый раз?
Ну а так — нормальный результат жля такого кол.-ва файлов в папке. ССД да, помогут для таких вещей.  Думаю процентов на 10.
[13 декабря 2017 г. 11:42] а вы «другой сервак» нагрузили нужным количеством запросов?
[13 декабря 2017 г. 11:42] на пустую он и на телефоне быстро бегать будет
Центос сам по себе ничего против не имею. кроме неудобства, но то мои проблемы.
МарияДБ для ИнноДБ на МОИХ тестах проигрывает Перконе, при чем порядочно.

Слушайте господа. Ну если бы я был зеленым студентом, я бы расстроился. А тут походу чувак получает ахуеть откат с хостинговой компании за проданный сервант и боиться потерять свою тыщу долларов в год.
По факту — ебет тебя глупость или умность, есть рабочий проект. Который надо не переписывать архитектурно, а создавать ему нормально окружение.
Тестовую площадку мы развернули на сервере, где живет 20 штук живых магазинов, общее количество товаров превышает миллион. И просмотров страниц в день от ботов и людей 250-300000, так что был нагружен по самое не хочу. И знаете что. Разница была 1300мс и 180мс. 7.5раз — только за счет изменения окружения. А дальше вишенка на торте. Percona у него 10% на тестах выигрывает для innodb. Ну ахуеть же теперь. Там innodb таблиц до меня и рядом не было), пришлось их сделать, так как товары постоянно обновляются-добавляются и innodb позволяет это делать без лока всей таблицы.  И 10% общей мизерной разницы, при общей проблеме сука в секунду плюс. Да я бы сука такого лоха на хуй уволил с запретом доступа к серверам клиентов пожизненно. Ну и я уже молчу о том, что новая более мощная площадка, которую мы подобрали владельцу, ему обойдется в $70 в месяц а не в $180. И за год он увидит бонус на красную икру в размере (180-70) * 12 = $1320.
А теперь внимание вопрос знатокам, точнее два. Как вы думаете сколько бы еще владельцу магаза лили в уши сказки про «все в порядке» и как долго он верил в эти сказки не свяжись со мной? Ну и по итогу надо отдать должное штатному программисту. Он сделал все что былов его силах на этом проекте, просто про остальные косяки ему негде было взять понимание. А вот сисадмин по классике ведет себя как гнойная жаба.

Друзья мои, если у вас проблемы — не ждите волшебника в голубом вертолете. Их не бывает. Для всех поработчиков-разработчиков-подрядчиков, вы дойная корова. А если у этих персонажей еще и звезда во лбу — вы дойная корова на которую можно положить хуй и глумиться. Вникайте в ситуации. Добивайтесь необходимых вам результатов. Автор шаблона написал хуергу, которая не работает — на тебе отзыв на всех торговых площадках. Фрилансер затупил — на тебе мину репу на фл.ру. Подрядчик с опенкартфорума косячит — динокс всегда на связи. Видите что происходит косяк — привлекайте сторонних аудиторов. На форуме достаточно вменяемых специалистов, чтобы решить и разобраться в любых задачах.

Но реально я от сисадминов устал. Чем больше я с ними сталкиваюсь, тем больше мне хочется чтобы они все прошли через подвал Зеда, как Марселас Волас!

zed

 

 

 

Хуйнаныр(9)Очко(1)

Убить их всех на хуй!!! (обновлено)

Как я и предполагал. Зловред сука оказался зловредным.

И вместо того чтобы перевезти товарищей на adminvps и забыть про проблемы, я решил чпокаться дальше на гавнохостинге.

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

Также напоминаю, что проект у нас живет на гавно-спейс-вебе, на самом дешман хостинге и никакие ip-tables и нативные nginx-файрволы нам недоступны.

Поэтому за неимением дворника ебем горнишную.

Делаем вот такой типа firewall в догонку ко всему предыдущему коду и подключаем его в index перед $registry->set(‘db’, $db);

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

Это быстрое промежуточное ленивое решение по принципу за неимением дворника — ебем горнишную.

 

Upd — не сдержался я, дописал немного лАвушЬку.
Сделал отлов за короткий период — типа более 10 запросов с одного айпи за последние 20 секунд. Добавил в robots сrawl-delay: 3, чтобы не схлопнуть че лишнего, хотя ботов мы пропускаем. (для ботов кстати есть очень кошерные методы проверки — читаем гугл доки).

А также сделал проверку на ajax, чтобы юзвери не понакручивали сами себе блокировок.

Отключив фильтр по странам, за 10 минут поймалась вот такая рыба:

117.78.42.55
121.31.103.73
213.37.198.221
217.21.36.113
35.198.129.156
35.198.136.218
35.198.66.59
35.198.97.121
46.188.58.197
46.242.73.182
52.24.10.243

Все айпи гуглятся — и на первых страницах, либо в списках фри-прокси, либо в спам-базах.

Upd2 — прошли почти сутки.
Моя лавушька отлично схлопывает мудацкие айпи на ура. С рейтами и таймингами мы угадали.

Вот такой вот результат:

stats

 

stat2

 

И это нагрузка на минуточку с учетом того что до восьми утра трафик полноценно валил с рф-прокси.

А еще мы с господином savage4pro придумали целую методологию по обучению этой системы, расстановки баллов и статусов айпишнигам, изменения рейтов и таймингов в зависимости от этих параметров.
А еще можно на каждый заблокированный айпи чекать первую страницу выдачи гугла и обнаруживая там текст free proxy или abuse удалять его в перманент.
Вобщем ебанутым нет покоя, но как сказал недавно Андрей Аксенов (автор сфинкса) , к сожалению приходит время, когда приходится платить по ипотеке и opensource становиться commercial. Вот и тут: можно раздуть проект и нафаршировать его кучей логики, визуальной частью, добавить монтироринг парсинга, подключене по api к массе ipblaclist и так далее. Но в итоге эта реализация будет востребована может быть раз в год каким-то беднягой.

Намного бабловее взять сделать еще один обратный звонок или быстрый заказ, назвать его СУПЕРМЕГАУПРВАВЛЕНИЕТОРГОВЛЕЙ и платить ту самую абстрактную ипотеку.

Хуйнаныр(9)Очко(0)

Убей убей их всех!

В продолжение истории борьбы с непонятным трафиком.

Блокировки азиатских стран хватило на сутки.
Зловреды поменял пул проксей и сегодня прилетеле еще более дикий траф с Европы и Америки.

fuckin_fuck

Пока я спал, владельцы самостоятельно заблокировали все страны кроме РФ по айпи — но это несколько неправильно. Так как список постоянно обновляется и все таки лучше рассчитывать на MaxMind а не на непонятные подсказки с Toster.ru, во вторых боты могут стучаться откуда угодно и их надо пропускать.

Пришлось переделать конструкцию:

Дальше, если придет опять нагрузка — ее надо уже будет мониторить вручную, и блочить айпи руками, если пойдет нагрузка из рф. Зловред может подделать заголовки USER-AGENT и притвориться ботом. за этим тоже надо следить, но тут одного маленького стука в гугл хватит для прикрытия лавочки.  Ну и реально мудачье в space-web могли бы почесать хоть немного жопу и написать маломальские анализаторы ддоса.

И еще, если вы соберетесь проворачивать подобные ситуации на своих магазинах. Обязательно проверяйте результат через host-tracker и смотрите ответы через «посмотреть как гугл-бот, посмотреть как яндекс-бот», потому что можно одним взмахом пера закрыть полностью индексацию.

UPD.

Тут господин Soor навел меня на мысли вопросом откуда они берутся. Мы  же не одни такие, людей страдает много, поэтому гуглим зловред-айпишники, с которых больше всего запросов…
Находим их в спам базе https://stopforumspam.com/ и блокируем как то так:

 

UPD2. Рано или поздно зловреды отьебуться. И тогда надо будет снимать всю эту трахомундию и приглядывать за нагрузкой. Снимать надо — потому что opensource max-mind база данных — не полная и можно залочить случайно приличный кусок трафика. А полная и актуальная стоит денег.

Хуйнаныр(6)Очко(2)

Убей, убей, убей. Убей КИТАЙЦА И ИНДУСА!

Пост не о разжигании межрассовых войн ни в коем случае, а как ни странно, про спасение нагрузки на магазин.

Обратились на днях владельцы магазина с проблемой: трафика 100 человек в сутки, а нагрузка запредельная. Хостинг как обычно, вместо того чтобы разбираться, собирается все заблокировать, бизнес в опасности, нагрузка на базу дикая, турбокеш не спасает.  Магазин тупит. Вобщем беда.

Покопавшись в потрохах проекта, каких то аномалий я не нашел. По мелочи: тупил сайтмап, большие картинки, пару длинных запросов, кое-что поправить в роботс. Но сохранялась дикая интрига: трафика нет. А нагрузка есть. Лезем в логи и видим, вагон и маленькую тележку запросов на /admin. Становиться теплее. Смотрим в AWSTAT статистику посещений и…. БИНГО.

country_shit

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

Пишем 5 строк кода, добавляем в index.php в самое начало и убиваем всю эту шокирующую Азию.

Закрываем админку в htaccess с доступом только для айпи владельцев.

И все… Враг повержен.

daybyday

 

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

Хуйнаныр(15)Очко(0)

Вот это seo-специалист!!!

omgomg

Просто оставлю это здесь.

В двух словах: автор этого текста за полтора года высосал из моего знакомого 3к долларов за какие то «супер услуги» в итоге загнал магазины под плинтус.  Ну и кроме этого по мелочи на одном мы выловили онлайн-майнер Monero.

Зовут персонажа Виталий Угольников — вобщем остерегайтесь!

Хуйнаныр(14)Очко(0)

php fpm + nginx vs apache + nginx

Сколько раз  я уже писал, что лучшее враг хорошего.
Есть у меня для вас вот такая картинка:

phpfpm

Слева — виртуалхост работает через nginx + php fpm, справа: nginx + apache.

35 миллисекунд разница. От 500 мс общей загрузки — это 7%.
А если у вас секунда ttfb — то это  3%, что будет в рамках статистическое погрешности.

Да — это стабильней. Да меньшее потребление памяти.
Но, в подавляющей массе серверов, которые я вижу, едва ли используется 10% процессорной мощности и 20% памяти.

За что бороться? За то что бы для любого редиректа звать волосатого админа?

Я понимаю, где можно повоевать. Бывают ситуации, когда время отклика 200 мс, и 35 мс — это уже не 5% а 17,5 — и это существенно.

Но в массе, даже не пытайтесь. Это экономия на спичках.

И еще вы спросите — почему 500 мс, почему не очень быстро?
— Да потому что проект в работе и все тюнячки еще ему не прикрутили.
А еще там php 5.3 + xCache, гавносервер от ukraine.com.ua на железе, подобранном на европейской свалке, древняя убунта и ноль желания обновлять серверное окружение.

 

Хуйнаныр(5)Очко(0)

Синдром пургена

purgen-01

Не могу я с вами не поделиться одним интересным наблюдением.

Как-то в последнее время у всех вокруг стало много странных персонажей обращающихся за услугами с совершенно однотипным диагнозом.

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

Как я себе это вижу. Приходит пациент к доктору, мол — голова болит.
Доктор в ответ — не вопрос вот вам аспирин.

Да да, доктор спасибо, все устраивает, но я пурген пил, как считаете, если я дальше пурген буду пить у меня голова пройдет?

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

Что с ними делать то?

Хуйнаныр(12)Очко(0)

Размышления о человеческой жадности и глупости

densy

Как известно — деньги не пахнут. Но не для всех.

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

По донесениям моего ЦРУ, авторы из 5 популярных шаблонов были пойманы на воровстве чужого кода и крепко поплатились большими отступными. Пару человек ловил я собственноручно, но источники кода были буржуйские, и претензии было предъявлять некому, поэтому мы просто настоятельно рекомендовали персонажам закрыть дыры, что они, поджав хвост, судорожно бежали делать.

И вот казалось бы… Компенсации за ворованный код составляют очень внушительные суммы. Репутация несколько раз висела на волоске. Все они друг про друга все знают. Но их ничего не останавливает.

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

Меня в целом волнуют другие вещи. А именно:

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

2 — Общее негативное впечатление, которое создается у людей про Opencart после использования такого род гавноподелок.

И да… пальцем я ни на кого показывать не буду. Я думаю все итак все поймут.

Частично, я наверное знаю ответ на первую ситуацию. Как я вижу себе это все. Есть некий мальчик Иннокентий из  Усть-Пиздюйска. Прыщавый, толстый, закомплексованный, бедный. От безысходности попал он на форум и начал бегать  в лички предлагать свои услуги за пять копеек всем в личку. Потом, сделал пару кривых, ели работающих дополнений. Потом поймал жирного заказчика, долго и нудно корпел над проектом, получил кем-то нарисованный макет в PSD, отверстал его. Ели ели сдал работу, и решил. А почему бы не продать эту срань как шаблон. Собрал, вывалил в продажу. И бля не покупают. Потому что, таких же шаблонов уже 10 штук. Написал Акция, поднял цену в три раза и поделил на три. Ок. начали покупать. Но у конкурентов покупают лучше. И что они делают. Берут разбирают какой-нибудь буржуйский шаблон с темфореста, воруют в наглую код, фаршируют и делают 1000 в одном.

tetris

 

Помните… Вот у них в детстве вместо нормальных компьютеров. Был только такой тетрис. И по другому они не умеют. Но.. за этот тетрис они хотят 2-3-4000 рублей.
Все смотрят на Journal и оправдываются — вот у них же десятки тысяч продаж. При всей моей нелюбви к Journal. Он сделан круто. Там есть четкий баланс между изменениями исходного кода Opencart и собственными свистелками. Все внедрения сделаны максимально аккуратно. Их много. Совместимость так или иначе падает. Но они не критичны.

А что же делают наши герои. Да им плевать на всех. Конфликт с Simple — возьму раннюю версию simple, переименую классы, назову суперфастренастоформление. Конфликт с фильтром, украду раннюю версию фильтра у Ведьмы. Будет мойсупергавнофильтр.
Я уже молчу, про то что на десяток шаблонов у всех удар в удар стили меню, украденные с XDS, который в свою очередь украл их у ULMART.

Наверное внешне — это выглядит хорошо, пользователь получает сразу такую няшную хератень, которая полностью готова для старта. Бери и торгуй…..

Но сука.. они же тупые кожанные ублюдки. Они все делают в одиночку. У них нет команды тестировщиков. У них нет опытных оптимизаторов, дизайнеров, все эти недоконструкторы глючат. И демоны хуярят новые версии и апдейты каждый божий день. Приходит клиент купить готовое решение — а оно жидкое как понос. И вроде заплатил бабла. Но плати и плати кому-то за обновления. Мало того, зачастую обновления подразумевают практически полную пересборку магазина с нуля, а многие шаблоны настолько перекраивают стандартный набор кода движка, что задача по интеграции других дополнений, превращается в квест, который по времязатратам такой же, как написать тот же функционал с 0.

А еще вся эта гиперебала в большинстве случае страшно тупит. XDS — какой бы мудак он ни был, вовремя остановился на изменении базовой структуры шаблонов. И у него из всех улмартоподобных высеров, получился самый беспроблемный. Все остальное — это полная блядская дичь.

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

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

Хотите больше заработать. Пишите качественные дополнения и продавайте их отдельно. Модули блять — это модули. Они должны быть в разделе модули в админке. А  не где то на 32ой слева вверхку вложеной вкладке в настройках хуй пойми какого шаблона.

Реально как вы заебали, пиздить, писать дерьмовый код, запросы, которые на 1000 товаров выполняются по 30 секунд, делать дырявые формы, через которые фтп и база угоняются в два клика.

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

Завязывайте блять с этими бесконечными апдейтами. Не ебите вола — нанимайте тестеров. И делайте плановые релизы, а не затычки в каждый менстряк.

Завязывайте пиздить — все равно все вылезет.

Завязывайте лепить гавносамолеты. У вас не получается.

Переставайте быть чертями — делайте бизнес с человеческим лицом.

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

И это не Opencart дерьмо. В данном случае Дерьмо — это вы! Потому что всеми этими вшивыми мелочными действиями, вы рубите сук на котором сидите.

 

Хуйнаныр(24)Очко(7)

Magic Filter подводим итоги

В продолжение поста про sphinx фильтр.

Итак. Простите за задержку. Цифры у нас вот такие:

timing

 

Я же говорил, многие про меня плохо думают ну какие 2 секунды, разводил бы я этот огород ради 2 секунд? Получились действительно нереальные цифры (НА ХОЛОДНУЮ. КЕШИ НЕ ИСПОЛЬЗУЮТСЯ ОТ СЛОВА СОВСЕМ). Данный показатель можно еще уменьшить, если поместить набор значений без выбранных параметров в кеш. При чем в кеш необходимо будет помещать только такие базовые наборы на каждую категорию — но про это позже.

А теперь давайте с результатами розыгрыша сборки.
Я собрал в кучу результаты комментаторов и вот что получилось:

res

Byba, Kabantejay и ВасяХуйкин оказались ближе всех, и им отваливается по лицензии сборки opencart.pro. Для получения — обращайтесь к нам на форум к Admin.

А теперь несколько слов про то как эта магия работает:

Все данные с атрибутами определенным хитрым образом преобразованы и загружены в индекс Sphinx. Вся выборка группировка значений происходит при помощи SphinxQl. В целом это почти mysql-запросы, но с некоторыми ограничениями, из-за которых я себе месяц ломал голову, покуривая мануал, в попытках их обойти — и таки получилось.

Часть данных в виде базовых справочников, определяющих типизацию наборов, забирается напрямую из Mysql, а потом под набор параметров из сфинкса выгребаются сгруппированные значения.

Значительного прироста скорости удалось добиться за счет, отказа от сортировки наборов на уровне хранилищ данных, вся сортировка ушла в php.

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

В теории, при помощи подобного механизма, можно реализовать достаточно быстрый фильтр  исключительно с использованием MySql, а с нововведениями в 5.7 — очень очень быстро. Но пока не доходят руки поэкспериментировать. Необходимо доработать существующий прототип до «коробочной версии».

Пока я не решил пойдет ли данная поделка в виде «коробки» с услугой установки. Либо же останется реализацией для «ближнего круга». Если Динокс и 19ый мне прогарантируют эксклюзив и соблюдение авторских прав на торговых площадках, пойдет в коробку, но шансов мало, так как мне очень не нравиться тенденция попустительства к ворам, которые слизывают удар в удар идею, переписывают название переменных и с пеной у рта кричат — это мы все сами. Пока такая практика будет присутствовать, подобные наработки будут реализовываться только в формате из рук в руки.

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

Скорее всего будет коробка, которая будет работать сугубо на mysql. Она будет быстрая — но таких показателей как я привел выше, достичь не удастся и рядом. Но на 5-10к товаров в категории будет самолет даже на слабых серверах. Ну и до Нового Года вестей по этой теме больше не будет,- уйду  в запил. Есть еще вариант договориться с маэстро SOOR, забрать у него весь негрокод, и просто подменить структуру источника данных. Но, я даже не пытался с ним этот вопрос обсуждать, так как к его фильтру у меня очень много вопросов.

upd. Поддержку MegaFitler сделать не удастся, так как он наглухо кодированный. И если базовые данные ему скормить — не проблема, то вот с логикой выборки-подсчета будут проблемы.

 

 

 

Хуйнаныр(15)Очко(0)

Миграция блога на AdminVps

Если вы заметили, то последнее время бложик крепко вываливался в 503 ошибку.
Он у меня висел в помойке на очень жовтоблакытном хостинге, там у меня древнейший шаред-аккаунт за 30 долларов в год, на котором у меня живут всякие непришейкобылехвост проекты.
То ли это проделки гомосексуалистов-хейтеров, то ли магнитные бури, то ли парни на ukraine.com.ua в край зажрались, но что-то явно было не так.
При чем тут по принципу сапожник без сапог. И серверов, куда можно съехать как грязи, и делать это не долго, но лень матушка — она такая. Вобщем терпел я до последнего, пока не нарисовалась вот такая вот картинка:

time

Что это такое? Откуда? Кто виноват — у меня не было ни времени ни желания разбираться. Собрался я с мыслями — и переехал на AdminVps. Тут у нас такая картинка:

time2

Да да. Я в курсе что что-то жрет память, я даже в курсе что. Руки не доходят пофиксить.

Но у нас теперь https + http2 и 503 как в страшном сне.

И еще. Я не делал плавного переноса на https, ничего не редактировал в вебмастерах. Я просто тупо сделал редирект  и все. Так как в блоге основная аудитория — это постоянные читатели, париться мне за какой то поисковый трафик не с руки. Ну и интересно же сделать эксперимент просядет или не просядет. Есть у меня большое подозрение, что яша и гоша пофиксили алгоритмы миграции и при такой «ударной» технике переноса нихрена не просаживается.

Чуть позже доложу о результатах.

Хуйнаныр(11)Очко(1)

Magic Filter: 100 000 товаров в категории, 400 000 значений атрибутов, взлетит на Opencart?

Mjolnir_-_the_Dark_World

Скоро Новый Год — время волшебства и у меня есть его немножко для вас.

Написал тут мне давний товарищ, так мол и так. Магазин разросся, товаров 100 тысяч в одной категории, фильтр тупит, сервер как у Пентагона не спасат — и правда не спасает. Я запускал у себя. Ни индексы, ни сервер, ни кеширование. Фильтр не спасает ничего. Так как 100к товаров 10 атрибутов и пару тысяч уникальных значений.

И все настолько плохо, что владельцы магазина собрались ехать на Битрикс (Хиросима привет, ты не один такой потерпевший). Я прекрасно понимаю, что даже не все программисты понимают, что на mysql в существующей структуре данных Opencart сделать быстрый фильтр, работающий быстро «на холодную» по такому набору данных практически нереально.

Читать далее

Хуйнаныр(12)Очко(2)

Быстрый магазин и общие настройки как сварить? (чеклист)

warim

Возьмем среднестатистический проект на 5-10к товаров, который вроде как-то работает, и может даже в котором «специалисты уже что-то делали», или сервер оптимизировали согласно рекомендации хостинга.
Я еще не видел магазина, в котором мне нечего было бы покрутить.
Всегда народ что-либо упускает.
Давайте разебермся по пунктам что вам надо крутить, чтобы не болела голова за потерянные заказы и уходы клиентов.
Зачастую ведь кажется что у вас все хорошо, но даже повышение конверсии на 5-10% за год превращается в приличные деньги, поэтому любой оптимайз — это чистая прибыль.

Магазин у нас состоит из трех основных собственных компонентов (сервер, база данных и php-скрипт) и сторонних сервисов (аналитика, онлайн-чаты, различные api перевозчиков, доноры данных и так далее…)

Если на сторонние сервисы мы можем влиять достаточно опосредовано. То внутренние находятся у нас под полным контролем и мы можем делать с ними все что угодно.

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

Давайте начнем с сервера и того, что можно с ним сделать:

1 — У нас есть наш айпи. Его нужно проверить по спам базам, настроить ему PTR и проверить доступность магазина из мира через host-tracker.

2 — Сразу настраиваем бекапы. Неважно какая у вас панель, операционная система — настраиваем бекапы и проверяем, как они работают. Люди деляться на три категории: тех, кто не делает бекапы никогда, тех, кто делает бекапы, и тех, кто проверяет поднимаются ли из этих бекапов данные.

3 — Настраиваем почту. Как это сделать  я уже не раз писал.

4 — Закрываем на хрен, все что можем закрыть порты ssh, убиваем ftp, убиваем phpmyadmin, отключаем лог ошибок php.

5 — Проверяем включен ли Opcache для PHP и если не включен — включаем.

6 — Версия PHP. Не гонитесь за седьмыми восьмыми айфонами. 5.6 — стабильная работает, в ней в коробоке есть opcache и по скорости для Opencart она не отличается от 7.x, но вы избегаете массы конфликтов.

7 — Ставим библиотеки для оптимизации картинок imagick, optipng, jpegoptim.

8 — Ставим memcache или redis.

9 — Включаем Nginx, настраиваем кеширование-сжатие статики, проверяем в гуглпейджспиде.

10 — Включаем http2, если у вас старый nginx, обновляем, проверяем наличие openssl 1.0.2 (из консоли nginx -V)  и проверяем работу http2 этим сервисом.

11 — Если совсем извратиться ставим Mariadb 10 (она поддерживает full-text индексы для inno-db таблиц, нужны для некоторых модулей поиска и для megafilter pro plus). И вносим в конфиг сервера mysql, минимальные тюнинг-правки (поддержку больших пакетов, увеличиваем размер буфферов для ключей  ну и по мелочи таймауты уменьшаем типа, чтобы вдруг чего база не ушла в глубокие думы). Очень полезная статья на хабре.

12 — Если совсем шибко хочется извратиться, вкручиваем php-fpm и вырубаем apache и оставляем связку nginx+php-fpm. Мероприятие само по себе без навыков стремное. Но если вы хотите быстрее быстрого и стабильно — не помешает. В итоге экономия на спичках в 50-60 миллисекунд на ответе сервера. Но кому то бывает надо. Вот тут, нормальный рабочий конфиг, правда ему там надо еще дописать www на без www и исключение дублирующихся слешей. И еще. Проверьте, чтобы виртуалхост работал через сокет а не чере tcp-порт. Через сокет получается быстрее.

13 — Смотрим  в логи ошибок вируталхоста, видим кучу ворнингов про upstream, которому маленький размер буфера. Идем в конфиг NGINX и добавляем ему размер буферов. Также не забываем про количество workerов, которые делаем равными количеству ядер.

14 — Ставим сфинкс. Сфинкс желательно ставить, не тот который  в ваших репах. А последний с официального сайта. Я на свой страх и риск в последнее время пользуюсь 2.3 Beta. Пока полет нормальный, но мне нужны кое-какие фичи именно из этого релиза.

15 — Если еще раз, ооооочень сильно хочется извратиться, подвешиваем сесии в memcache. Польза будет на большом трафике от 2-3к посетителей в день, и польза незначительная. фанаты рухайлоад ,могут почитать подробнее на рухайлоаде.

Теперь перейдем к базе.

1 — Индексы. В последнее время, все стали умные, начитались про индексы, а еще более умные наделалил недоделанных калек с бесплатных модулей, которые типа сейчас оптимизируют переоптимизируют все и вся. Должен вас расстроить — не соптимизируют. Есть несколько сложных запросов, которым крайне мало индекса на все id, а для их быстрой работы необходимы составные покрывающие индексы на десяток таблиц, о которых ни один модулепейсатель и оптимизатор даже не подозревает, и это только для голого движка. А там где дело касается фильтров, большого количества отзывов в модуле Маркимарка к примеру (он в курсе), и большого количества заказов, там могут быть любые сюрпризы и для оптимизации работы этих задач, необходим первичный мониторинг этих запросов — а потом эксперименты, эксперименты и еще раз эксперименты, как с индексами так и с самими запросами.
Вобщем индексы надо расставить, но расставить с умом, а не как тупая обезьяна с гранатой.

2 — Innodb. Недавно я столкнулся с магазином, в котором после переноса покрашились таблицы, и я очень долго восстанавливал его работоспособность. При использовании innodb, такого не происходит. Поэтому если вы параноик — стоит перебить все таблицы в этот тип. Но. Будет потеря производительности на 5-15%, именно в результатах запросов, и проблема с full-text индексами. Но она решается — я уже писал выше как. А чтобы не сильно тупило сделайте параметр innodb_flush_log_at_trx_commit = 1 что это и зачем — читайте в мануале. Так что для использовании innodb — есть только один аргумент — это сохранность данных. Тут — хозяин барин.

3 — Сделайте оптимизацию и проверку таблиц. Сильно быстрее не станет, но дефрагментация диска всегда помогала старому пентиуму. Так что лишней не будет.

4 — По возможности проверьте весь хлам и удалите ненужные данные о товарах, атрибутах и всякую подобную лабудень. Часто бывает, когда у людей висит 2-3-4 набора таблиц в одной базе. Типа test new и так далее. Не стоит так делать. Проект в продакшне — это проект в продакшне в нем не должно быть ничего лишнего.

Теперь перейдем к скрипту магазина.

0 — проверяем права на папки. Были у меня пару раз истории, когда все тупило, ошибки выключены, магазин тупит, а просто надо было на папку кеша дать доступ.

1 — Даже если у вас нет медленных запросов, у вас может быть из общее количество в пару тысяч, и даже если каждый запрос выполняется 1 миллисекунду, то их обработка — это уже 2 секунды на выходе. Поэтому стараемся уменьшить общее количество запросов. Кешируем все что можно. Меню, модули категорий, модули хитов продаж и так далее. Первая задача оптимизации скриптов — это уменьшить общее количества запросов по максимум. Понятное дело что есть кодированные модули — но все куда дотянуться руки — кешируем, либо переписываем запросы.  Либо переписываем запросы и кешируем.

2 — Парсинг запускаем только по крону и только при помощи cli-php, никаких wget http://наш-магазин. Гоните таких писателей в шею. А еще желательно все кроны запускать ночью, если есть такая возможность.

3 — Все сторонние API, типа инстаграма — должны работать через AJAX, чтобы если инста лежит вместе с ним не лег у вас магазин, так как если вы из php стучитесь на сторонний ресурс и он лежит, то пхп ложиться вместе с ним.

4 — при желании забираем оптимизированные скрипты из гугл пейджспида, сливаем с CDN к себе локально шрифты, jqeury библиотеки, меняем все на .min, и все скрипты и стили, принудительно вписанные в  header.tpl объединяем в один файл (в два файла, один со скриптами, второй со стилями).

5 — Включаем кеши, там где можно включить, в модуле Марка. В мегафильтре, везде…

6 — Включаем поддержку Imagick и оптимизацию на лету картинок через jpegoptim и optipng. Как это сделать, я уже писал. Не забываем удалить кеш картинок и системный кеш, а потом их заново пересоздать, Xenus вам в помощь.

7 — Если хочется совсем быстро, подключаем redis или memcache, redis — предпочтительней, так как он без проблем работает с большими объемами данных и не сбрасывает их при перезагрузке, за счет использования дискового буфера.

8 — Если вы переезжали на https и использовали http-фикс, и уже переехали, желательно его выключить. Лишние str_replace  — это не хорошо.

9 — Фильтры все меняем на megaFilter  — он таки самый быстрый.

10 — Забываем про сео-фильтры, которые генерируют мусорные страницы без контента. По ним только боты шаряться и запредельно нагружают систему. В индекс такие страницы не смогут попасть, а тем более в топ выдачи. А вот санкции получить можно — как пить дать.

11 — Проверяем роботс и смотрим, чтобы у нас не было лишних открытых роутов. Идеальный роботс — это роботс в котором закрыты все get-параметры, через который роботы не смогут достучаться на любые сопли. Проверяем закрыт ли поиск, тэги, и комментарии. Я видел магазин в котором было 20 000 страниц исключенных яндексом — все это были комментарии. Поисковики очень не любят дурной контент.

12 — Проверяем доступность фидов  (сайтмап, yml) и по возможности используем только генерируемые по крону.

13 — Смотрим на размеры файлов кеша. Бывает модули генерят файлы по 20-30мб. Избавляемся от такого, так как парсинг туда-сюда.

14 — Ставим Сфинкс для поиска.

15 (отдельно по версии 1.5) Обновляем vqmod, хотя бы до версии 1.5  — дает +100-200 мс. Для магазинов на версии <1.5.6 обновляем класс работы с базой данных и драйверы mysql, mysqli, таки чуть быстрее и на 5.6 php не заведется без mysqli. Есть какая то мудацкая практика с драйвером mysqliz — но он тормознутый. Также в 1.5 — глобальная проблема с очисткой мусора в кеше. Он забивается и его надо чистить. Сделать это можно либо допиской garbage — коллектора в сам класс. Либо bash-скриптом по крону.

Наверное, я что-то упустил и местами не до конца раскрыл темы. Но вот такая вот «волшебная таблетка» выходит, которую надо съесть для качественной работы системы.  И просто «поставить модуль» отделаться не получается. Поэтому специалисты тут и так разберутся, а для неспециалистов теперь есть что предъявить оптимизаторам.

Хуйнаныр(29)Очко(0)