R2D2_Blog

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

Mjolnir_-_the_Dark_World

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

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

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

Читать далее

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

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

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-скриптом по крону.

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

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

Дайджест

latest-news

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

2 — чем больше мне в руки попадает магазинов в оптимизацию, тем больше я понимаю, что у меня появилось много последователей. Там-сям я вижу отголоски моих наработок, почерпнутых из блога. Понятное дело, что объять необъятное — сложно, и всех нюансов специфики настройки быстрых магазинов, еще никто не освоил. По крайней мере, я не видел магазин, к которому бы  я не мог доебаться. Но. Как-то меня жаба гложет. И есть у меня идея монетизировать особо полезняковый контент. Вот думаю я сделать раздел со статьями с платной подпиской. Левую пургу  я и дальше буду гнать как и гнал. А вот полезняк всякий, хочется продать за копеечку. Что скажете — я жадный гандон? Или может стоит мне отсыпать немного деньжат за труды? И сколько может стоить годовой абонемент на доступ в платный раздел по вашему?

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

4. Смотрю я на происходящее у Динокса на форуме, и у меня душа радуется. Не мне судить, как так получилось, но очень надеюсь, что и моя заслуга в этом есть. Но таки получилось в коммьюнити порядок. Все кто пиздили модули — получили по заслугам. Демоны с тупыми злобными постами типа pasha и компания, завалалили хавала и сидят тихо, занимаются делом. Чукча и его гав-гав-гав-свита  умерили свой никчемный лай. И произошло чудо блять. Куча народа задает внятные простые вопросы про магазины. Нет ебучих медведевых, которые в каждой коммерческой теме срали про Magento. Не слышно дебила-паши, который всех без разбора крыл нищебродами. Не видно даже обсосов софорпов-неохуео, которые дебильно спамили абсолютно весь коммерческий раздел. Нет хуй пойми каких людей в OcTeam, которые в собственных коммерческих интересах, или по пьяни банили конкурентов и неугодных. Уменьшилось количество возвратов (да здравствует нормальная политика покупок дополнений). Выплаты стали своевременны и все довольны. Форум стал похож на форум.

ВОТ ТАКИМ БЛЯТЬ И ДОЛЖНО БЫТЬ РУССКОЕ СООБЩЕСТВО Opencart.

Нормальным живым и позитивным.
Динокс — великий человек. Он смог! Учитесь у него манере ведения бизнеса.

 

UPD — и еще мне вот подумалось про Динокса. Если он когда нить будет нуждаться в деньгах — он может написать бестселлер по кризисному менеджемнту с названием «Как я чуть все не проебал и вовремя взял себя за жопу».  А еще — из него теперь получиться отличный мер Конотопа!

konotop

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

Нам пишут: РОЗЕТКА-ПИДАРАСЫ!

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

О себе: владелец небольшого интернет-магазина, в Киеве, игрушки, более 7 лет магазину, 30+ поставщиков.

Всё идет к тому, что если Вы не импортер — то Вы будете сосать лапу уже самое ближайшее время.

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

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

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

Еще случай — когда контора, называет себя оптовиком, при этом имеет 4 своих сайта — и через них сбрасывает свой товар со скромной наценкой и постоянными акциями — типа второй товар в чеке — минус 10% и тп.

Владелец одной из контор так и говорит — зачем мне другие продавцы — если розетка продает, как 70 моих клиентов. и пох, что там цена ниже рекомендованной, импортер всё равно в плюсе.

общее впечатление — что все бросились скидывать товар, а не продавать.

Поставщики стали отгружать товар каким-то мнимым продавцам на доску олкс, где отпускная цена торговцев из квартир не контролируется, потому что «я же не знаю, кто это». а проверять никто не собирается — «мне же всё равно продажи нужны»

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

Всяческие разбирательства с импортерами с предоставлением скринов с розетки о низкой цене не помогают — они пожимают плечами — «там акция» (которая уже длится 4 месяца?).

Или же цена после разбирательств исправляется — но после 19-00 и на выходных — Розетка кладет ее в пол.

Розетка на данный момент собирает 50% коммерческого трафика в Украине. и дальше будет больше.
начинает забивать сео-выдачу своими страницами — и всё чаще — когда на одной странице — несколько ссылок на этот магазин.

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

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

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

Такой же тренд и в США — 75% памперсов, 90% батареек и тд — продается через амазон, в структурах которого уже работает 550 тыс человек. Но там, хотя бы богатая страна, где разница в 5-20 долларов на чеке не отпугивает от покупки, а у нас покупатель часто может изменять решение из-за разницы в 50 грн.

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

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

The Fast and the Furious (1)

Кароч, пришел к нам человек: «мол так и так почта ебется на магазине, в Яндекс ходит через раз».
Ну настроили почту первый раз через smtp яндекса, как-то она вяло через раз пошла.
Саппорт АдминВпс мычит, саппорт Яши мычит. Все мычат. Че делать?

Настроили ее через сервант. И все стало Ок.

mail-tester-sir

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

Имеем:
ocstore 2.1 + july шаблон + turbo + php 5.6 + тухлый одноядерный сервант на AdminVps, минимальное количество товаров и время загрузки порядка 400-500мc на холодную. Как по мне — это в рамках, но владелец магазина — задрот, и хочет быстрее быстрого.

Ставим nginx+php-fpm c тем же 5.6, оптимизируем базу, делаем magick cache Катиному шаблону, ставим Redis, включаем OpCache.

И получаем 127 мс «на холодную» без глобального кеша Турбо:

sir_dom_cool

и 36 мс

sir_dom_turbo

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

Ну еще мы сделали нормальную обработку редиректов, убрали повторяющиеся слеши и еще много вкусного по конфигу nginx.

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

Так что, пока, 89 попугаев  Page Speed и 40-100мс TTFB — наше все.

sir-dom-page-speed

 

А теперь загадка.
Что можно сделать еще с этим магазином?

redis_image_cache, redis_session, php7, http2.

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

redis vs memcache в Opencart

redis

Меня часто торпедируют вопросами типа: » а если я установлю Memcache», мой магазин станет быстрее. И я всегда говорю нет.
Так как в 99% случаев у вопрошающих микромагазин, который хостится на ukraine.com.ua. А они еще те упыри и решили всем продать услугу memcache, которая типа может быть использована.

Так вот на микромагазине от мемкеша толку — нету!!!! НЕТУ!!!
И быть не может.

Чтобы вам было понятно, что это такое и зачем он используется. Что мемекеш, что файловая система, что редис — это хранилища данных по принципу (ключ)->значение.

В файловой системе ключ — это название файла — значение — это его содержимое. То же самое и в мемкеше и в редиске, просто название файла заменяется какой нить аброказяброй, которая зачастую является проивзодной функции MD5 с аргументами в виде описания признаков входящих данных, которые мы пытаемся сохранить.
Т.е. чтобы было понятно домохозяйке, кеши, которые сыпятся в подобные хранилища — это какие-то очень часто используемые данные. Если приводить простой пример таблица умножения у нас в голове — это такой же кеш. Это какие то данные, которые мы запомнили и они всегда у нас в быстром доступе. И чтобы узнать сколько будет 2+2 нам не надо долго думать, мы всегда знаем что это 4.

Вот так же и в опенкарте, вместо того чтобы искать стопицот раз в таблице с урлами значения ЧПУ, есть готовый файл уже со всем набором алиасов, и нам достаточно загрузить его в в виде массива в php, и дергать эти данные из очень быстрого внутреннего набора, а не обращаться в базу.

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

Однако. Эта технология имеет право на жизнь в ситуациях, когда кроме скорости доступа, у нас еще есть такие факторы, как время передачи данных (у нас ведь могут быть большие данные в кеше 10-20-30 мегабайт), а также количество этих наборов данных. Если у нас их больше нескольких тысяч, то доступ в памяти к такому количеству данных, в десятки раз быстрее чем в файлах.

И вот бывают магазины, у которых файл кеша с сеоурлами, весит к примеру 25+ мегабайт, или магазины с модулями, в которых какой-нибудь тупой ебливый пидар закешировал все атомарные наборы данных и запиздячил овердохуя коротких данных в кеш. И там же может быть фильтр от Soor, который своих кешей еще наработал мегабайт 60. И при каждой загрузке нам эти данные надо дернуть с диска и преобразовать из файла в php-объект. В рамках загрузки одной страницы — это много долго, и ресурсоемко. Поэтому тут нам на помощь и приходят быстрые хранилища.

У всех на слуху Memcache. Но он морально устарел — это раз. Два — при установке «из коробки» он требует недюжего конфигурирования чтобы и дыры закрыть и заставить его работать с большими данными. Но у нас есть отличная альтернатива, которая лишена этих болезней — это Redis. Мало того что у него нет проблем с размером данных, так он быстрее и обладает кучей ништяков.

Вот вы ща спросите. Ой. а у нас же у всех 2.x, а Redis поддержка только в 3.x.
На что я вам скажу, что пока вы не прочитали эти строки вы даже не знали что Даниэль сделал поддержку редиске в третьей ветке, это раз, а два. Те кто будут пытаться применять на практике мою наводку, я думаю без труда скопируют драйвер из 3.x и пихнут нужную дописку в конфиг.

За сим откланиваюсь и напоминаю, что SOFORP — жирный пидар!

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

Как идинахуй продлевает жизнь?

med_1446257083_image

Мне очень часто задают вопрос, почему я разговариваю матом, и боже боже, не понимаю ли я что это обижает людей.

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

В двух словах. Все время у людей для меня делиться на два промежутка — работать и жить.
Чем старше ты становишься, тем дороже становиться время жить.
У меня нет ни малейшего желания вписываться в «потенциальные бабловые проекты», играть на длинные дистанции и развивать кому то бизнес за процент.
Поэтому время которое ты тратишь на переговоры пусть с заказчиком но потенциальным, я пытаюсь всегда сводить к минимуму.
Мало того, по  первым двум строкам запроса на какую то задачу я уже сразу вижу человек мозгоеб или адекват.
К примеру — если вам пишут доброго времени суток, потом 100500 тысяч слов с подробным разъяснением восторженно-припезденными фразами какого то тз, а потом приписка ваще я не программист. А потом еще подпись типа. Иванов Подсос Иванович, главный на подсосе в гипесуперкопрокорпорации «вялая тень столетнего хуя», меня сразу начинает тошнить.

Хуй пойми. Вот к примеру, один мой друг, уже давно не фрилансер с фл.ру Не СОФОРПЫ, мечущиеся в каждую залупу «НАМ НЕЧЕГО ЕСТЬ, ДАВАЙТЕ МЫ СДЕЛАЕМ, НАМ ОЧЕНЬ НУЖНЫ ВАШИ ДЕНЬГИ, А ТО МЫ С ГОЛОДУ ПОДОХНЕМ».
Он забыл когда были времена, чтобы у него очередь на работы не стояла на два-три месяца перед.Он забыл когда ему последний раз говорили «а можно подешевле».
Вобщем определенным образом он достиг дзена и работает не тогда когда нужны деньги, а тогда когда есть настроение и хорошие заказчики.

И вот пишут моему другу какие-то клиенты с запросами о работах на одном форуме в личку, потом на другом. И такая вялая ебала. Да ебать у нас тут вот так.. А нам надо сделать вот так. Да еще и по тимьюверу. Ну и чуть ли не вчера. В запросе не хватает разве что текста «да мы тебя закопаем щас». Мой товарищ внятно описывает условия сотрудничества с ремаркой или так как я говорю и как надо, или никак, простите, извините. Дальше начинается ебала. Как нас великих богатых заказчиков так бортуют. Вы че.. У нас же тут ваще единственные в мире три копейки и за них ты ща ваще должен нагнуться отжаться чувак.
И начинается. Да вы что. Да нам надо вот именно так, да с нами все так работают. Да у нас тут, то это, пятое…

Мой товарищ опять пишет. Господа.. Ну вот хотите не хотите, все описано в первом сообщение, и или работаем или не заебуйте.

Эти не унимаются — мол хуй, ты че.. Ты нас ща тут разводишь, да мы сами с усами ваще грамотные. Что ты понимаешь.

Третье сообщение — товарищи.. Яс вами не работаю дальше в принципе, просто потому что не работаю.
И опять возня…

Вобщем раза с пятого дошло. Но суть в чем..

Если бы в нормальной деловой этике после слов «доброго времени суток» или «мы работаем только через тимвьювер», можно было внятно людей отправить в известные края, то можно было бы сэкономить отлично времени.

А тут какие-то копропротивные изверги с секретной базой противолодочных катеров отняли 10-15 минут жизни моего товарища.

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

И маленкий анонс. В связи с тем, что теперь вора нельзя назвать на публике вором. Для воров и аферистов настали хуйовые времена. Ну вы вобщем поняли, голубцы мои… Так что в бложике будет дохуя интересного.

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

И на хуй сесть и рыбку съесть — РЫЛИ ?

a chto

Нихрена не рыли!

Весной я отошел от своих правил. Я сделал магазин с 0… Я очень давно не делаю магазины с 0 — это дикий гемор. Меня бесят тупые утки, которые по каждой комариной залупе звонят в три часа ночи с тупыми вопросами, как добавить атрибут, почему у меня кривая ссылки, или не появился SSL замочек в браузере. Реально, друзья мои, я могу много такого крутого, что вам и не снилось, и я считаю что я лучше буду работать себе в небольшой минус, но в кайф. Поэтому мне в тыщу раз интересней скрестить мегафильтр про и свинкс, чем обучать неграмотных неоинтернетторговцев грамоте.
Но тут нашла коса на камень и мой старый друх меня приболтал запиздячить задорого ему магазин.
Я не сделал ничего военного.  Я просто вкрутил сборку opencart.pro, поставил шаблон, simple и все….
Ну не все. Еще неделю я проваландался в офисе с его тупыми сотрудниками, которые конспектировали правила наполнения-заполнения товаров-категорий.

Реально, в силу того что мой товарищ ранее сталкивался с интернет-продвижением, настроить рекламку ему не составило труда. И О ЧУДО. Мой очень нескромный гонорар он отбил за неделю и остался очень доволен, и сейчас у него проблема где взять 5 новых  сотрудников на производство и в офис к существующим 10. Да так бывает. Взлетело. Я сам не верил. Но взлетело как по нотам, по моим рекомендациям. На хуй сео! На хуй дизайн! Ебашь тексты, хуяр адвордс. Сделай внятные описания и у тебя повалит трафло. За 4 месяца без единой купленной ссылки и иной другой сеодрочобы, кроме нормального контента, магаз влетел в ТОП 10 укр гугла.

И тут мне попадается другой клаент, который всадил в свой магаз пол-однушки  в пределах садового кольца, но правда тоже взлетел, и там у него проблемы были с откликом магазина и стабильностью на 1200 посетителей в день. Мы все решили и у нас состоялся вот такой вот диалог:

[01.09.2017 10:02:28] Yoda: но реально
[01.09.2017 10:02:31] Yoda: вот за год
[01.09.2017 10:02:34] Yoda: через нас прошло
[01.09.2017 10:02:38] Yoda: 150+ магазинов
[01.09.2017 10:02:41] Yoda: у всех проблемы
[01.09.2017 10:02:43] Yoda: с тормозами
[01.09.2017 10:02:45] Yoda: но при этом
[01.09.2017 10:02:48] Yoda: одинаковых нету
[01.09.2017 10:02:53] Yoda: общий анамнез он
[01.09.2017 10:02:56] Yoda: то общий
[01.09.2017 10:03:02] Yoda: но везде какие то катяхи от «супергавноразаботчиков»
[01.09.2017 10:09:28] Молодой Падаван: Ну конечно, опенкарт это ж конструктор
[01.09.2017 10:09:49] Молодой Падаван: Из коробки идёт недомагазин
[01.09.2017 10:10:16] Молодой Падаван: Поэтому приходится допиливать допиливать допиливать
[01.09.2017 10:10:56] Молодой Падаван: И лезут всякие подельщики
[01.09.2017 10:11:20] Молодой Падаван: Ведь НИКТО не предлагает комплексное решение
[01.09.2017 10:12:09] Молодой Падаван: Магазин со всеми нужными модулями с вариантами шаблонов с настройкой под ключ и сопровождением
[01.09.2017 10:12:45] Yoda: да не в этом дело
[01.09.2017 10:12:46] Yoda: есть
[01.09.2017 10:12:49] Yoda: стадо дебилов
[01.09.2017 10:12:52] Yoda: которое исполняет такое
[01.09.2017 10:12:55] Yoda: что на голову не натянешь
[01.09.2017 10:14:04] Молодой Падаван: а стадо почему существует?
[01.09.2017 10:14:17] Yoda: потому что люди бедные
[01.09.2017 10:14:22] Yoda: и ищут дешевле
[01.09.2017 10:14:27] Yoda: дебильная совковая привычка экономить и ездить на жигулях
[01.09.2017 10:14:29] Молодой Падаван: Потому что нет решения адекватного по деньгам
[01.09.2017 10:14:33] Yoda: на здоровье
[01.09.2017 10:14:34] Yoda: на
[01.09.2017 10:14:39] Yoda: качестве обслуживания авто
[01.09.2017 10:14:44] Yoda: потому лупяться в столбы
[01.09.2017 10:14:48] Yoda: и умирают от туберкулеза
[01.09.2017 10:15:14] Молодой Падаван: У нас как…или охуенно но пиздец дорого или гавно но зато дешево
[01.09.2017 10:15:40] Yoda: да хрен там
[01.09.2017 10:15:41] Молодой Падаван: То что оно говно выясняется в процессе..когда деньги уже отданы
[01.09.2017 10:15:42] Yoda: вот логика простая
[01.09.2017 10:15:48] Yoda: народ открывает магазин
[01.09.2017 10:15:49] Yoda: хочет получить
[01.09.2017 10:15:52] Yoda: 500 долларов в месяц
[01.09.2017 10:15:56] Yoda: хотя бы
[01.09.2017 10:16:01] Yoda: ну в среднем все дрочат
[01.09.2017 10:16:03] Yoda: на цифру
[01.09.2017 10:16:06] Yoda: ща я заработаю косарт
[01.09.2017 10:16:08] Yoda: косарь
[01.09.2017 10:16:17] Yoda: да чтобы в обычной палатке с шаурмой косарь заработать
[01.09.2017 10:16:18] Yoda: надо вложить
[01.09.2017 10:16:25] Yoda: тыщ 300 рублей минимум
[01.09.2017 10:16:34] Yoda: и то не факт что заработаешь
[01.09.2017 10:16:42] Yoda: а тут лезут в тему в которой не понимают и з атри копейки
[01.09.2017 10:16:48] Yoda: ну так же не бывает
[01.09.2017 10:17:05] Молодой Падаван: Не бывает
[01.09.2017 10:17:17] Молодой Падаван: Но соблазн-то присутствует
[01.09.2017 10:17:26] Молодой Падаван: :D

 

Вот кароче я нахрен не согласен!

Допиливать надо — потом. Сначала сделали любое гавно. Запустили, купили контекст и торгуйте! Если вы не наживете на контекстном трафике, на Seo-продвижение у вас не хватит ни бабла ни мозгов!

И в целом Opencart — не конструктор уже давно, а очень мощный инструмент для мультиканальных продаж, который не то что не уступает Enterprise-аналогам, но и в каких то местах даже превосходит.

Так что будьте на нашей волне, зарабатывайте бабки, насладжайтесь жизнью!

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

С шоколадным приветом вас, господа

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

Это однозначно пэрэмога.

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

Ну а кто жить не может без любимых пабликов — то пока на декстопах спасает 8.8.8.8.

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

Заебись!

Пост не про опенкарт.
Но…

110179846

Чуваки и чувихи. Жизнь же он не только из торговли магазинов и всякой негативной хуйни — есть например кено!
Всем кто еще не посмотрел Молодой Папа — категорически советую.

А еще Baby Groot же в кино пошел пошел.

maxresdefault

Вобщем, наслаждайтесь хорошей погодой, наконец-то пришедшей весной,  пиздуйте в кино на рокету и грута, а потом смотрите папу и просвещайтесь!

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

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

Кластеризация запросов. Как продвинуться в ТОП в Яндексе и при чем тут Баден Баден

В продолжение предыдущих постов про баден (первый, второй)  у нас вышел небольшой чат с чуваком, который реально шарит в продвижении в Яшке и моим подопечным, которого победил Баден Баден.

Привожу как обычно диалог без Купюр. Так как затронута очень важная тема кластеризации запросов и описана схема сегментации Яндексом коммерческих и других запросов.

[19:46:17] SeoJedi: Как же мне уже заеблось это объяснять )))) Надо походу Йоде запилить статью, чтобы всех туда отсылать )))) щас расскажу
[19:47:03] SeoJedi: короче раньше бытовала легенда что что можно на 1 странице продвинуть ну от силы 5 запросов
[19:47:17] SeoJedi: на самом деле их может на 1 старнице и 500 быть
[19:48:59] SeoJedi: кластеризация делается следующим образом. Берутся запросы из семантического ядра, спец программа делает обращение в ПС и смотрит какая именно страница показывается по этому запросу. Потом она берет эту информация и группирует. например вот по этим 10 запросам показывалась одна и та же страница! Значит эти все 10 запросов можно продвигать на 1 странице
[19:49:22] SeoJedi: это все важно потому что существуют разные типа запросов : коммерческие, информационные и неопределенные
[19:49:36] SeoJedi: у них у каждого РАЗНАЯ стратегия продвижения
[19:50:36] SeoJedi: например запрос «аккумуляторная батарея», вполне может быть ИНФОРМАЦИОННЫМ запросом! А запрос «купить аккумуляторную батарею » точно коммерческий
[19:50:42] SeoJedi: и их нельзя продвигать на 1 странице
[19:51:13] SeoJedi: потому что для инфо запроса нужна простыня 4-15 тыс символов текста, фотки видосы и т.п. (это зависит от конкуренции)
[19:51:26] SeoJedi: а для коммерческого запроса в некоторых нишах текст вообще нахуй не нужен
[19:51:49] SeoJedi: там учитываются так называемые КОММЕРЧЕСКИЕ МАРКЕРЫ
[19:52:09] SeoJedi: чтобы была цена, наличие, кнопка купить / вкорзину / заказать и т.д. и т.п.
[19:52:23] SeoJedi: а на инф запросах такогго вообще быть не должно
[19:53:02] SeoJedi: и короче класлеризация определяет какие запросы можно продвигать вместе, а какие нет и делает это на основание уже существующей выдачи ПС
[19:53:09] SeoJedi: Понятно???
[19:53:39] Жертва Бадена: боль мень
[19:54:15] Жертва Бадена: спец программа платная?
[19:54:51] SeoJedi: да! Софта полно такого, если и сервисы, но не все делают это хорошо
[19:56:44] SeoJedi: и потом текст должен быть релевантет кластеру который продвигается на этой странице + соответствовать по объему
[19:57:14] SeoJedi: например если нужно 2500 текста, то если будет меньше не покажешь и если будет сильно больше тоже показываться по этим запросам не будешь
[19:57:32] SeoJedi: + если еще большая куча других требований к тексту
[19:58:17] Жертва Бадена: мне, как обычному продавану это черезчур сложно
[19:58:36] Жертва Бадена: как заказов не будет — буду разбираться
[19:58:42] Жертва Бадена: будет время
[19:58:44] SeoJedi: да это даже не продавану сложно, но и 95% сеошников
[19:59:09] Жертва Бадена: пока попробую поправить те статьи, которые есть
[19:59:28] Жертва Бадена: поудаляю повторяющиеся слова
[19:59:38] Жертва Бадена: и постараюсь просто сделать для людей

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

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

Влияет ли скорость на позиции в выдаче?

rocket

Вот такой диалог у меня состоялся с одним моим товарищем, который похоже и правда немного понимает в seo:
SeoPro: Я тут с Марком спорил )) какое твое мнение — скорость сайта является фактором ранжирования?
Yoda: в гугле да
Yoda: в яндексе косвенно
Yoda: тоже да
Yoda: я тебе обьясню это с другой стороны
SeoPro: Марк говорит что нет. Похуй медленный или быстрый сайт
Yoda: помнишь, мы когда сделали диноксу площадку форум ?
SeoPro: Да помню конечно
Yoda: у него гугл ходил, до переезда на быструю платформу, сканировал до 10 000 страниц в день макcимум, а потом начал по миллиону в день собирать.
Yoda: гугл мониторит
Yoda: какую он создает нагрузку
Yoda: и ее балансирует
Yoda: типа, если ответ сервера
Yoda: замедляется
Yoda: то он выставляет какие то там свои лимиты на количество заходов
Yoda: и повторхных заходов
Yoda: иначе бы он нахуй заддосил весь интернет.
Yoda: Мэт Кац
Yoda: давно сказал что
Yoda: одним из ахулиарда факторов ранжировния скорость уже давно является
Yoda: как бы у них без вопросов
Yoda: т.е. кроме того что влияет на выдачу
Yoda: еще ты успешно отдаешь контент
Yoda: с большей частотой
Yoda: ну поведенческие факторы понятное дело тоже улучшаются
Yoda: потому что меньше отказов
Yoda: т.е. вот тебе три ЗА:
Yoda: 1) лучшая и регулярная индексация
Yoda: 2) официально призанный фактор алгоритма
Yoda: 3) улучшенный поведенческий
Yoda: яндекс — клон гугла
Yoda: убираем
Yoda: 2 фактор
Yoda: остается два
Yoda: более чем достаточно чтобы быть правдой
SeoPro: На пф скорость вообще прямо действует. В Яшке основной фактор ПФ все-таки, т к. Тупые, а до Гоши им еще далеко
Yoda: как не действует
Yoda: если блять
Yoda: людям удобно
Yoda: увеличивается глубина просмотров
Yoda: если есть отслеживание конверсий
Yoda: они тоже увеличиаются, потому что народ не дрочит в монтиро ожидая окончания загрузки
Yoda: а сразу делает необходимые действия

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

Весеннее обострение | со дна постучали 2.0

ebat

Да уж, накаркал я по самые помидоры про спокойствие в датском королевстве.

Утро началось не с кофе.

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

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

Есть такой чудак exploits — ник уже говорящий (ass exploits) — с английского как раз и будет бомбящий пукан.  И вот этот демон смастерил модуль микроразметки.
Я пару месяцев назад,  задавался этим вопросом — и проанализировал его приблуду, отписав в каментах, что модуль полное дерьмо и категорически не приемлем для использования, так как может легко загасить магазин в бан в гугле.
Порванный пердак на это начал вонять, мол он самый умный и все будет заебись.

И что вы думаете… Еблан сука оказался тугой на всю голову и даже когда ему тыкнули:

perdak

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

Подробности здесь. (ссылка не работает, модуль скрыли).

Что делать в этой ситуации и с этим модулем — удалять срочно модуль этого дебила к ебеням, потому как неизвестно что он там еще учудил в новых версиях!

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

 

 

 

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

Весна идет весне дорогу!

Друзья мои, вы наверное заметили что я сдулся.
И это факт — я сдулся.

Все что я мог написать про сео-шмео оптимизации и ускорения opencart, я написал.
В коммьюнити все устаканилось, и нет ни единого повода вмешиваться в происходящее.

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

Я пока наслаждаюсь затишьем, вроде и в отпуске а вроде и с головой в работе.

Опять душит прокрастинация и очень хочется в теплые края под пальмы.

 

 

 

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

Оптимизация форума на IPB {Эксперименты и результат}

15822500169_0931f5ecbf_b

Буду очень краток. Последний месяц выдался слишком напряженным, поэтому я ушел в отпуск, на ближайший месяц точно!

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

Первым делом было принято решение менять сервер.
Взяли на Hetzner SX61 SSD, настроили ему нормальный конфиг базы данных, нормально настроили связку nginx + apache. Все ожило. Но осталось одно но. Средняя нагрузка на процессор все равно была 60-70% и в пик доходила до 100. А любой паук, собирающий битые ссылки, гугл, или «дружественная организация с DDOSом», могли спокойно обрушить стабильность системы. Так что смена сервера это был первый шаг. Мало  того Динокс на радостях, что форум живой, скормил гуглу сайтмапы, после чего гуглбот заселился по полной на форуме, будто Дэн Билзерян в пентхаусе Беладжио.

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

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

Ну как, не «совсем ничего», разгрузили мы где то процента три. А все почему, потому, что в IPS присутствует несколько недоделанный ORM, который валит очень мало чистых атомарных запросов на чтение. И тут надо вернуться назад, так как нативная репликация средствами mysql возможна только в master-slave режиме, соответственно на слейв запросов уходило очень мало, хотя мы и настроили все в режим master-write/slave-read. Было принято решение разворачивать кластер и делать репликацию по схеме master-master.

Всякие недоделанные оптимизаторы, могут меня ща ткнуть пальцем в статью на ruhihgload про то что можно извернуться и сделать master-master репликацию, средствами mysql-сервера. Но тут чуваки реально  гонят, так как любая коллизия порушит к монахам подобную связку, а еще есть deadlock.
Так вот, всякие адепты ruhighload — идите в жопу и играйте в песочнице.

В такой ситуации без полноценного DB-кластера, мы бы просто ходили по минному полю.
Вобщем взяли аккаунт на DigitalOcean, запилили там тестовую площадку и развернули Galera Cluster. В силу врожденной лени, Savage4pro нашел чудоюдософт под названием ClusterControl. Нереальная хрень, с гиперизбыточным функционалом, денег стоит я подозреваю ахулиард, но месяц бесплатного фуллтриала нас полностью устроил. С помощью CC — на голые сервера в три клика накатывается на 90% готовая сконфигурированная система. А потом узлами кластера можно жонглировать как горячими пирожками.

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

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

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

В итоге с такой-то матерью и полным кардбланшем от Динокса, мы завели и отработали тестовую систему и пришло время собирать это дело в бою. Было решено собрать систему в формате web server с nginx и phpfpm, без всяких apache + две реплики базы master-master + небольшой управляющий vps под сервисные нужды.

И вот тут мы наткнулись на полный ппц, если вы помните, две недели назад  вместо форума полдня были миньоны. В теории они должны были появится на 2-3 часа, а провисели 16, несмотря на горы проведенных тестов всего предусмотреть нельзя и в одном моменте мы крепко хомутнулись, потому что нельзя просто так взять и просто так взять! Все в итоге закончилось успешно и форум начал дышать полной грудью.

В первые дни Гугл сошел с ума, я так понимаю что он меряет время отдачи контента и сам балансирует нагрузку, которую создают боты. А тут он получил абсолютно стабильные 200мс загрузки страницы. Ну и загружал он, как я показывал на предыдущих графиках по 150-250000 страниц в сутки + нагрузка от посетителей порядка 70-100 000 просмотров + другие боты, я думаю суммарно сопоставимы с гуглом. в итоге 300-500 000 просмотров страниц в день и полет  нормальный.

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

Также мы включили Opcache. Для тех кто не понимает Opcache — это не хранилище для данных, это кеширование исполняемого кода php. В прошлой статье я задавал вопрос. куда делась system — нагрузка, вот ее Opcache и снял.

Сразу после сетапа сервера, которому суждено было стать web-мородой мы на него поставили Munin для мониторинга всего и вся. А сегодня еще прикрутили PHP7.
Я специально оставил этот процесс на сладкое, для того чтобы имея подробную статистику показать вам, да и самому увидеть есть ли от него толк. Таки есть.

Вот вам большой красивый график:

ctoday_cpu

 

Да действительно PHP дает большой прирост производительности. Но друзья мои. У нас здесь только web-сервер, нагруженный, но тут нет базы. Не спешите бежать к вашим вебмастерам с воплями ХОЧУ ХОЧУ ХОЧУ. Если вы для магазина на Opencart поставите PHP7, явной разницы между 5.4 или 5.6, вы не ощутите. В нашем случае это выглядит красиво и дает 10 кратный запас прочности, вместо 6 кратного, который был до этого и это очень круто, так как программой максимум было развернуть систему с нагрузкой в 25%, а тут получились все 10.

Вот еще одна красивая картинка с динамикой событий:

monthly_cpu

 

И еще одна:

nginx_monthly

Небольшой общий faq.

Почему  Galera а не  Percona XtraDB Cluster ?
- потому как базы у нас крутились на MariaDB а Galera — родная так сказать система для нее. 

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

Почему в качестве прокси-прокладки мы не стали использовать MaxScale, а остановились на HaProxy
- несмотря на то что MaxScale также продукт MariaDB foundation, у HaProxy получше система мониторинга — а мониторинг наше все.

Почему dedicated а не облако на том же DigitalOcean?
- потому что физический сервер всегда будет быстрее чем любая виртуализация.

Почему арендованные сервера, а не купить свои — это же дешевле?
- свои сервера хорошо и дешевле, пока вы не посчитали стоимость colocation(стоиомость аренды юнита пот сервер в нормальном дц с хорошим,и каналами считайте половина аренды сервера на Hetzner). С ценой сервантов на Hetzner, да еще минус 19% НДС — итоговая цена аренды — совсем не больно, и мы не привязаны физически ни к хостеру ни к ДЦ. Завтра захочется сменить место дислокации — теряется только месячная абонплата.
будет необходимость увеличить ресурсы, новый узел докупается в один клик и готов к использованию прямо сейчас при этом нет проблем со скоростью коннекта между узлами — у Hetzner очень быстрые внутреннии магистрали как внутри так и между дата-центрами. Почти нет разницы в общем стоят сервера в одной стойке, или в разных ДЦ.
Выпустят послезавтра PHP8 с мегаскоростью работы, отказались от избыточных мощностей — сократили затраты.
А свои сервера — только устаревают и теряют в цене!

Почему мы не масштабировали web-сервер?
- пока что в даной конфигурации присутствует десятикратное резервирование, которого достаточно с головой. 

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

Чем осуществляется мониторинг серверов?
- Munin и встроенные средства CLusterControll

Итог.
Я попытался очень кратко описать детали процесса понятным для большинства языком.
Но кое-что я осозанно пропустил. Во первых — не раскрыл подводные камни связанные с развертыванием системы и способы их обхода, во вторых — не вдавался в технические подробности, потому как Commercial.

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

Я не могу сказать что мы супер-пупер умные перцы. И больше так никто не умеет делать. Это будет полная чушь, так как любая площадка в топ-500 выдачи Яндекса на порядок сложнее.  Но мне кажется у нас получился очень правильный проект и подошли мы к нему не с позиции — лишь бы сделать, а с позиции сделать круто настолько, насколько это возможно, при этом без единого вмешательства в код системы.
И вот тут я должен выразить огромную личную благодарность как Savage4pro, так и Dinox.
Потому что с первым у меня каким то образом получается полное взаимопонимание процессов (ну и как то слишком часто мысли сходятся), и во многом благодаря этому взаимопониманию у нас все получилось, а второй проявил себя очень достойно во всем: от оперативной реакции по его задачам процесса (изменение днс, деплой серверов, конфигурирование форума) до полного вникания во все этапы, но без намека на попытку повлиять на процесс, потому что «где то прочитал». Т.е. все что мы делали, мы делали ровно так и в том виде как мы считали нужным.

——————— Happy end ————-

p.s.

Читать далее

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

HTTPS HTTPS HTTPS HTTPS HTTPS HTTPS

Слушайте ну это шквал какой то просто.
Мне сегодня человек 20 написали в скайп, который у меня офлайн кстати!

И Мозилла теперь метит сайты незащищенными!

optic_1

optic_2

Так что попробуем собрать все в кучу.

Во первых про перевод есть статья с костылями для 1.5 тут.

Во вторых есть полезнейший мануал, скомпилированный RHCk.

В третьих есть фри мод HTTPS FIX.

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

seohttpsfixpro1

 

Если у вас включился HTTPS, но не появился зеленый замочек, или  посыпались стили - это самая штука, которая позволит решить одним махом все проблемы!

 

 

 

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

Оптимизация форума на IPB {экспертиза}

battle

Итак, я немного пришел в себя и могу вам поведать первую часть эпопеи с Опенкартфорумом.

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

Так вот имеем вводные. Ресурс на IPB, на котором одновременно онлайн бывает до 600-700 посетителей. 70 000 постов, которые регулярно сканируют боты и совершенно непонятно кем, когда и как настроенный сервер, нагрузка которого валила в 100% без остановки и падала немного только ночью. Доступов у меня нет ни к чему, только к фронтенду, как у банального посетителя.

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

Площадки у нас что forum.opencart.pro, что opencartforum.com, стоят на одном движке IPS (раньше это называлось IPBoard), поэтому некоторое представление о его работе у меня есть.

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

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

Дальше был выбор между APC, Memcache и Redis. Здесь тоже однозначный выбор — исключительно в пользу Memcache, так как работает он быстрее всех.

Также у Ipboard есть механизм popup-сообщений (почти автоддос), механизм внутренней поисковой индексации (почти встроенный сфинкс) и механизма запуска системных событий вызываемый при обращении к фронту а не через крон (можно переключать крон/фронт).

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

Перевели системные процессы на запуск по крону и пытались дождались момента пока закончит перестроение  поисковый индекс (на старом сервере — не вышло, не хватало ему критически ресурсов).

Следующим этапом была проверка конфигруации Nginx Apache и Mysql. Как выяснилось от недостатка ресурсов для буфферизации индексов, база не могла полноценно обрабатывать сложные выборки, и при правильном конфигурировании, опять же немного снизилась нагрузка. Nginxу были добавлены worker процессы ну и по мелочи он был доконфигурирован, чтобы держать как можно больше подключений. Опять же это все по фотографии, руками анонимного одмина, который то появлялся то пропадал в сумраке.

Это были даже не полумеры. Это была попытка надышаться перед смертью.
Нагрузка все не хотела падать меньше 80% и при этом так и норовила добежать до 100.

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

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

Но счастье было недолгим. Буквально на следующий день, все 16 ядер процессора оказались опять загружены по полной, и стало ясно, что в такой конфигурации дальше система просто рухнет. Оптимизация «по фотографии» была закончена. Нужно было проводить более подробный анализ, искать бутылочные горлышки, анализировать общий входящий трафик, разбираться со структурой БД и проектировать систему, на которой можно было бы оживить проект. К сожалению даже десяток самых быстрых VPS от AdminVps  мало чем помог.

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

А  пока вот вам красивая картинка (здесь нет данных по первоначальнй площадке):

cpu_op_f

 

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

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

Что мы сделали с Opencartforum

rocket

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

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

Ну и мы еще не все процессы закончили.

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

Вот просто немного фактов:

небольшой график из гугла.
load

 

Вот цитата от Динокса:

если точно, то гугл сожрал 31 числа 339 107 страниц
время загрузки страницы 191 милисекунда

340 000 pageview только от гугла!

А еще есть Яндекс, а еще есть посетители, а еще есть другие боты!

Если вы могли заметить тормозов нет, и на 31 число — это был всего лишь один правильно приготовленный сервер. А сейчас их 4! Ддосеры велкам — ддосьте хоть обосритесь! У нас 5 кратное резервирование. Потенциал площадки — около 3.5-4М pageview!

Вот теперь мне интересно увидеть персонажа, который со мной захочет подискутировать на тему оптимизации.

 

upd: первый пидарский камент про гугл «как оптимизировать ipb» меня ввел в состояние бешенства, да ебаный насос, какие вы все тупые бляди!!!! Мы тут неделю без сна убили на тестирование жизнеспособности кластера в разных вариациях….  А приходит какое то животное и рассказывает, что можно нагуглить все в три секунды…. Да ебитесь вы в хуй тыпые упыри!!!!

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