Highload оптимизация

Вебмастерское
Зачастую, «бутылочным горлышком» вашего приложения является база данных, таким образом перво-наперво включаем slow query log и смотрим какой запрос у нас самый медленный, и думаем что с ним делать, если не можем вкурить проблему — зовём старших, пусть тоже повтыкают в EXPLAIN (хабр) вашего чудо-запроса.

Но, опять же ссылаясь к моему опыту, большинство проблем с БД решают правильные индексы. Легко запомнить, что индексировать следует внешние ключи, и всё что у вас в WHERE, ORDER BY, GROUP BY (список не полон, для начала – самое оно).

Не следует пихать много индексов в таблицу которая часто обновляется, иначе накладные расходы на обновление индекса будут перекрывать ваш профит от оных в разы. Советую внимательно почитать об оптимизации в MySQL.

Поиск с использованием LIKE это плохо. Полнотекстовый с MyISAM уже лучше. Внешний аля Sphinx — рулит и бибикает для MySQL и PostgreSQL, инфа достоверная 100%.

Но это полбеды, проблем в БД может подкинуть и само приложение — обращение к БД в цикле/рекурсии или еще каким извращенным способом могут привносить удивительные поправки в результаты нагрузочного тестирования. Сделайте простой профайлер ваших запрос и проследите на каких страницах количество запросов начинает зашкаливать (особенно это касается типа-ORM и почти-Active Record, когда один объект = один запрос, или даже не один). Всем кто уповает на магию фреймворков, иль каких-нить gem-ов — не надейтесь, всё о чём я написал в равной степени относится к большинству языков web-программирования, г… код есть везде, он вездесущ.

Ну, а теперь о главном, нет о главной странице в 1,5 метра — дождется ли её загрузки пользователь со скоростью доступа в 256кбит? Клиентская оптимизация должна проводиться в обязательном порядке: YSlow да Page Speed вам в зубы. Да если погуглить, то даже небольшая правка htaccess для apache улучшит ситуацию:
# Enable ETag
FileETag MTime Size

# Enable Deflate
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript

<ifModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType text/html "access plus 1 seconds"
  ExpiresByType image/x-icon "access plus 2592000 seconds"
  ExpiresByType image/gif "access plus 2592000 seconds"
  ExpiresByType image/jpeg "access plus 2592000 seconds"
  ExpiresByType image/png "access plus 2592000 seconds"
  ExpiresByType text/css "access plus 604800 seconds"
  ExpiresByType text/javascript "access plus 216000 seconds"
  ExpiresByType application/x-javascript "access plus 216000 seconds"
</ifModule>

Пожмите JavaScript и CSS, да переключите jQuery на Google CDN.

anton.shevchuk.name/php/highload-optimization-for-children/

*чища свой гугл ридер в 2012, листая избранное в нем*

ЧТО Я УВИДЕЛ

Старое. О жизни
шарился искал что-то на форуме сибнета. увидел знакомый ник. открыл профиль, ДА БЛЯТЬ ЭТО ЖЕ ОНА.
в этом текущем бложеке, наверно уже никто не помнит этот ник. с 2005 еще, один из самых старых инет знакомых.
(много всякого было. и хорошего и плохого. да, раньше было время, раньше были настоящие люди, настоящие сообщества в инете)

итого почитал сообщения. никаких сомнений. это она.

и для истории, что-ли даже сохраню.
может кто-ниб помнит всякие терки на тему «люди не меняются». ну я считаю что люди могут измениться, я верю в это. но кому-то и правда — не дано.

так вот, увидев этот пост.

Лора — не меняется.

А вот за это, я ее уважаю.

После знакомства с Никс, очень многое понял, что не понимал в 2005/2006 например.

// я если честно, уже и не надеялся увидеть ее когда-ниб. думал она убила себя или что-то в этом духе. особенно когда последние остатки активности(2009-10) исчезли. эти остатки были очень похожи на завещание. она вполне могла, ведь она была из настоящих людей ;) сейчас увидев такие новости — реально рад за нее.

ihc.ru наконец-то стал предоставлять "вип-шаред"

Хостинг


До этого, на обычном виртуальном шареде, у них было всего 3 тарифа. 3 дешевых лимитных тарифа.
за 50р = 5 сайтов, 1ГБ, ∞ sql(100 Мб), 3% cpu, 500 cpu-mysql — бесплатный тест 10 дней
за 120р = 10 сайтов, 3 ГБ, ∞ sql(300 Мб), 5% cpu, 700 cpu-mysql — бесплатный тест 10 дней
за 200р = ∞ сайтов, 6 ГБ, ∞ sql(600 Мб), 5% cpu, 700 cpu-mysql — бесплатный тест 10 дней
А теперь есть и за 1000р = ∞ сайтов, 200 ГБ, ∞ sql(10 ГБ), 35% cpu, 5000 cpu-mysql — бесплатный тест 10 дней

т.е. их шаред хоть и был хорошим(я как-то писал что в силу лимитов он даже школо-досы локает, просто придет превышение нагрузки), но для постоянной большой нагрузки не годился. только переход на vds.
не знаю почему они не вводили такие тарифы ранее, ведь нагрузочный шаред тоже довольно популярен среди людей.
ведь согласитесь, много людей просто не_хотят разбираться с администрированием vds, но у них есть нагрузочные домены, поэтому им и подходят всякие vip тарифы.

Честности ради, замечу, что на випе все равно маловато для % проца или sql.
Лучше купить VDS за 850р/1500р, он выдержит больше, если его настроить.
НО вот если ключевой момент, где не_нужно разбираться с vds(потому что дефолт vds положить школо-досом проще, чем шаред), то такие нагрузочные-шареды идеальный выход.

Сейчас кстати, ihc.ru для меня — не имеет никаких критичных недостатков. Если бы не моя привычка изучать и наблюдать(2011 в инете, я посвятил хостингу, так уже вышло), то я бы советовал абсолютно под все нужны и вопросы, что мне задают люди. Потому что набор услуг — полноценный теперь.

Я кстати не писал пост. Но в конце января, они скинули цены на свои vds.
*ах да, бекапы vds тут не делаются. или отдельная услуга у них. или купить тут 50гб за 100р.

И еще, я в 2010 не особо жаловал эту контору. НО после прошедшего времени. (vds на ihc.ru я юзаю с сент 2010, а шаред с апреля 2010)
ТАК ВОТ — не разу в ДЦ Оверсан нихуя не горело на моей памяти. А в hetzner постоянно что-то сгорает и меняется, хоть и не напрягает особо, но такие дела.

Virtuos - Summer

AMV


Кстати, заметили же, по утрам солнце начало в окна проникать?