login:        password:      
Combats Scrolls
Rambler's Top100
Гость БК
ru
updated 21.03.09 22:15
21-03-09 @ 22:08

developers Open info : Damnedest Open user info Open user photogallery
Кеш спасет мир!
В блоге очень много было рассказов о том, как написать какой-то функционал и как что-то ускорить. Конечно, все этого, очень здорово, но мне кажется сообщество не совсем понимает, что этими постами оно дает в руки бомбу замедленного действия будущим программерам клановых сайтов (как показывает практика сервер БК можно положить обычной ссылкой на полный лог великой ).

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

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

Я видел некоторые клановые сайты, на которых при выводе ника автора новости, происходило обращение к информации о персонаже БК. Это п****ц и так делать нельзя. Если вы так сделали - убейтесь пожалуйста. Спасибо.

Я видел, как писали вывод состава на PHP, когда по крону раз в 5 минут запускался скрипт и вытягивал инфу о персонаже, чтобы получить его оналайн. Вы правда думаете, что у сокланов нет кнопочки в БК, в которой можно посмотреть весь состав? А может вы решили сделать доброе дело для тех, кто хочет отрабатывать по вашему клану ЧС? А может вы думаете, что нуб 8 левела, который зайдет к вам на сайт и посмотрит ваш состав будет сильно переживать из-за того, что не увидит кого-нить в онлайне? Не смешите.

Что делать? Все просто - надо думать!

1. Думаем куда делать запрос. Если персонаж при последнем обновлении состава находился в Столице, то с вероятностью около 70% он и щас будет находится там же (вероятность не придумана, это реальная цифра). Таким вот простым способом мы уменьшили нагрузку на сервер.
2. Между запросами к БК надо делать задержку. 2-5 секунд примерно, чтобы не мучать ни БК, ни свой сервер (например скрипт получения состава просто в цикле делал запросы, из-за чего раз в 5 минут на сервере наблюдалась некоторая заторможенность).
3. Кешируйте запросы. Зачем каждый раз делать запрос к базе на получение состава, если вы знаете, что скрипт обновления у вам работает раз в пол часа? Получите данные из базы и сохраните их в файле. И следующие пол часа получайте инфу из файла. Да, тут вам придется думать. Если это будет интересно, я могу рассказать как реализовать грамотное кеширование в мемкешед или в обычных файлах )
4. Кешируйте не только данные, но и html. Для вывода состава клана серверу требуется произвести достаточно большое количество обращений к шаблонам. Проще закешировать html с составом клана и отдавать его. Ускорение будет реальное.

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

P.S. Думайте, что делаете!
P.P.S. И не делайте всякий бред типа ограничения запросов с одного IP. Лучше займитесь оптимизайией.

Mood: working 

Я думаю, что это: Scrolls.multiLike:)

view mode: linear threads
Total disscussion threads: 4 Pages: 1
«« « 1 » »»

Post reply | Post reply with quote
Гость БК
21-03-09 @ 23:10
copy link to clipboard
ну что я могу сказать)))
+1
Post reply Ответить с цитированием
Язон Дин Альт Open user info
21-03-09 @ 23:14
Re:
copy link to clipboard
забыл подписаться))
Post reply Ответить с цитированием
Alex Nomad Open user info Open user photogallery
22-03-09 @ 02:20
copy link to clipboard
интересное и полезное мнение
Post reply Ответить с цитированием
l-Michael-l Open user info Open user photogallery
17-04-09 @ 19:21
copy link to clipboard
с пунктом №3 не согласен категорически. в таком случае отпадает смысл хранить данные в БД ВООБЩЕ. Если БД сделана через "ж", тогда вообще убится об стену лучше.

есть относительно много мелких несогласий, но в принципе идея очень даже важна и актуальна
Post reply Ответить с цитированием
Гость БК
20-04-09 @ 18:38
copy link to clipboard
На архитектуру БД это никак не вляет, если есть возможность снять нагрузку с БД - это надо сдать. Даже простой запрос "SELECT * FROM public.users WHERE id = 100" надо кешировать.

К тому же к базе бывают и сложные запросы, которые упростить просто нереально. Например подумайте, на сколько тяжелым будет запрос "найти похожие видео к данному" на примере smotri.com. А если учесть что видео несколько милиионов?
Post reply Ответить с цитированием

Post reply | Post reply with quote

Total disscussion threads: 4 Pages: 1
«« « 1 » »»


 
 © 2007–2024 «combats.com»
  18+  
feedback