Aisamiery

Aisamiery
Рейтинг
324
Регистрация
12.04.2015
LEOnidUKG:
Да не ребят, я посмотрел там и БД и запросы. Там выключен кэш т.е. идёт по 350-400 запросов к БД. В основном затупы при записи сессии, как принято у джумлы это делается в БД. Я сделал таблицу MEMORY, но что-то хостеру вообще попалам на это.

Да там были места, где нет индексов, но там таблицы по 100 строк. Я рекомендовал менять хостера.

А что за хостер? таймвэб какой нибудь или спейсвэб? или можордомо?

e_v_medvedev:
Тем более что в первом топике говориться о числе скачиваний статических файлов, которые к БД не имеют ни какого отношения. Дело скорее всего не в базе данных. Нужно точнее диагностировать проблему.

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

---------- Добавлено 20.02.2020 в 14:09 ----------

e_v_medvedev:

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

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

danforth:

Это реальный пример из реального проекта на CMS, ко мне обращались люди, у которых листинг товаров грузился по 12 секунд. 12 секунд, Карл! Виновников было много, начиная с плагинов, которые возвращают по 40к строк зачем-то, заканчивая отсутствующими индексами. Конкретно пример выше позволял делать три запроса быстрее, один из которых на тот момент выполнялся за 0.531 секунд, после смены структуры стал выполнятся за 0.003 сек. На самом деле, смены структуры не было (делали на тестовом сервере), потому что это сломало бы все обновления. Поэтому терпят до сих пор.

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

Я почему на самом деле говорю за cms, хотя у меня b2b например сделан на симфони, как и многие модули и прочее (то есть мне есть с чем сравнить). Так вот я к тому, что в любой (из тех CMS что я юзал по крайней мере) можно выкинуть неподходящий модуль и заменить его на свой, то есть сделать самопис как нужно, но не целиком все, а только куска системы. И именно так у нас и происходит, у нас поиск свой на эластике основан, интегрирован в битрикс, настраивается с админки битрикса, а от туда уже идут и поиск и фасеты (агрегирование) и все это бесшовно добавлено в CMS, свои интеграции с мастер системами и партнерами (нам могут партнеры грузить свои товары), свои правила скидок (не весь механизм скидок, а лишь кастомные наши условия) и так далее. Я к тому что не совсем понимаю зачем переписывать абсолютно всё, если не устраивает что то одно. Да конечно если не подходит архитектура (например нужны микросервисы в кубернетес), то тут вариантов как бы не остается, но 90% проектам это не нужно, так лучше сосредоточится на том, чтобы пилить уникальный функционал и развивать ИМ, а не то чтобы пилить то что уже давно запилено, протестировано и работает на тысячах сайтов. По сути то CMS это админка, тот же OctoberCMS это надстройка с админкой над ларавелем, поставил CMS наклепал своих табличек вот тебе и проект, где под капотом проверенные решения, расширенные модульной системой и всякими няшками. Я единственно не очень люблю опенкарт, потому что там вот прям все в код вшито, в моделях прям прописана бизнес логика и прям гвоздями прибита архитектура БД и сравнительно странное расширение через модификаторы. Но и то в принципе юзабельная система. Я уж не говорю о том что у меня в подписе (магенто думаю еще вскоре добавить) :D

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

SeVlad:
Хм.. для меня несколько удивительно что индексы тормозят. Когда я учился кодить и работать с базой (не только MySql, но и др) - вроде всегда индексы использовались. Но я уже давно бросил так глубоко копать так что не в курсе.

Это всегда было так, индексы ускоряют выборку, но замедляют запись/изменение/удаление, по этому если в таблицу в основном пишут, то ей индексы противопоказаны. У меня был один ИМ на поддержке, там БД была 17Гб, а в месте с индексами занимала место на диске больше 100Гб, ну и все операции записи/удалении/изменения естественно работают дольше с индексами, чем без. По этому например рекомендуют записи с таблицы не удалять а помечать как уаленные, потому что перестроить таблицу индексов на например 30 млн строк операция не быстрая))

SeVlad:

АПД. Хотя я ща досмтрелся - "без использования индексов"? Разве в джумловской базе нет индексов? Чот сомневаюсь.

На самом деле глупо расставлять индексе с "заделом на будущее", если нет функционала, который будет юзать этот индекс, то индекс будет только тормозить и увеличивать место занимаемое БД. Часто бывает так, что при разработке каких то своих выборок, ты начинаешь делать SQL с фильтрами которые раньше нигде не использовались и они начинают промахиваться и CMS начинает "тормозить". Очень часто решается анализом SQL и доустановкой нужных индексов + я видел как индексы слетали, не интересовался по какой причине, но случаи бывали. Ну и вполне возможно самописный модуль, сообщество J не сильно отличается по скилам от сообщества W, многие даже не знают что такое индексы

danforth:
Aisamiery, речь про магазин на 500-1000 товаров. Зачем там очереди и шардинг, если это не маркет-плейс по продаже наркотиков?

Вообще я отвечал ребятам за скорость их самописов и удобство использования. При том они дальше старта (который закрывают CMS на 99%) в самописах не продвинулись, именно там где самописы в основном и раскрываются. При том люди, которые сами эти самописы пишут для себя и поддерживают. Они не понимают как это выглядит со стороны клиента и поиска и работы с подрядчиками.

А так, как количество товаров определяет сложность интернет магазина, это вот самое сравнение меня ставит в ступор периодически, неужели вы считаете, что для той же MySQL есть разница работать с 500 строками в таблице или с 500к строк?

И именно, тут речь что человеку нужно всего то развернуть магазин на 3.5 калеки, с функционалом который есть в опенкарте + шаблон за 3500р + 10 часов доработки напильником от спеца в итоге по времени за пару дней. А тут про самописы загоняют, чего нет то.

У одного витрина, у другого блокируемая напрочь SQLite при записи и они доказывают за скорость, самописы и ИМ =))) Я с вами согласен ребят, инструмент надо выбирать под задачу, я рад что у вас такие задачи, что вам хватает 3х файлов и БД SQLite и вы даже не в курсе что такое очереди, nosql, шардинг, реплики и прочая херня, без которой и так можно сделать 3000 rps или 30000 rps. К сожалению у меня таких задач как у вас нет.

Банерная реклама не в сервисах, а во вкладке маркетинг. А в сервисах расположен сам компонент

Sitealert:
Я давеча переводил самописный сайт столетней давности на PHP7, и обнаружил, что подключенный к нему Смарти ну нифига не работает на "семёрке". И как замечательно, что у этого говна Смарти есть новая версия, адаптированная под PHP7! Будь этот шаблонизатор самописным, я утонул бы в этой тонне кода...
Это я о нюансах, если что...

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

timo-71:

Где то противоречие закралось.

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

timo-71:

Это же оценочное суждение. С точки зрения вашего опыта. Неужто не допускаете, что ни кто не может иметь тонны кода на все случаи жизни - кабинет, роли, доставка, интеграции с популярными сервисами/прогами 1с. Я не про себя, уверен, что 100500 разработчиков, в разы лучше меня разбираются в вопросе. И если уж у меня, все есть для того чтобы собрать типовой магазин за несколько дней и прикрутить практически любую логику, монстры разработки это сделают в разы быстрее и лучше.☝

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

Вы поймите, ваш набор не отличается ничем от CMS, просто это ваша cms. А вот насколько это оправданно уже зависит от конечной цели. Вы поймите, за несколько дней можно как на своей CMS так и на коробке сделать, самопис - это когда вы с нуля пишите под ТЗ, а не используете какое то свое решение. Вернитесь на несколько сообщений выше, тащить свою CMS без сопровождения старых клиентов неоправданно, именно по этому многие собственные разработки студий загнулись. При том сильно непонятно что лучше для конечного клиента, платить символических N денег ежегодно для обновления и получения новых функций или не платить и не получать ничего (так как вы как разработчик уже давно забили на этого клиента со своей CMS из набора готовых модулей/классов/кодовой базе)

Всего: 4113