Оптимизация 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, а с интегрированной сетевой картой были проблемы в плане производительности.

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

comments powered by HyperComments