университета водных коммуникаций
Список литературы
1. Зубарев Ю. Я. Автоматизаций процессов управления в судостроении / Ю. Я. Зубарев. — Судостроение, 1978. — 264 с.
ПРИМЕНЕНИЕ ПРОГРАММЫ MEMCACHED ДЛЯ ОПТИМИЗАЦИИ СИСТЕМЫ
ИНТРАНЕТА СУДОХОДНОЙ КОМПАНИИ
USE OF MEMCACHED PROGRAM FOR OPTIMIZATION OF INTRANET SYSTEM
FOR SHIPPING COMPANY
В данной статье рассматривается один из способов оптимизации скорости работы корпоративного интранета. Проведенное исследование позволило увеличить производительность системы интранета судоходной компании до 24 раз.
The paper considers one of the ways of optimization of the corporative intranet speed for a shipping company. The investigation carried out helped to speed up the website to 24 times as much.
Ключевые слова: java, web, cach, memcached, веб-приложение.
Key words: java, web, cache, memcached, enterprise web application.
УДК 65 (G75.B)
А. А. Булов,
д-р экон. наук, профессор, СПГУВК;
А. А. Булов,
аспирант,
СПГУВК
БМСЛСНББ — это высокопроизводительная система кеширования данных в оперативной памяти. Это
она имеет встроенную поддержку во многих популярных фреймворках. Однако данная система неоправданно редко используется в веб-приложениях Java. Проведенные нами исследования показали, что Memcached может быть успешно использован для оптимизации скорости работы системы корпоративного интранета судоходной компании. Система, которая была оптимизирована, включает корпоративный интранет с 450 активными пользователями, средняя нагрузка — 3 запроса в секунду. Сервер приложений — Jboss Application Server 5, приложение написано с применением фреймворков EJB 3.0 и Struts 2. Время открытия страниц — от 3 до 12 с. Аппаратная платформа сервера: Intel Xeon 2Ghz, 4Gb
так называемое хранилище типа ключ-значение, реализующее принципы хеш-таблицы. Memcached является отдельным приложением и может запускаться как сервис или демон, поэтому использует свое адресное пространство в памяти, а доступ к нему осуществляется по сетевому интерфейсу. Это позволяет использовать его не только для кеширования данных программы, но и для кеширования данных сервера, реверсивного прокси-сервера и базы данных.
Данная система кеширования широко
используется РНР-разработчиками для ускорения работы веб-приложений. К тому же
RAM.
Выпуск 4
|Выпуск4
университета водных коммуникаций
Задача состояла в увеличении производительности приложения без значительного изменения кода и архитектуры приложения. После предварительного анализа были выявлены наиболее ресурсоемкие страницы сайта (эти же страницы были самыми часто посещаемыми в интранете):
1. Главная страница: 6 запросов к БД.
2. Страничка учета рабочего времени сотрудника: 4 запроса к БД, вызов ресурсоемкого алгоритма подсчета рабочего времени при каждом посещении страницы.
3. Страничка рабочего времени сотрудников для менеджеров: 4 запроса к БД, множественный вызов ресурсоемкого алгоритма подсчета рабочего времени.
4. Список сотрудников: 2 ресурсоемких запроса к БД.
Использование кеша Hibernate L2 cache было признано нецелесообразным, так как постоянно повторялись всего 2 из i6 ресурсоемких запросов. К тому же данные проходили нетривиальную обработку перед отображением. Поэтому было принято решение использовать Memcached.
Изменению подверглись 4 EJB Stateless Bean-сервисы, отвечающие за получение данных из базы и работу бизнес-логики. Дополнительно был создан контроллер кеша, отвечающий за работу драйвера Memcached. Всего было добавлено около 250 строк кода, отвечающих за работу кеша.
Результаты замера производительности (среднее время загрузки страницы за полный рабочий день) представлены в таблице:
Страница Загрузка до оптимизации Загрузка после оптимизации
Главная 2.5s (2565 msec) 0.2s (212 msec)
Рабочее время 4.8s (4SS9 msec) 0.4s (437 msec)
Менеджерский раздел i2s (i2403 msec) 0.5s (516 msec)
Список сотрудников 6.7s (6730 msec) 1.0s (1050 msec)
Как видно из таблицы замера скорости загрузки страниц, производительность возросла до 24 раз. При этом данный результат был достигнут без изменения малоэффективных алгоритмов и серьезного вмешательства в архитектуру приложения.
Как показали результаты исследования, использование кеша может серьезно повысить скорость работы практически любо-
го веб-приложения, даже если его применение не было заложено архитектурно. Кроме того, Memcached поддерживается реверсивным прокси-сервером п§тх, что позволяет кешировать не просто результаты запросов, а целые страницы. Это серьезно снижает нагрузку на сервер приложений, если динамические данные на страницах меняются редко.
Список литературы
1. Чернышов Р. Сравнительный тест систем кеширования пользовательских данных для PHP / Р. Чернышев [Электронный ресурс]. Электрон. дан. Режим доступа: http://club.shelek.ru/view-art.phpid=300
2. Slaviero М. Hacking memcached serverers / М. Slaviero [Электронный ресурс]. Электрон. дан. Режим доступа: http://www.sensepost.com/labs/tools/ poc/go-derper
3. Смирнов А. HighLoad-2010: Приемы разработки высоконагруженных приложений на Twisted/Python [Электронный ресурс]. Электрон. дан. Режим доступа: http://www.smira.ru/2010/10/28/ highload-2010-twisted-python-development/
4. Смирнов А. Веб-кеширование memcached / А. Смирнов // Тр. МГУ им. М. В. Ломоносова. — М., 2008.