Срочно нужен АДМИН

Господа, мне срочно нужен толковый админ. Если среди вас есть такой человек или у вас есть такой знакомый, то срочно пишите мне!

Подробнее об условиях и задачах, дано:

1) Злой сервер, на котором висит почти 1000 запросов в секунду

2) Переполненная БД

3) Lighttpd, который имеет обыкновение раз в два дня падать без видимых причин

4) четыре харда, которые начинают не справляться с нагрузкой и на которых заканчивается место

Что нужно:

1) Посоветовать что делать в текущей ситуатции + возможно поднастроить все это дело (особенно lighttpd)

2) Либо переконфигурить все к черту на apache + nginx

3) Посоветовать архитектуру будущего кластера под этот проект и собрать его в дальнейшем (если потребуется)

4) Справляться с мелкими проблемами время от времени

Оплата мгновенная исключительно по вебмани.

Пишите в комменты, а еще лучше на мыло – [email protected]

Техническая оптимизация проектов (для злых программеров)

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

Приведу простой пример – нубы очень любят пофлеймить на тему того, как лучше делать конкатенацию строк – “маша $otshila васю” или “васе все равно “.$poh.” на Машу” и начинаются безумные холивары на тему производительности и так далее. А по большому счету – да какая хрен разница сгенерится страница на 5 миллисекунд быстрее или нет ? В общем надеюсь моя позиция по этому поводу ясна :twisted:

Теперь перейдем к конкретике – волшебный проект gickr.com

Говорю сразу, код был написан не мной, а моим рыжим сотоварищем, и после просмотра кода этого самого товарища мне хотелось придушить :) Но код работал, гифки генерились, и это было самое главное! Жило все это добро на VPS от паршивой компании Dreamhost и в какой-то момент нам просто вырубили imagemagick с формулировкой “ребята, вы ЧО ! охренели создавать 100 процессов imagemagick и нагружать наш суперпупермегамногоядерный Xeon на 99%”. И вот тут-то и началась оптимизация.

Шаг номер 1 – Найди bottle neck (то бишь узкое место)

Главное выяснить что отжирает больше всего процессорного времени, это делается простыми засечками типа:

function CurTime() {
list($usec, $sec) = explode(' ', microtime());
$time2 = (double) $usec + (double) $sec;
if(!defined("__TIME__"))define("__TIME__", $time2);
$l = round($time2 - __TIME__, 6);
return $l;
}
CurTime();
тут куча кода ...
echo CurTime();

Шаг номер 2 – заоптимизируй это самое узкое место нахрен

В моем случае выяснилось две вещи:

1) Если ставить ватермарк на каждый кадр гифа, а потом уже собирать сам гиф, то это получается в 3 раза быстрее чем ставить ватермарк на уже готовый гиф! В общем если подумать почему так, то все становится ясно, ведь чтобы поставить ватермарк на готовый гиф, надо его опять разобрать на кадры, шлепнуть лого и собрать опять.

2) Если 500 человек захотят одновременно сделать большие гифы, то они все равно положат почти любой сервак.

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

Шаг номер 3 – заоптимизируй все остальное если не в лом и делать нечего :)

Ну а тут открывается простор для полета фантазии и действий, можно бесконечно оптимизировать БД и запросы к ней, можно например поставить APC и кэшировать популярные запросы, можно вообще присобачить HTML кэш :) Помнится когда я сделал одну системку, на которой сейчас работает 49 мемберок одной известной в узких кругах партнерки, меня только HTML кэш и спас (и это все на кластере из 8 машин)

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

P.S. Вообще, все ведь уже поняли что все самое интересное на этом блоге происходит именно в комментах ? :)

Мониторим свой сервер по полной

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

В этот раз начнем с того, что неплохо бы мониторить свой сервер (или vds). То есть четко знать где чего происходит, или в какой момент возникает перегрузка.

Шаг номер раз: устанавливаем loadavg. Это вполне милый скриптик, пример работы которого можно посмотреть тут – gickr.com loadavg. Это очень удобный и наглядный просмотр статистики по : зазгрузке сервера, использованию оперативки, использования канала. В принципе на сайте разработчика все подробно расписано про установку. Закачать файло, создать папку для логов, повесить скрипт на cron. Единственное замечание – в первые сутки может некорректно отображать статистику, так что наберитесь терпения и дальше все будет как по маслу. Мне действительно очень помогает видеть нагрузку на сервер.

Шаг номер два: ставим vpsinfo. Пример смотрим тут – gickr.com stat. Тут все немного сложнее, но тоже хорошо описано на сайте разработчика. Фокус в том, что для полного отображения статистики придется установить кое-какое дополнительное ПО. А именно vnstat и mysqlreport. Первое – это хренька для мониторинга трафика, второе – статистика по MySQL. Хоть я сам ни разу ни админ линукс-серверов, но у меня все отлично собралось из исходников без единой проблемы на Fedora Core 6. Настройка самого скрипта тоже предельно интуитивная и делается прямо в начале его кода :) Как результат получаем вывод кучи полезной и не очень информации в одно место. Меня спасало много раз от кучи неприятных ситуаций на сервере.

Шаг номер три: для завершения картины ставим графическую оболочку для vnstat. Она покажет сколько трафика утекло и в какой момент. Там вообще нет никаких премудростей, так что вперед. Результат глянуть тут – gickr traffic.

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

P.S. Для любопытствующих по поводу сервера, на котором вертится гикр:

  • Opteron 246
  • 4Gb registred ECC RAM
  • 250Gb + 250Gb + 750Gb (обычные SATA харды)
  • 100Mbit канал

Хорошие сервера почти даром

Обещал рассказать где беру свои сервера – и вот пожалуйста. Хочу отметить сразу, это НЕ рекламный пост, мне за него никто не платит, и никаких коммисионных я тоже не получу. Просто мне очень нравится эта компания, и я решил ее немного попиарить :)

Итак, прошу любить и жаловать – Zenex5ive – на мой взгляд лучшее соотношение цена/качество. У меня стоят там два сервера и я всем абсолютно доволен.

Плюсы:

  • Никакой платы за установку сервера
  • Сама установка занимает 3-4 часа
  • Вам поставят все что вашей душе будет угодно за бесплатно. Любая OS, большой выбор панелей (я пользуюсь Plesk)
  • Хорошие каналы в датацентре. Ребята недавно избавились от Cogent и теперь их суммарная пропускная способность – 71 Gbps.
  • В цену уже входит администрирование, саппорт отвечает максимум 15-30 минут. Особенно если им все разжевать подробно сделают все очень быстро и качественно.
  • Трафик действительно неограничен, у меня на канале 100Mbit уходит примерно 60-70Gb в день, но без проблем может уходить до 9 Тб в месяц.
  • Очень дешевые апгрейды, причем с единоразовой оплатой, а не прибавкой к абонентке (хотя можно выбрать и такой вариант, но зачем платить всегда, если можно это сделать один раз)

Минусы:

  • Пока что ни одного не нашел

Причем когда ребята один раз накосячили (угробили мне дамп базы, а у меня не оказалось свежего бэкапа), они просто подарили мне 2Gb ECC RAM ценой в $300!

К сожалению цены для всех вас будут немного больше чем для меня :) Но все равно они остаются очень низкими. Да и в общем если вам ОЧЕНЬ нужен хороший сервер, а по деньгам очень впритык, напишите мне, может быть будут спец. предложения для меня, и я смогу договориться ;)

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

Наверно я попишу немного про серверные дела и что-то еще (тут просили рассказать про Испанию), потому как на адсенс-фронте ничего сильно нового пока что не происходит.

P.S. Кстати недавно Давыдов объявил что я рулю ))) За что ему выражаю свое спасибо. Было приятно.