Перейти к контенту

Как мы ломали

  • записи
    24
  • комментариев
    147
  • просмотра
    16 233

Нагрузки - ревизия


MiksIr

183 просмотра

Посмотрев свой topicview.patch.txt понял, что решение - ацтой ;) Смысл ацтоя в том, что гоняется туда-сюда целый массив, который может прилично распухнуть и привести к коллизиям, когда одновременно читается и пишется.

Идея была переработана и отдана на реализацию ;) Патча пока нет ;) Идея в следующем:

Как прежде, на просмотре пишем в кеш, на списке топиков - читаем из кеша и складываем, но - храним все не в массиве, а для каждого топика - свой ключ. Имеем проблему - как обновлять переодически кол-во просмотров темы, ибо список ключей получить мы не можем (рукотворным реестрам было отказано давно ввиду костыльности решения). Решение - на просмотре темы проверять количество просмотров, и если их там накопилось больше X, то именно тут и сбросить. Минусы - если тема долго не просматривается, то ключ в кеше помрет не успев достигнуть X просмотров - решается предоставлением достаточной памяти мемкешу, что бы ключи не вытеснялись и величиной X - что бы чаще или реже сбрасывать данные в базу.

4 комментария


Рекомендуемые комментарии

Замечательно.)

 

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

 

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

 

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

 

Сколько стоит мощный сервер? А в сравнении с работой программистов, которые месяцами пишут и переписывают код? А ради чего? Чтобы страница отдавалась не за 0,3 секунды, а за 0,01?

 

Притом не стоит забывать о том, что мощный сервер можно быстро переориентировать на другие задачи. А весь труд, вложенный в оптимизацию IP.Board 2.3, вскоре ляжет мёртвым грузом. IP.Board 3.0 не за горами. Даже если он окажется отстоем, всё равно, рано или поздно, будет создан движок на порядок лучше.

 

...

 

Вообщем то, что вы делаете, весьма интересно, но какой в этом практический смысл? Тем более, что по статистике форума AC, там рекорд посещаемости - 6 юзеров.

Ссылка на комментарий

О, с серверами все ок - сегодня поставили 5 и 6-й ;) не потому, что нагрузка, а потому, что каждый сервер занимается своими задачами - так легче потом разбираться и масштабировать.

 

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

 

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

 

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

 

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

 

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

 

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

 

Насчет новой IPB... мы не будем переходить на 3.0... столько уже сломано, что переложить это на новую ветку - невыполнимая задача. Но если появятся свободные ресурсы - будем делать свой форум... в том числе на основе идей/патчей/классов сделанных ныне.

Ссылка на комментарий

Гмм.) Хочу признать, вы мне очень нравитесь. Думаю, именно в таком ключе и должен мыслить технический руководитель.

 

Глобальный курс проекта - это головная боль другого специалиста...

Ссылка на комментарий
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.