Задумался над ускорением работы CMS Drupal. Очень эффективным способом оптимизации является механизм кеширования страниц. Изначально CMS Drupal уже имеет интегрированный механизм кеширования страниц. Включить и настроить его можна на странице управления механизмом кеширования: Управление => Настройка сайта => Производительность. Однако результаты работы можно считать удовлетворительными, а не отличными. Например, довольно часто приходится отключать оптимизацию CSS-файлов, поскольку оптимизация CSS-файлов иногда искажает тему оформления, что недопустимо. К тому же, результаты кеширования могли бы быть получше.
Итак, исходные данные:
Отключим кеширование, и проведем тестирование производительности:
# ab -n 1000 http://bg.net.ua/ Benchmarking bg.net.ua (be patient) Server Software: Apache/2.2.14 Document Path: / Concurrency Level: 1 Connection Times (ms) Percentage of the requests served within a certain time (ms) |
Имеем всего лишь 2,31 запроса в секунду (Requests per second). Однозначно - очень мало.
Теперь проведем аналогичное тестирование, но включим встроенный механизм кеширования.
# ab -n 1000 http://bg.net.ua/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking bg.net.ua (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: Apache/2.2.14 Server Hostname: bg.net.ua Server Port: 80 Document Path: / Document Length: 11838 bytes Concurrency Level: 1 Time taken for tests: 110.528 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 12414000 bytes HTML transferred: 11838000 bytes Requests per second: 9.05 [#/sec] (mean) Time per request: 110.528 [ms] (mean) Time per request: 110.528 [ms] (mean, across all concurrent requests) Transfer rate: 109.68 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 2 Processing: 101 110 13.3 109 448 Waiting: 97 105 12.1 104 397 Total: 102 111 13.3 110 449 Percentage of the requests served within a certain time (ms) 50% 110 66% 111 75% 112 80% 112 90% 114 95% 114 98% 115 99% 129 100% 449 (longest request) |
Ситуация улучшилась, но ненамного - до 9 запросов в секунду. Нужно поискать более "радикальный" метод. На замену стандартного режима кеширования воспользуемся возможностями модуля Boost.
Принцип работы модуля следующий. Модуль при первом запросе создает статическую HTML-страницу, помещая ее в свой кеш, откуда потом выдает всем следующим запросам. Кеш сбрасывается по расписанию или по событию, так что вероятность отдачи старой закешированой страницы минимальна. Также стоит отметить, что работает этот механизм только для анонимных пользователей, для авторизированых пользователей страницы генерируются по прежнему динамически.
Рассмотрим более детально инсталяцию и настройку модуля.
Проверяем, повысилась ли производительность ресурса:
# ab -n 1000 http://bg.net.ua/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking bg.net.ua (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: Apache/2.2.14 Server Hostname: bg.net.ua Server Port: 80 Document Path: / Document Length: 11921 bytes Concurrency Level: 1 Time taken for tests: 10.855 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 12407000 bytes HTML transferred: 11921000 bytes Requests per second: 92.12 [#/sec] (mean) Time per request: 10.855 [ms] (mean) Time per request: 10.855 [ms] (mean, across all concurrent requests) Transfer rate: 1116.20 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.2 0 3 Processing: 8 10 10.1 10 235 Waiting: 6 9 10.1 8 233 Total: 8 11 10.1 10 236 Percentage of the requests served within a certain time (ms) 50% 10 66% 10 75% 10 80% 10 90% 11 95% 11 98% 11 99% 13 100% 236 (longest request) |
Производительность выросла до 92 запросов в секунду. Результат не так уж и плох...
Последние комментарии
11 недель 4 дня назад
35 недель 6 дней назад
2 года 36 недель назад
3 года 6 недель назад
3 года 29 недель назад
3 года 44 недели назад
3 года 45 недель назад
3 года 48 недель назад
4 года 7 недель назад
4 года 12 недель назад