- Альф, ты веришь всему, что пишут?
- Да. Кроме надписи "противоударные".
Из моего любимого сериала "
Альф"Когда я первый раз в жизни сел за руль грузовика ... Да, тут надо уточнить. Не смотря на мою неприязнь к машинам - в школе я выучился на механника грузовиков и тракторов и могу, если чуть повспоминать, водить грузовые машины без прицепа и колесные тракторы. Учиться я ни когда не любил, поэтому все теоретические занятия поругливал. Пришел на практику. А меня сразу за руль ЗИЛ-130. Мол, давай, выруливай со двора УПК, и чеши в сторону Феодосии. Ну, я завел машину, учитель на пассажирском месте, одноклассники в кунге. Тронулись. Учитель километра 1.5 едет молча, но сердито сопит. Потом не выдержал:
- Ручник убери, что ли.
Оказалось, я все это время ехал, забыв убрать ручной тормоз. А он, как раз из-за таких увальней как я, прогуливающих теоретические занятия, в таком состоянии, что можно ездить, не убирая его.
К чему это я? :) К чему этот эпиграф? Я доделал ФотоРомантику :)
Блин, я - тормоз. Самый настоящий тормоз. На хостинге Зенона я доставал всех тем, что мои Apache-процессы стабильно жрали 30% cpu. Но у меня там модуль Template, mod_perl и ни какой особой математики, все мало-мальсские расчеты отданы на откуп MySQL. Ну не чему там жрать столько процессора. Загадка. Неразрешимая. В результате я оказался на VPS, ресурсов которого мне сразу стало не хватать на столько сильно, что страницы ФР либо открывались по пол минуты, либо не открывались вовсе, выдавая ошибку "Server time-out".
Первое, что я сделал - вылизал до блеска Apache. Отключил ненужные модули, оттюнил количество процессов, тредов, предстартинг серверов. Помогло. Нагрузка на моем Ubuntu-сервере упала до 30-40 (это la однопроцессорной конфигурации!). В общем - ситуация почти не изменилась - сайт так и тупит.
Занялся MySQL. Перепоектировал базу, убрав из нее InnoDB, который, гадина, жрущий ресурсы, все часто обновляющие таблички расформировал на таблицы: одна для статических данных, к которой линкуются другие таблицы, другая - для постоянных апдейтов, куда заглядываю эпизодически и отдельными короткими запросами. Помогло. la стал где то 20-30.
Ну и последнее, что я сделал - переписал шаблоны генерации страниц с фотографиями для использования AJAX. По сути - просто загрузка фоток, не прибегая к перегрузке всей страницы целиком. Удобно и просто. Ну и стало чуть быстрее, но все равно не то. И вот вчера вечером один из авторов написал вопрос в аську, пожаловавшись, что очень медленно и неудобно:
- Кость, но справишься?
- Справлюсь! - пообещал я, не имея более ни чего в кармане, что бы еще покрутить, но не теряя интуитивной уверенности, что действительно справлюсь.
И что бы справиться ... я выключил всю технику дома, одел бриджи, легкую рубашку, кеды и короткие перчатки, взял лонгборд и на весь оставшийся день умотал на ВДНХ. Катался. Носился. Гонял. Выбросил из головы все заботы, отдавшись полностью скорости,
ветру, прекрасной работе мышц и отличному настроению. Даже посидел на травке немного у ракеты, там фигуристы на роликах ТАКОЕ выделывают ... а одна, такая розовенькая вся, в обтяжку, так танцует, что даже завораживает. А по дороге домой, уже затемно, я нечайно прыгнул на лонгборде через "лежачего полицейского". Я всегда перед ним спрыгивал с лонгборда и после него опять запрыгивал. А тут забыл про него и, в темноте, не увидел. Ни чего - тело привычно так, чувствуя сопротивление, перенесло корпус назад и чуть приподняло меня над доской, давая ей свободно подняться на неожиданное препятсвие. Чудесно, чудесно.
Явился домой. Зная, что на ФР все плохо, а у меня так ни одной мысли и нет, даже не стал комп включать, накормил зверей, начал мыть посуду ... и тут меня осенило. С руками в мыльной пене, ринулся включать всю технику, спустя минуты две уже был подключен к VPS по SSH ... и начал материться. В голос. Громко. Смачно. И ржать.
Apache! Тормозит Apache. И это не смотря на то, что я ему, для отдачи 12 гигов статического контента, сделал фронетенд в виде nginx-а перед ним. Но в моих скриптах не чему тормозить. Модуль Template и в нем весьма не жрущие шаблоны ... Модуль Template? Модуль Template!!! Полез к нему в доки, нашел директивы, управляющие предкомпиляцией и кэшированием шаблонов. И загрустил - пишут, что, по умолчанию, все включено и трогать ни чего не надо. Включено ... и тормозит ... а что если не включено? Мало ли кто там собирал эти модули перед укладкой в Ubuntu-вские репозитории. Включил принудительную компиляцию и кэширование.
И меня сдуло со стула. Время овтета страницы вчера, в самое свободное от пользователей время, составляло доли секунды! la на машине упало до менее чем 1. И если apache жрет теперь больше 5% cpu - уже считаю много. Сделал еще упреждающую загрузку больших картинок и старницы просмотра фоток вообще стали открываться практически мгновенно. Черт, черт, черт! Т.е. я всю дорогу на новом движке, считай с прошлого года, заставил ФР "ехать с ручником". Садист!
Просчти инструкцию и сделай по-своему!
Сегодня все утро по дороге на работу задавал себе вопрос: откуда у меня была эта уверенность, что я смогу все сделать? Откуда интуиция это знала? Видимо я натыкался уже раньше при чтении документации на эти директивы кэширования и компиляции, но сознание прошло мимо, а подсознание сделало пометку и не давало мне сдаться. Все же как это здорово - уметь слушать и слышать свое подсознание. А сегодня на работе открыл
интерактивный "Карманный справочник Мессии" Ричарда Баха все продолжая размышлять о таком завершении почти полунедельного танца с бубнами и получил цитату: Когда корабль твоего духа наткнется на риф материи, то на куски расколется риф.
Мне не чего тут добавить! :) Разве что Кипелова:
P.S.: Теперь, при новых показателях нагрузки, создаваемой ФР, я могу проситься назад на виртуальный хостинг ;) Но не буду - уже привык к VPS. Но все же - какая потрясающая школа Зенон была у меня в жизни. Без нее я бы не справился, это факт. Вспоминать мне ее всю жизнь, похоже. Надо будет заехать в гости.