Your SlideShare is downloading. ×
Server optimization
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Server optimization

188
views

Published on

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
188
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Почему сайт тормозит?● Лишний код ✔ Избыточное включение кода ✔ Избыточная функциональность ✔ Неоптимальный код● Лишняя нагрузка на БД ✔ Плохая структура данных ✔ Много запросов ✔ Неоптимальные запросы
  • 2. Избыточное включение кодаОказывается INCLUDE тоже занимает какое-то время! Проблема: Избыточность кода в файлах *.module Решение: Выносить максимум кода из *.module в *.inc Путь Bootstrap FULL Render <front> 300-400 2500-3500 <front> cache 250-350 - User form page 200-400 500-1500 Ajax callback 200-400 30-1500
  • 3. Избыточная функциональность Лишний код всегда делает что-то ненужное 1. Проблема: Зоопарк модулей Решение: Custom Development vs. Модули 2. Проблема: В друпале есть Alter! Решение: Конструктор vs. Alter 3. Проблема: Непонимание целей и задач Решение: Делать то, что нужно, а не искать похожее
  • 4. Структура данных. Индексы Индексы нужны для: ● EXPLAIN SELECT - для● JOIN ON анализа запроса● WHERE ✔ Type = ALL !!!● ORDER BY● GROUP BY ● ANALYZE TABLE – для● HAVING обновления статистики
  • 5. Много запросов. Конфиги● Не делать много таблиц для хранения конфигов● Хранить конфиги в более простых структурах● Стараться вычитывать все конфиги сразу, а не по одному✔ Использовать VARIABLES для конфигов✔ _drupal_bootstrap_variables – 0.130 c. (1000), 1.5 c. (6000)✔ Новостной портал ~800, соц. Сеть ~1200✔ JSON, Serialize
  • 6. Много запросов. Кеш Плохо:● foreach () { SELECT }● Часто вызываемая функция с одинаковым запросом● Несколько повторяющихся запросов Хорошо: $cache = &drupal_static(__FUNCTION__); // ИЛИ cache_get() if (count($cache) = 0) { $cache = db_query("SELECT ...")->fetchAllKeyed(); // cache_set() } return !empty($cache[$var]) ? $cache[$var]) : ;
  • 7. Много запросов. entity_load()Плохо: Хорошо:foreach ($entities as $e) { foreach ($entities as $e) { entity_load(array($e->nid)); $ids[] = $e->id;} } entity_load($ids);foreach ($rows as $row) { foreach ($rows as $row) { node_load($row->nid); $nids[] = $row->nid;} } node_load_multiple($nids);
  • 8. Неоптимальные запросыПлохо: Хорошо:SELECT id, (SELECT …) SELECT...WHERE id = (SELECT …) FROM table1 t1 JOIN (SELECT …) t2SORT BY (SELECT ...) ON t1.id = t2.id ...Плохо: Хорошо:(oe_1, ..., oe_N) IN (SELECT EXISTS (SELECT 1 FROM ...ie_1, ..., ie_N FROM ... WHERE subquery_where ANDWHERE subquery_where) oe_1 = ie_1 AND ... AND oe_N = ie_N)
  • 9. СПАСИБО Simplicity is the key to happiness что в переводе означаетПишите мало качественного кода :) Много плохого кода не пишите