|
updated 21.03.09 22:15 21.03.09 22:08 | developers :
Damnedest | Кеш спасет мир! |
ru |
В блоге очень много было рассказов о том, как написать какой-то функционал и как что-то ускорить. Конечно, все этого, очень здорово, но мне кажется сообщество не совсем понимает, что этими постами оно дает в руки бомбу замедленного действия будущим программерам клановых сайтов (как показывает практика сервер БК можно положить обычной ссылкой на полный лог великой ).
По моим наблюдения в БК очень мало сильных программистов, тех, которые имеют за плечами проекты не в 200-300 хостов в сутки, а у которых есть сайты, на которых одновременно находится несколько десятков тысяч человек. Я бы хотел в этом посте затронуть тему оптимизации сайта под высокие нагрузки.
В БК о высоких нагрузках кроме некоторых кланов никто и не задумывался, а те, кто с этим сталкивались решали ее просто - покупали более мощные сервер или переходили на новый тарифный план. Некоторые пытались запретить очень частые запросы пользователей на сайт, последовав по стопам БК, хотя в большинстве случаев необходимости не было.
Я видел некоторые клановые сайты, на которых при выводе ника автора новости, происходило обращение к информации о персонаже БК. Это п****ц и так делать нельзя. Если вы так сделали - убейтесь пожалуйста. Спасибо.
Я видел, как писали вывод состава на PHP, когда по крону раз в 5 минут запускался скрипт и вытягивал инфу о персонаже, чтобы получить его оналайн. Вы правда думаете, что у сокланов нет кнопочки в БК, в которой можно посмотреть весь состав? А может вы решили сделать доброе дело для тех, кто хочет отрабатывать по вашему клану ЧС? А может вы думаете, что нуб 8 левела, который зайдет к вам на сайт и посмотрит ваш состав будет сильно переживать из-за того, что не увидит кого-нить в онлайне? Не смешите.
Что делать? Все просто - надо думать!
1. Думаем куда делать запрос. Если персонаж при последнем обновлении состава находился в Столице, то с вероятностью около 70% он и щас будет находится там же (вероятность не придумана, это реальная цифра). Таким вот простым способом мы уменьшили нагрузку на сервер.
2. Между запросами к БК надо делать задержку. 2-5 секунд примерно, чтобы не мучать ни БК, ни свой сервер (например скрипт получения состава просто в цикле делал запросы, из-за чего раз в 5 минут на сервере наблюдалась некоторая заторможенность).
3. Кешируйте запросы. Зачем каждый раз делать запрос к базе на получение состава, если вы знаете, что скрипт обновления у вам работает раз в пол часа? Получите данные из базы и сохраните их в файле. И следующие пол часа получайте инфу из файла. Да, тут вам придется думать. Если это будет интересно, я могу рассказать как реализовать грамотное кеширование в мемкешед или в обычных файлах )
4. Кешируйте не только данные, но и html. Для вывода состава клана серверу требуется произвести достаточно большое количество обращений к шаблонам. Проще закешировать html с составом клана и отдавать его. Ускорение будет реальное.
Вообще есть еще множество различных оптимизаций, которые может сделать каждый клановый сайт, сталкивающийся с нагрузкой, но это уже индивидуально.
P.S. Думайте, что делаете!
P.P.S. И не делайте всякий бред типа ограничения запросов с одного IP. Лучше займитесь оптимизайией.
Mood: рабочее 
|
Comments: 5 | |
|
|
|
updated 17.02.09 16:48 15.11.08 05:16 | developers :
СэрАртём | Ускоряем jаvаscript |
ru |
Нередко перед web-разработчиками встаёт проблема низкой производительности клиентского кода, обычно реализуемого на jаvаscript. В этот момент можно услышать кучу нелестных отзывов как в адрес тех, кто поставил такую задачу, так и и в адрес тех, кто реализовал ту или иную версию jаvаscript, и даже в адрес самого языка. Однако, тут поговорка "нечего на зеркало пенять, если рожа кривая" подходит, как нельзя кстати. Посмотрим на наглядном примере. CUT: Далее
Update: 17-11-08 17:15
Как выяснилось, разные версии IE по-разному обрабатывают способы обращения к элемементам документа. Я немного изменил последний пример для того, чтобы заполняющийся полным обходом дерева элементов кэш работал с одинаковой производительностью на IE6-IE8
Update: 17-02-09 15:45
К слову о производительности: Производительность простых и сложных конструкций в jаvаscript от RealCoding.NET
Mood: рабочее
|
Comments: 11 | |
|
|
|
updated 02.11.08 18:06 31.10.08 16:40 | developers :
СэрАртём | Призраки Бойцовского Клуба |
ru |
Баги ходють по БК, их видать издалека. Предлагаю (и буду неоригинален) собрать баги в одну кучу. Правило добавления очень простое: описать исходные условия и последовательность действий для воспроизведения бага. Если баг не требует воспроизведения, а очевиден - указывается фрагмент кода, ответственный за баг. Сообщения вида "вчера был в БК - вещь была, сегодня зашёл - её нет" не катит. Нужно чёткое описание, при каких условиях и действиях пропала вещь.
Далее идут потверждённые баги.
При отправке в чат сообщения, содержащего символы кириллицы и URL-encoded символы в кодировке UTF-8, первые заменяются на знаки "?", а последние отображаются в decoded виде. СкрытьЕсли отправить сообщение "Читайте скролл: http://scrolls.combats.com/~%D0%92%D0%BE%D0%BB%D1%8B%D0%BD%D1%89%D0%B8%D0%BA" то в чате будет отображено: "??????? ??????: http://scrolls.combats.com/~Волынщик"
Ошибка jаvаscript при отображении custom hint при наведении указателя на количество предметов в пачке. СкрытьОткрыть инвентарь в разделе, где есть группированные предметы. Навести указатель мыши на количество предметов в пачке (например, "x99"). В строке статуса появляется сообщение об ошибке jаvаscript: 'ls***' is undefined. Проблема связана с реализацией торговой панели, где всплывающая подсказка содержит полную информацию о премете. Лечится путём удаления атрибутов onmouseover и onmouseout у элемента <small></small>
Ошибка вёрстки списка заявок в групповых поединках, приводящая к разрушению структуры документа. Скрыть
Каждая заявка разделена на левую и правую стороны следующим HTML-фрагментом, в котором нарушена вложенность: <font class=dsc><i>против</font></i>
В Internet Explorer 8 не отображается список игроков, находящихся в комнате. СкрытьВ функции wu(inv,name,id,align,klan,level,slp,trv,city,att,private,afk,afk_text,dnd,dnd_text,bat,ill,sms) в окне списка игроков комнаты (http://dreamscity.combats.com/buttons.pl?list=) используется переменная opener, которая не инициализируется как локальная, а фактически является членом объекта window, что вызывает отказ во всех правильных браузерах (в том числе, IE8).
Ошибка объявления функций в top-level окне, приводящая к несовместимости с браузерами, отличными, от IE.СкрытьИмя идентификатора, в том числе, функции, не должно содержить специальных символов, в частности, точку ("."). Однако, изменения, связанные с внедрением панели быстрого доступа, содержат ряд объявлений функций вида
function top.OnUse(what) {
...
}
Правильно добавлять члены top-level окну так:
top.OnUse = function (what) {
...
}
При подтормаживании канала возможно неоднократное появление в чате своего сообщения или сообщений других участников чатаСкрытьВ функции AjaxLoad(url, fun) производится проверка на факт отправки сообщения:
if (AjaxBegin) return 0;
Однако, значение AjaxBegin сбрасывается в 0 через 1 секунду после отправки сообщения, не зависимо от результата отправки:
ab = setTimeout('AjaxBegin = 0',1000);
Как следствие, на загруженном канале возможно инициирование нового соединения, пока открыто старое. В реализации объекта XMLHttpRequest от Microsoft есть один прикол: он может открывать несколько соединений одновременно, но обработчик события onreadystatechange будет только один и свойство readyState будет возвращать статус только первого соединения. В результате, на каждый пакет, приходящий после повторной отправки сообщений, в чат будет кидаться пачка сообщений, принятая по первому запросу. Баг лечится путём повторного создания объекта req
Зависание статистики боя, проведённого в Изломе Хаоса.СкрытьПосле того, как завершён бой в Изломе Хаоса, его статистика (количество убитых ботов) будет отображаться на любой другой страничке боя Abbadon'а. Помогает только перезагрузка окна БК.
Ошибка в кодировке при поиске в аукционеСкрыть1) в поле "Имя" вводим фразу "Сущность ресурса"
2) делаем ставку на один из найденных лотов
3) в поле "Имя" теперь вписано "%D1%F3%F9%ED%EE%F1%F2%FC+%F0%E5%F1%F3%F0%F1%E0" и, соответственно, пропали предложения. Необходимо заново вписать в поле "Имя" название искомого предмета и снова сделать поиск.
100% загрузка процессора при наведении на телепортатор в зале ожидания. СкрытьОбъект с id=central_port имеет обработчик события onmousemove. Это событие генерируется не только в тот момент, когда указатель мыши попадает в границы объекта, а непрерывно, пока указатель мыши находится в границах объекта. Правильно было бы инициализировать обработчик события onmouseover, а onmousemove удалить.
Mood: хитро-коварное, озлобленно-рабочее
|
Comments: 17 | |
|
|
|
27.08.07 21:14 | developers :
Yan Kos | Книги Win32 API |
ru |
Может кому понадобится эти книги для Виндовозников решивших написать что нить под Винь 9х.
Хотя книги и старие но Рихтер и Петзольд научат хорошому тону. Да и вообще это из разряда "must have"
Книги по Win32 API для начинающих.
- Программирование для Windows 95 (в двух томах).[Петзолд Ч.]
- Windows для профессионалов. Создание эффективных Win32-пpилoжeний с учетом специфики 64-разрядной версии Windows.[Джеффри Рихтер]
- Системное программирование в среде Windows.[Джонсон М. Харт]
- Проектирование интерфейса пользователя средствами Win32 API[Р.М. Ганеев]
CUT: Продолжение
Music: Alkonost - Ночь Перед Битвой (Путь Непройденный)
|
Comments: 8 | |
|
|
|
20.06.07 23:16 | developers :
Cripter | ДДОС |
ru |
Скажу сразу статья не моя но более полно пожалуй и не напишешь. Тем более, что данная тема очень актуальна в эти нелегкие времена.
Powered by vBulletin® Russian v3.6.4, Copyright ©2000-2007, Jelsoft Enterprises Ltd.
Сначало, я расскажу про Ддос. Какие виды атак существует, как их отличить, чем они сильны… И так, как понять, каким видом флуда вас Ддос-ят? Очень просто - достаточно просто поверхностно взглянуть на сервер. Если в разы увеличились логи апача - значит это хттп флуд. Если нельзя присоединиться ни к одному из сервисов (к примеру, фтп) по причине того, что максимальное количество соединений достигнуто, значит, это SYN\ACK флуд. При ping flood практически не будет заметна разница между исходящим и входящим трафиком.
CUT: Продолжение
|
Comments: 6 | |
|
|
Total posts: 30 Pages: 3
1 2 3 » »»
|
|
Mo |
Tu |
We |
Th |
Fr |
Sa |
Su |
| | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | |
|