Три крутых истории, про быстрые магазины!
Вобщем пока вы отходите от нового года и празднуете день святого Валентина, папа работает!
История первая.
Большой укр магазин, который торгует искусственными фаллосами и этим всем непотребством 3-5к хостов в день, но очень много гугл бота на богомерзкий фильтр бибер.
Переехал на бизнес хостинг на ukraine.com.ua, ничего не изменилось, лежит и не встает.
Стояло там все: джек плеш, лайтниниг, и только мешало своими file_get_contetn (много кеша) или select from oc_hlam_cache(name);
А если владелец запускает нет спик спайдер на фильтр бибер, магазин просто уходит в 502 и не оживает.
Ок.. Переносим на турбо впс на хост про, легче но регулярно ложится, 4 ядра все ввысь, никакого толку...
Ну. Ок. Ну тут у нас есть местный хостинг под опенкарт. И как бы я не относился к администрации форума, как бы они не исполняли. Я знаю, что хостинг правильный.
Решили попробовать. И о чудо МАЗАФАКА! На трех ядрах райзена, когда папа настроил все лимиты php-fpm и mysql мы смогли держать 400 одновременных запросов на магазин на трех ядрах.
Очень много твиков, очень много настроек самого vps-сервера. Но между - дружище покупай свой сервер на хетцнере и диноксхостингом, оказалось что таки да. Можно сделать 120-150к pageview на трех ядрах, не уложив основной трафик магазина. Подчеркиваю. Это не на базовом движке, а на куче твиков и оптимизаций, как по движку так и по серверу, хост про такой же не смог!
Итог - даже фильтр бибер можно держать и отдавать все эти его бред страницы. Непонятно зачем, но можно если руки не кривые и всего на трех ядрах.
Но умеючи и на хорошем хосте, и нафиг бы он нужен был эта богомерзкая поделка!
Следующая история:
Я вот ща пишу, с радостью, потому что прошло 14 февраля и не единого разрыва. Ну вот как боженька пошептал, как самая сладенькая писечка.. Проект отработал наплыв трафика на ура!!
Большой локальный украинский бренд. Извините, у меня везде по умолчанию NDA и я не могу засветить домены, поэтому фантазируем: 10-15к хостов в день, в праздники х2.
ВПС на 8 ядер и 16 гиг памяти.
Целая ахренеть фирма по поддержке хайлоад проектов на зарплате.
И все лежит. Лежит и не встает.
Все ядра в топ!
А у них 14 февраля, через неделю, и минимум время генерации 2 сек на страницу.
Студия которая ведет этот проект, мы с ними давно работаем, но я не связываюсь с прокладками. А предпочитаю общаться напрямую с владельцами - это минус нервы, но очень просили.
В итоге... Вы же помните, динкос-хостинг и это вот все... У нас уже есть реализация. Ок. ок.. Попросили большой впс, на 16 ядер, перенесли с 2 секунд сделали 300 мс, путем базовых твиков по движку и по серверу. Запустили нагрузочное тестирование в 400 смычков одновременно и получили 502 и ядра вверх.
Был вроде бы очень крутой проект с хорошей реализацией и тут 502.
Начали разбираться. И оказалось что наши герои просто куда то стучаться на geo-ip кокойтый API, который блочит при большом количестве заходов посетителей. Учитывая, что у нас шлюзы мобильных операторов не очень то и много разноообразные, понимаем что беда.
Меняем сторонний сервер на free max-mind geo base.. И о чудо. Все работает.
Но не тут то было...
Вдруг у нас начинают куда то уходить 1000 коннкетов к базе данных. Их что то выжирыает, потоки php-fpm висят, и вот это вот все как снежный ком, или пробка на шоссе..
Начинаем разбираться, и находим что у моих друзей 10 фидов, которые они написали как отдельные php скрипты, т.е. просто в корне лежит facebook_feed.php там какой то mysqli_connect и потом он не закрывается. Крон раз в 15 минут, 10 фидов, wait_timeout в базе 28800, в итоге все эти фиды, просто как зубастики отожрали соединиение к базе.
И когда мы сделали все тюнячки по базе, закрыли вопрос со сторонним geo API, закрыли вопрос, с зкарытыми коннектами, настроили сервер. Моему счастью не было предела.
90% магазинов это ларьки. Этот проект - это мать его большой бизнес. 5 человек специалистов оптимизации говорили, что на опенкарде это невозможно, целая огоромная дорогая фирма (не буду говорить название, чтобы не обиделись) не смогла. Папа решил вопрос за два дня, спасибо тебе Динокс хостинг!
Вот сейчас ночь! 15 число. Мне никто ни разу не написал Хьюстон, у нас проблемы. Я последние три дня просыпался в 8 утра в холодном поту. А не случилось ли там что.
Я знаю что вам тут всем похрен, вам лишь бы бабки. Но бабок я могу вашими способами заработать доедренифени, у меня уже другие мотивации, и мне очень важно когда большие проекты взлетают и стабильно работают. Это такая медалька, орден. Типа. Йодыч, ты и это смог! Красава!
История третья.
Магазин на 90к товара.
Богомерзкий мега фильтр. плюс авары рабы туда свои хипер какую то перхоть всунули. Лежит...
Старый мой давний товарищ, мы ему решали вопросы, когда было немного товаров но тут дохрена сталои фильтр про. И эти хиперкриворукие...
И парняга говорит простую вещь - у меня фильтр ведьмы, не кодированный.. Сделай мне сфинкс.
Сфинкс под фильтр ведьмы, реально кроме гансора я больше никому не буду делать, потому что он мне реальный друг. И это была индвидуальная акция, когда мы мега фильтр подружили на 1.5 м товаров.
Но что то же надо делать. У людей загрузка страницы без кеша фильтра 8 секунд. Главная 1.5.
Ок ок..
Переносим магазин на быстрый сервер админвпс, настраиваем лимиты сервера базы, настраиваем php-fpm.
Убираем из mega фильтра построение полного набора базовых опций и встроеннго фильтра, получаем уже 4 секунды. Убираем джоины магазина, он у нас один, убираем date_available ву запросах. Уже легче..
где-то там 3.5-4 сек.
Идем в конфигурацию mysql сервера, разжимаем параметры базы получаем 1.5-2. И тут видим богомерзкий мпн твик и сессии в базе, которые каждый раз очищаются.
И ЖРУТ 300 мс. Каждую итерацию, каждый поток, у нас его автоудаление жрет 300-400-мс на каждой странице. Фак фак. Решаем.. И ок получаем порядка 1сек..
Запускаем паук, и после того как мега фильтр наплодил кешей, вдруг у нас 2 секунды вместо одной.
смотрим в мегу. Помните же у нас открытый код:
а там какой то такой бред:
$time = (float) file_get_contents( $file_time );
if( $time < time() ) {
@ unlink( $file );
@ unlink( $file_time );
return false;
}
Какое то задвоение файлов кеша непоянтно зачем, нет гарбаж коллектора, тысяч файлов в папке с кешем и это все каждую итерацию пытается сделать GLOB.
Вобщем недолго думаю крутим туда мемкеш, настраиваем базу, чтобы она легша переваривала индексы, добавляем индедксы везде, все таблицы в иннодб, поле text в product_attribute ставим индекс full_text. И бинго - без кеша мега фильтра на самой большой категории 1.5 сек. А с кешем - 0.5 - 0.7
За неделю!
Три очень крутых кейса. Когда у людей перестала болеть голова.
Три крутых кейса, которые были бы не возможны без отличного физического серверного ресурса!
И три крутых кейса, потому что там были все возможные здешние и не здешние оптимизаторы, какие-то специалисты с именем, какие-то суперхайлоад фирмы, которые нигде никто не смог!
Я не шарю в верстке, я не шарю в сео, но я знаю специалистов, которые понимают в этих вопросах, как я в вопросе быстрых магазинов!
Если вашим друзьям или вам надо, пишите в личку, дам контакты..
Все кто могут сделать отличные решения на opencart под любые условия - все таки живут на форуме. И это круто, и я очень благодарен тому, что в моем окружении есть несколько достойных специалистов в своей теме...
Ну и еще такой небольшой бонус. Как не надо делать...
Пишет тут в чатик @ocdev_pro, мол так и так, у него большой клинент, полдня лежал потому что место закончилось.
Магазин на 5000 товаров на впсе на 100 гиг места. Место мазафака закончилось. СЕРЬЕЗНО!
Вобщем ситуация патовая, у магазина есть админ, который авторитет для владельца магазина, он ничего не может решить,
сто гиг йок!
Ок.. Смотрим по тим вьюверу. Доступов же нету! И блин ну вот сразу!
Этот суер админ настроил локальные бекапы.
Просто он взял и выжрал все место на сервере! Ну круто же!
Чувак пару соток в меся получает за то что взял и обгадил своему работодателю бизнес на два дня..
Перенастраиваем все на хетценр стораж, делаем бекапы. И вуаля!!!
Места у нас 80 гиг, сайт не ляжет. Бекапы удаленные, и еще снепшоты полного соятония сервера настроили.
Владелец магазина немного ошарашен за такого администратора.
Мораль этой истории простая. Друзья. Если у вас впс, и вы хотите спокойно спать - поинтересуйтесь у вашего хостера как часто он делает бекап вашего сервера, и чтобы вам спать спокойно сохраните ваш сайт и базу на флешку и положите под подушку, а еще купить в хетцнере стораж за 4 евро и суньте туда полный файловый бекап!
Знаете если даже ваш микрокиоск, приносит 500 долларов в месяц. Даже если 200. Это 2400 в год. А бекап вам будет стоить 4*12 = 48, просто фактически за 50 евро, вы получаете гарантию, что ваши дети не пойдут по миру.
Доклад окончил, всем спасибо, дали буде.
Ваш Вождь Йоба!
И еще раз прошу прощения, есть много скринов, пруфов, как было как стало. Но блин, поймите меня правильно. Мне очень важен спокойный сон моих друзей. Я не вася сосикриаторша, которая всех клиентов со спросу и без спроса валит в паблик. Я считаю что нельзя никого светить, потому что в нашем коммьюнити не все белые и пушистые. И любой засвет успешного проекта может оберунться ддосом и взломом. Поэтому все что я могу доносить истории вот в таком беллетристическом формате. Но если кто сомневается в моих балачках, всегда можем привлечь доверенных экспертов, которые подтвердят или опровергнут мои выкладки. Но задорого!
- 11
28 коментарів
Recommended Comments
Створіть аккаунт або увійдіть для коментування
Ви повинні бути користувачем, щоб залишити коментар
Створити обліковий запис
Зареєструйтеся для отримання облікового запису. Це просто!
Зареєструвати аккаунтВхід
Уже зареєстровані? Увійдіть тут.
Вхід зараз