Тег ‘performance’

http://verytunes.ru/

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

Оптимизация fanat1k.ru

Описание проекта: Портал о футбольной команде Спартак Москва.

Описание работ над проектом: После того, как проект перерос shared хостинг и переехал на отдельный VPS сервер, то встал вопрос в оптимизации как ОС VPS сервера, так и проекта. Вместе с администрацией проекта провели оптимизацию:

1) На уровне БД – оптимизация конфигурации MySQL демона под конфигурацию сервера, кеширование запросов, backup, slow логи. В дальнейшем при помощий explain оптимизировали несколько особо тяжелых запросов.

2) Перевел проект на nginx + fastcgi php5. Также, добавление opcode кешера позволило снизить нагрузку на VPS сервер.

После переезда проекта на выделенный сервер донастроил DNS сервер и почту для домена fanat1k.ru. Почта обязательно с антивирусом и антиспамом.

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

Оптимизация files.desu.ru

В этом разделе решил писать о проектах, которыми занимался в свое время.

Начнем пожалуй с http://files.desu.ru

Описание проекта: Портал о аниме, Японской культуре и всем, что с этим связано.

В 2007 году у проекта возникли сложности в работе портала. Раздача аниме через http просто “вешала” сервер, судя по статистике LA уходил в 150-160, и через 20-30 минут после запуска WEB сервера ОС сервера уходила в ступор. Соотвественно появилось желание оптимизировать проект, о чем договорились с его администрацией.

Описание работ над проектом: Начнем пожалуй с сервера, оборудование было предоставлено “домашней сетью” с Юга Москвы. Сервер стоял в ДЦ на М9. Судя по конфигурации под проект выделили desktop в 19” корпусе, сетевая карта интегрированная, HDD SATA без RAID массива. OS Gentoo 2007.1, amd64.

После предоставления shell доступа на сервер сделал буквально следующее:

1) Пересобрал Apache2 с поддержкой prefork, до этого был worker. Оптимизировал конфигурацию WEB сервера.

2) Пересобрал PHP5 без тредов, иначе судя по логам Apache2 часто падал под нагрузкой из-за ошибок связанных с работой php скриптов.

3) Изменил схему работы на frontend (nginx) + backend. Это позволило убрать apache2 с раздачи “большой” статики, а также настроить лимиты по отдаче файлов для 1 IP. В последствии написал обвязку к системе лимитов, которая добавляла IP в iptables, если посетитель сайта не понимал правил раздачи установленные на сервере и пытался все равно обойти систему лимитирования количества одновременных коннектов с 1 ip.

4) Оптимизировал MySQL, а именно – включил кеширование и выделили под него побольше памяти. Также увеличил размеры буферов для обработки запросов. Также как обычно включил slow логи, что позволило оптимизировать некоторые запросы к БД и в итоге сказалось на общей производительности проекта в целом.

5) Настроил систему резервирования конфигурации сервера и реализовал ежедневный backup MySQL DB.

Результат: После оптимизации проекта все заработало как часы. Некоторые параметры подгонялись в соотвествии с показаниями статистики сервера и информации в лог файлах, но это заняло всего несколько дней. Под рабочей нагрузкой сервер успевал отдавать под 160 Mbit/s.

Что не успел сделать: В связи с тем, что у владельца сервера изменились интересы, он забрал его и закрыл доступ для проекта. Соотвественно не успели перейти на софтовый RAID массив и нормальную сетевую карту. RAID массив нужен был из-за того, что просто уперлись в IO, а с интегрированной сетевой картой были проблемы в плане производительности.

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

Настройка производительности UNIX-систем

Еще одна книга, которую прочитал недавно: Джан-Паоло Д. Мусумеси, Майк Лукидес “Настройка производительности UNIX-систем”.

Настройка производительности UNIX-системОписание книги в магазине Озон:

Книга “Настройка производительности UNIX-систем” отвечает на два важнейших вопроса: как добиться максимального эффекта без покупки дополнительного оборудования, и в каких случаях его все же стоит приобрести (больше памяти, более быстрые диски, процессоры и сетевые интерфейсы). Вложение денежных средств – не панацея. Адекватно оценить необходимость обновления и добиться максимальной производительности можно, только хорошо представляя работу компьютеров и сетей и понимая распределение нагрузки на системные ресурсы.Авторы книги оказали неоценимую помощь администраторам, подробно и аргументировано рассказав обо всех тонкостях искусства настройки систем. Полностью обновленное издание ориентировано на Solaris и Linux, но обсуждаемые принципы применимы к любым системам. В книге рассматриваются настройка параметров, управление рабочим процессом, методы измерения производительности, выявление перегруженных и неработоспособных участков сети, добавлен новый материал о дисковых массивах, микропроцессорах и оптимизации программного кода.

Краткое резюме по данной книге: 1 – Книга старовата для нашего времени, с 2003 года уже многое изменилось в ОС Linux/Solaris. 2 – После прочтения книги появилось стойкое желание “поиграться” с Solaris, так как судя по кратко изложенной информации она намного интереснее других ОС своей возможностью более глубокого изучения как самой ОС так и приложений которые в ней работают. 3 – Книга раскрывает некоторые моменты в плане мониторинга производительности Linux/Solaris систем, пытается научить читателя стандарту тестирования производительности и анализа ОС по всем уровням: сеть, процессы, диски, ПО. Рекомендуется для прочтения всем, кто хочет упорядочить знания по настройке производительности ОС, но не получить готовые ответы, а просто получить направления, в которых следует дальше развиваться.