<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Varien &#187; performance</title>
	<atom:link href="http://varien.com.ua/blog/tags/performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://varien.com.ua</link>
	<description>Varien/Magento blog</description>
	<lastBuildDate>Fri, 25 Jun 2010 13:02:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ускоряем Magento: Часть 3 – Методика тестирования</title>
		<link>http://varien.com.ua/blog/speed-up-magento-p-3-testing-process/</link>
		<comments>http://varien.com.ua/blog/speed-up-magento-p-3-testing-process/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 09:10:05 +0000</pubDate>
		<dc:creator>Михаил Бессолов</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[производительность]]></category>

		<guid isPermaLink="false">http://varien.com.ua/?p=529</guid>
		<description><![CDATA[Третья статья из серии "Ускоряем Magento", в которой мы опишем методику измерения производительности Magento, используемую в наших тестах.]]></description>
			<content:encoded><![CDATA[<p>Третья статья из серии &#8220;Ускоряем Magento&#8221;, в которой мы опишем методику измерения производительности Magento, используемую в наших тестах.</p>
<p>Предыдущие статьи в серии &#8220;Ускоряем Magento&#8221;:</p>
<ul>
<li><a href="http://varien.com.ua/blog/speed-up-magento-p-1-what-is-the-goal/">Часть 1 &#8211; К чему стремиться</a></li>
<li><a href="http://varien.com.ua/blog/speed-up-magento-p-2-web-server-configuration/">Часть 2 &#8211; Настройка веб-сервера</a></li>
</ul>
<p>Целью этих тестов является показать преимущества той или иной конфигурации и настроек. Чтобы обеспечить возможность легко воспроизвести эти тесты или сравнить с другими конфигурациями позднее, мы решили провести тестирование в на виртуальных серверах в &#8220;облаке&#8221;. Следует заметить, что тесты на &#8220;реальном железе&#8221; дают намного лучшие результаты, что мы продемонстрируем в следующих статьях, сравнив несколько конфигураций физических серверов и виртуальную среду.</p>
<p>Тесты запускали на серверах в &#8220;облаке&#8221; Rackspace Cloud Servers &#8211; <a href="http://www.rackspacecloud.com">www.rackspacecloud.com</a>. Запускаемые копии серверов использовали базовый образ операционной системы CentOS 5.3 x86_64, предоставляемый сервером (вы сможете выбрать любую другую из более чем 15 различных образов операционных систем). После запуска ОС производилась установка всех обновлений (yum update), устанавливались Apache, PHP и MySQL. Установочные пакеты PHP и MySQL для CentOS взяты из RPM-репозитория Remi &#8211; <a href="http://rpms.famillecollet.com">rpms.famillecollet.com</a>. Все тесты проводились на Magento с тремя различными наборами данных &#8211; Magento Sample Data (~130 продуктов) и тестовые каталоги с 10 и 80 тысячами продуктов. </p>
<p>При тестировании измерялось количество запросов в секунду, которое может обработать система при запросах к стартовой странице и при запросах в течение &#8220;стандартной сессии посетителя&#8221;. Список страниц, которые входят в &#8220;стандартную сессию посетителя&#8221; приведён ниже на странице.</p>
<p>На всех графиках используются следующие обозначения для Magento с каталогами разного размера:</p>
<ul>
<li><strong>sd</strong> &#8211; Magento Sample Data</li>
<li><strong>10k</strong> &#8211; Magento с 10 тысячами продуктов</li>
<li><strong>80k</strong> &#8211; Magento с 80 тысячами продуктов</li>
</ul>
<p>Каждый тест запускался с разным количеством параллельных потоков &#8211; 10, 20, 50 и 100 параллельных подключений.<br />
Для тестирования использовалась утилита siege &#8211; <a href="http://www.joedog.org/index/siege-home">www.joedog.org/index/siege-home</a> и набор простых shell-скриптов для запуска тестов в разных конфигураций и обработки полученных результатов.</p>
<p><strong>Список ссылок &#8220;стандартной тестовой сессии посетителя&#8221; для Magento Sample Data:</strong><br />
<code><br />
BASEURL=http://server.test/<br />
$(BASEURL)<br />
$(BASEURL)electronics/cell-phones.html<br />
$(BASEURL)electronics/cell-phones.html?price=2%2C100<br />
$(BASEURL)electronics/cell-phones.html?price=2%2C100&#038;color=23<br />
$(BASEURL)electronics/cell-phones/samsung-mm-a900m-ace.html<br />
$(BASEURL)checkout/cart/add/product/20/<br />
$(BASEURL)apparel.html<br />
$(BASEURL)cn-clogs-beach-garden-clog.html<br />
$(BASEURL)checkout/cart/<br />
$(BASEURL)checkout/onepage/<br />
$(BASEURL)catalogsearch/result/?q=ink&#038;x=0&#038;y=0<br />
$(BASEURL)apparel.html?cat=17<br />
$(BASEURL)apparel.html?price=1%2C100&#038;cat=17<br />
$(BASEURL)the-get-up-kids-band-camp-pullover-hoodie.html<br />
$(BASEURL)checkout/cart/add/product/39/<br />
$(BASEURL)apparel/shirts.html<br />
</code></p>
<p><strong>Список ссылок тестовой сессии для Magento с 10 и 80 тысячами продуктов</strong>:<br />
<code><br />
BASEURL=http://server.test/<br />
$(BASEURL)<br />
$(BASEURL)category-3.html<br />
$(BASEURL)category-3.html?cat=28<br />
$(BASEURL)category-3.html?cat=28&#038;price=2%2C1000<br />
$(BASEURL)category-3/pr15031-50.html<br />
$(BASEURL)checkout/cart/add/product/2489/<br />
$(BASEURL)category-273.html<br />
$(BASEURL)category-273/100-190-b7h.html<br />
$(BASEURL)checkout/cart/<br />
$(BASEURL)checkout/onepage/<br />
$(BASEURL)catalogsearch/result/?q=345&#038;x=0&#038;y=0<br />
$(BASEURL)category-273.html?cat=427<br />
$(BASEURL)category-273.html?cat=427&#038;ab_host=303<br />
$(BASEURL)category-273/r1256ap.html<br />
$(BASEURL)checkout/cart/add/product/1354/<br />
$(BASEURL)category-273/category-309.html<br />
</code></p>
<p><strong>Тестовые наборы данных</strong>:</p>
<p>Стандартный набор тестовых данных Magento Sample Data (~130 продуктов) доступен на странице загрузки по адресу <a href="http://www.magentocommerce.com/download">www.magentocommerce.com/download</a></p>
<p>Тестовые базы данных с 10 тысячами и 80 тысячами продуктов можно скачать по следующим ссылкам:</p>
<ul>
<li><a href="http://www.magentocommerce.com/downloads/assets/sample-db/magento_10k.sql.bz2">http://www.magentocommerce.com/downloads/assets/sample-db/magento_10k.sql.bz2</a></li>
<li><a href="http://www.magentocommerce.com/downloads/assets/sample-db/magento_80k.sql.bz2">http://www.magentocommerce.com/downloads/assets/sample-db/magento_80k.sql.bz2</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://varien.com.ua/blog/speed-up-magento-p-3-testing-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ускоряем Magento: Часть 2 – Настройка веб-сервера</title>
		<link>http://varien.com.ua/blog/speed-up-magento-p-2-web-server-configuration/</link>
		<comments>http://varien.com.ua/blog/speed-up-magento-p-2-web-server-configuration/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 16:15:10 +0000</pubDate>
		<dc:creator>Михаил Бессолов</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Настройка]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[mod_php]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[производительность]]></category>

		<guid isPermaLink="false">http://varien.com.ua/?p=533</guid>
		<description><![CDATA[Вторая статья из серии "Ускоряем Magento", в которой мы рассмотрим параметры конфигурации веб-сервера и оптимальную настройку Apache для запуска Magento.]]></description>
			<content:encoded><![CDATA[<p>Вторая статья из серии &#8220;Ускоряем Magento&#8221;, в которой мы рассмотрим параметры конфигурации веб-сервера и оптимальную настройку Apache для запуска Magento.</p>
<p>Предыдущие статьи в серии &#8220;Ускоряем Magento&#8221;:</p>
<ul>
<li><a href="http://varien.com.ua/blog/speed-up-magento-p-1-what-is-the-goal/">Часть 1 &#8211; К чему стремиться</a></li>
</ul>
<p>Хотя существует несколько способов настройки выполнения PHP-скриптов под Apache: как модуль (mod_php) или как FastCGI/CGI (например, с помощью <a href="http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html">mod_fastcgi </a>или <a href="http://fastcgi.coremail.cn/">mod_fcgid</a>), наиболее часто используется все-таки первый (mod_php).</p>
<p>Кроме mod_php в конфигурационном файле Apache по умолчанию включена загрузка почти всех доступных модулей, несмотря на то, что не все их них требуются для работы Magento. Это становится особенно актуально в многосерверной конфигурации, когда различные узлы занимаются выполнением разных задач, и могут быть сконфигурированы для оптимального выполнения конкретной задачи.</p>
<p>Минимально необходимый перечень модулей Apache для работы Magento:</p>
<ul>
<li><a href="http://httpd.apache.org/docs/2.2/mod/mod_expires.html">mod_expires</a></li>
<li><a href="http://httpd.apache.org/docs/2.2/mod/mod_deflate.html">mod_deflate</a></li>
<li><a href="http://httpd.apache.org/docs/2.2/mod/mod_mime.html">mod_mime</a></li>
<li><a href="http://httpd.apache.org/docs/2.2/mod/mod_dir.html">mod_dir</a></li>
<li><a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a></li>
<li><a href="http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html">mod_authz_host</a></li>
<li><a href="http://httpd.apache.org/docs/2.2/mod/mod_authz_user.html">mod_authz_user</a> – может понадобиться для ограничения доступа к тестовой среде с помощью аутентификации по паролям, но редко используется на &#8220;боевом&#8221; сервере.</li>
</ul>
<p>*Примечание: Мы рассматриваем настройку веб-сервера только с точки зрения Magento. Если у вас на том же сервере запущены другие веб-приложения, будьте осторожны при использовании приведенных рекомендаций.</p>
<p>Уменьшение количества загружаемых модулей (закомментировав соответствующие строчки &#8220;<a href="http://httpd.apache.org/docs/2.2/mod/mod_so.html#loadmodule">LoadModule</a>&#8221; в httpd.conf) позволяет несколько уменьшить объем памяти используемый веб-сервером, что может позволить обрабатывать больше одновременных соединений при том же объеме установленной памяти.</p>
<p>Важным параметром настройки Apache является задание оптимального количества запускаемых процессов Apache. На данный момент режим <a href="http://httpd.apache.org/docs/2.2/mod/worker.html">mpm_worker</a> все еще не может быть рекомендован для безопасного использования совместно с PHP, а процесс создания новых процессов Apache в режиме <a href="http://httpd.apache.org/docs/2.2/mod/prefork.html">mod_prefork</a> является &#8220;дорогой&#8221; операцией. Лучше всего работает создание необходимого количества процессов Apache сразу же при запуске веб-сервера. Это количество может быть определено практическим путем при максимальной загрузке сервера.</p>
<p>Обратите внимание, что значения параметров <strong><a href="http://httpd.apache.org/docs/2.2/mod/mpm_common.html#serverlimit">ServerLimit</a></strong> и <strong><a href="http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients">MaxClients</a></strong> нельзя увеличивать бесконечно. Они должны иметь значения, выставленные в зависимости от доступного количества физической памяти, для того, чтобы система не начала вытеснять &#8220;лишние&#8221; процессы Apache в раздел подкачки (что приведет к резкому &#8220;проседанию&#8221; сервера при увеличении нагрузки до определенного значения).</p>
<p>Параметр <strong><a href="http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></strong> можно оставить со значением по умолчанию (4000). </p>
<p>Использование пула постоянных соединений (keep-alive) хотя и улучшает скорость получения контента веб-браузером, но под высокой нагрузкой приводит к неоправданному перерасходу ресурсов сервера, поэтому <strong><a href="http://httpd.apache.org/docs/2.2/mod/core.html#keepalive">KeepAlive</a></strong> всегда должен быть выставлен в off.</p>
<p>Следующим важным параметром является использование сжатия контента. Несмотря на то, что это немного увеличивает использование вычислительных ресурсов сервера, выигрыш от быстрой отдачи контента броузеру и освобождение процессов для обработки следующих запросов с лихвой компенсируют эти &#8220;затраты&#8221;. Функциональность по компрессии контента предоставляется модулем <a href="<a href="http://httpd.apache.org/docs/2.2/mod/mod_deflate.html">mod_deflate</a>. В Magento в файле .htaccess приведены все необходимые директивы для включения компрессии, нужно просто раскомментировать соответствующие строки, чтобы уменьшить время загрузки страниц броузером. Вот пример части .htaccess, которая у вас получится в релузьтате:</p>
<pre>
    # Insert filter on selected content types only
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript

    # Netscape 4.x has some problems...
    BrowserMatch ^Mozilla/4 gzip-only-text/html

    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip

    # MSIE masquerades as Netscape, but it is fine
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    # Don't compress images
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

    # Make sure proxies don't deliver the wrong content
    Header append Vary User-Agent env=!dont-vary
</pre>
<p>Кроме того, можно избежать <a href="http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride">дополнительных затрат по сканированию всех директорий в пути</a> к запрашиваемому скрипту или файлу, внеся все параметры из файлов .htaccess в основной httpd.conf файла в соответствующие разделы <a href="http://httpd.apache.org/docs/2.2/mod/core.html#directory">&lt;Directory&gt;</a>.</p>
<p>И, в качестве дополнительного штриха, если вы используете программный балансировщик (например <a href="http://sysoev.ru/nginx/docs/http/ngx_http_upstream.html">nginx</a>) в многосерверной конфигурации, можно переложить на него все функции по ведению логов доступа. Это позволит снизить дисковую активность на бек-эндах Apache.</p>
]]></content:encoded>
			<wfw:commentRss>http://varien.com.ua/blog/speed-up-magento-p-2-web-server-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ускоряем Magento: Часть 1 &#8211; К чему стремиться</title>
		<link>http://varien.com.ua/blog/speed-up-magento-p-1-what-is-the-goal/</link>
		<comments>http://varien.com.ua/blog/speed-up-magento-p-1-what-is-the-goal/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 11:32:43 +0000</pubDate>
		<dc:creator>Михаил Бессолов</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Настройка]]></category>
		<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[производительность]]></category>

		<guid isPermaLink="false">http://varien.com.ua/?p=466</guid>
		<description><![CDATA[В этой серии статей мы расскажем, как добиться оптимальной работы вашего магазина при высокой нагрузке. Путем всего лишь правильной настройки сервера и Magento можно поднять производительность в 10-15 раз без каких-либо изменений в исходном коде системы.]]></description>
			<content:encoded><![CDATA[<p>В этой серии статей мы расскажем, как добиться оптимальной работы вашего магазина при высокой нагрузке. Путем всего лишь правильной настройки сервера и Magento можно поднять производительность в 10-15 раз без каких-либо изменений в исходном коде системы.</p>
<p>Мы постараемся в каждой статье подробно разобрать каждый из аспектов оптимизации. Все статьи будут проиллюстрированы результатами проведенных нами тестов.</p>
<p>Итак, вот пример сравнения производительности двух кофигураций:</p>
<ul>
<li>Слева &#8211; настройки сервера и Magento по умолчанию</li>
<li>Справа &#8211; оптимизированные настройки среды и самой Magento</li>
</ul>
<p><img src="http://varien.com.ua/wp-content/uploads/performance/speed-up-series/chart-z-optimized-environment-optimized-magento.png" alt="Default Environment and Magento Setup vs Optimized Configuration" /></p>
<p>Пояснение о процессе тестирования:</p>
<p>Все тесты проводились на виртуальном сервере в вычислительном облаке для того, чтобы обеспечить максимальную повторяемость результатов без привязки к конкретному оборудованию. В заключительной статье мы сравним производительность Magento, установленной на виртуальном сервере и реальном &#8220;железе&#8221;, так как по результатам нашего тестирования реальное &#8220;железо&#8221; может значительно превосходить виртуальный &#8220;облачный&#8221; сервер. </p>
<p>Тесты запускались на виртуальном сервере в облаке <a href="http://www.rackspacecloud.com">Rackspace Cloud Servers</a> используя образ операционной системы CentOS 5.3 x86_64, подготовленный компанией Rackspace. Создавая экземпляры виртуальных серверов вы сможете выбрать практически любой из распространенных дистрибутов (RHEL/CentOS/Debian/Ubuntu/Gentoo/Arch и другие). PHP и MySQL были установлены из бинарных пакетов <a href="http://rpms.famillecollet.com">репозитория Remi</a>. Конфигурационные файлы Apache и MySQL мы приведем при разборе соответствущих настроек.</p>
<p>Все тесты прогонялись на трех типах (размерах) каталога продуктов в Magento: Magento Sample Data с ~100 продуктов, каталог с 10 000 (10 тысяч) продуктов, и каталог с 80 000 (80 тысяч) продуктов.</p>
<p>В тестах мы измеряли какое количество запросов способен обработать магазин при обращении к стартовой странице сайта и в ходе усредненной сессии пользователя (посещение разных страниц каталога, пользование поиском и добавление товаров в корзину).</p>
<p>На графиках используются следующие сокращения по оси X:</p>
<ul>
<li>sd &#8211; Magento sample data</li>
<li>10k &#8211; магазин с 10 тысячами продуктов</li>
<li>80k &#8211; магазин с 80 тысячами продуктов</li>
</ul>
<p>Каждый из тестов запускался при разной нагрузке (concurrency &#8211; количестве одновременных соединений): 10, 20, 50 и 100 одновременных соединений.</p>
<p>Оранжевым цветом отмечены столбцы соответсвующие количеству запросов в секунду при усредненной сессии посещений, зеленым &#8211; количество запрос в секунду к стартовой странице.</p>
<p>В статье &#8220;Тестирование производительности&#8221; мы более подробно остановимся на используемых инструментах и используемой методике тестирования.</p>
]]></content:encoded>
			<wfw:commentRss>http://varien.com.ua/blog/speed-up-magento-p-1-what-is-the-goal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Magento и Zend Server</title>
		<link>http://varien.com.ua/blog/magento-zend-server/</link>
		<comments>http://varien.com.ua/blog/magento-zend-server/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 09:00:00 +0000</pubDate>
		<dc:creator>Евгений</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Возможности]]></category>
		<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[zend server]]></category>

		<guid isPermaLink="false">http://varien.com.ua/aboutus/205/</guid>
		<description><![CDATA[Недавно компания Zend выпустила специализированный продукт - <a href="http://www.zend.com/en/products/server/">Zend Server</a>, который увеличивает скорость работы веб-приложений, реализуя кэширование страниц, реорганизует и ускоряет скорость выполнения байт-кода. René Amirkhanian, Adrien Urban и Philippe Humeau, сотрудники хостинг-партнёра Magento, компании NBS System, постарались оценить прирост производительности, достигаемый с помощью данного решения [...]]]></description>
			<content:encoded><![CDATA[<p><em>Эта статья была написана <a href="mailto:rene.amirkhanian@nbs-system.com">René Amirkhanian</a>, <a href="mailto:adrien.urban@nbs-system.com">Adrien Urban</a> и <a href="mailto:philippe.humeau@nbs-system.com">Philippe Humeau</a> из компании <a title="NBS System" href="http://www.nbs-system.com/">NBS System</a>, <a title="хостинг-партнера Magento" href="http://www.magentocommerce.com/partners/view/122/nbs-system">хостинг-партнера Magento</a>, и опубликована</a> на французском <a title="WikiGento Blog" href="http://www.wikigento.com/?p=938#more-938">WikiGento Blog</a>.</em></p>
<p>Magento &#8211; это приложение PHP/Zend, интенсивно использующее ресурсы центрального процессора. С момента выхода версии 1.1.6, каждая новая версия включала в себя некоторые механизмы, призванные улучшать производительность платформы. Основной целью является уменьшение потребления ресурсов для данного e-магазина (попросту говоря &#8211; меньше процессорного времени), для того чтобы обслуживать большее количество пользователей на том же самом аппаратном обеспечении.</p>
<p>Одним из путей достижения лучшей производительности является оптимизация скорости генерации страниц PHP. На широко распространенных &#8220;<a href="http://ru.wikipedia.org/wiki/LAMP">LAMP</a>&#8221; серверах обычно используется Apache с модулем mod_php, или, иногда, с модулем fast_cgi.</p>
<p>Zend (компания, поддерживающая PHP), выпустила специализированный продукт &#8211; <a href="http://www.zend.com/en/products/server/">Zend Server</a>, который включает в себя стэк веб-приложений, и, помимо некоторых других возможностей, увеличивает скорость работы путем кэширования страниц, и реорганизации и ускорения байт-кода.</p>
<p>Apache в связке Zend Server являются альтернативой обычному Apache с mod-php для запуска Magento. Целью этого исследования является исследование и оценка улучшений производительности за счет использования данного ПО.</p>
<p>Большое спасибо Yoav Kutner (CTO компании Varien) за предоставленные заполненные тестовые каталоги для версий Magento 1.2 и 1.3. Также спасибо лаборатории Zend за помощь в конфигурации и тонкой настройке Zend Server, а также за полное объяснение механизма работы данного решения.</p>
<h3>Используемые методы и инструменты</h3>
<p>Бенчмарки делались с помощью утилиты <a href="http://www.joedog.org/index/siege-home">siege</a> (версия 2.66-2), с различным количеством одновременных потоков (5, 10, 20 and 40). Каждый поток открывал соединение с веб-сервером, запрашивал страницу и начинал все сначала после того, как страница была считана.</p>
<p>Тесты запускались по 5 минут каждый, и расчитывалось среднее количество полученных страниц для этого бенчмарка.</p>
<p>Проводились два типа тестов: первый &#8211; простой, мы просто загружали главную страницу в цикле, как можно быстрее.</p>
<p>Второй тест базировался на логах загрузки всех элементов броузером при посещении страницы (включая css, js, картинки). Так как загрузка одной страницы обычно вызывает загрузку нескольких элементов, отображаемое число будет значительно больше, чем количество страниц, реально видимых пользователю. На 18 страниц, просмотренных пользователем, приходится 91 скачанный элемент, среднее соотношение примерно 1 к 5.</p>
<p>Все результаты были получены на одном и том же &#8220;железе&#8221; и операционной системе, для целей тестирования. Обратное проксирование не использовалось. Во время запуска тестово был активен <a href="http://www.php.net/apc/">АРС кеш байт-кода</a>. Это было стандартное окружение по умолчанию, без применения тонких настроек.</p>
<p><strong>Железо:</strong></p>
<p>2 процессора: Quad-Core AMD Opteron&trade; Processor 2376 (2.3GHz), 8GB RAM</p>
<p><strong>Софт:</strong></p>
<p>ОС: Linux (2.6.27.10-grsec) Debian (Lenny)<br />
Веб-сервер: Apache2 (2.2.9-10+lenny2)<br />
PHP (mod-php): mod-php5 (5.2.6.dfsg.1-1+lenny3) / php-apc (3.0.19-2)<br />
PHP (Zend Server): zend-pe (1.0.0-1+b47) / mod-php5-zend-pe (5.2.9+b75)</p>
<p><strong>Репозитории:</strong></p>
<p>deb http://ftp.fr.debian.org/debian/ lenny main<br />
deb http://security.debian.org/ lenny/updates main<br />
deb http://volatile.debian.org/debian-volatile lenny/volatile main<br />
deb http://repos.zend.com/deb/pe pe non-free</p>
<h3>Тестирование разных версий Magento</h3>
<p>Эти тесты были выполнены в каталоге с более чем 80 000 (далее &#8211; 80k) продуктов.</p>
<p>Графики показывают среднее количество запросов в секунду, успешно обработанных сервером во время пятиминутного теста.</p>
<p><strong>Загрузка главной страницы</strong></p>
<p><img class="size-medium aligncenter" title="График 1 - Сравнение версий 1.2, 1.3 и 1.3 + flat каталог" src="http://varien.com.ua/wp-content/uploads/zend-server/graph1-500x286.jpg" alt="График 1 - Сравнение версий 1.2, 1.3 и 1.3 + flat каталог" width="500" height="286" /></p>
<p>Magento 1.3 собирает главную страницу гораздо быстрее, чем версия 1.2. Включенный Flat-каталог не сильно помогает в отображении главной страницы, и даже, похоже, замедляет процесс ее сборки при большой нагрузке. Производительность версии 1.3 в два раза выше чем 1.2 при небольших нагрузках, и на 33% больше при больших нагрузках.</p>
<p>При &#8220;стандартной&#8221; загрузке мы можем отметить 40%-ный прирост производительности в версии 1.3 по отношению к версии 1.2, по крайней мере для домашней страницы.</p>
<p><strong>Полный цикл посещения</strong></p>
<p><img class="aligncenter size-medium" title="График 2 - Полное посещение, сравнение версий 1.2, 1.3 и 1.3 + flat каталог (FC)" src="http://varien.com.ua/wp-content/uploads/zend-server/graph2-500x286.jpg" alt="" width="500" height="286" /></p>
<p>График показывает небольшое увеличение в версии 1.3 по сравнению с 1.2, механизм flat-каталога дает общее улучшение, которое существенно увеличивает производительность.</p>
<p>Резюмируя, можем привести такие значения:</p>
<p>Версия 1.2 -&gt; 1.3 : +66%<br />
Версия 1.3 -&gt; 1.3+FС : +20%</p>
<h3>Apache + mod-php по сравнению с Apache + Zend Server</h3>
<p>Zend Server (далее ZS) предлагает несколько встроенных технологий для увеличения производительности приложений:</p>
<ul class="disc">
<li>Zend Optimizer+ выполняет оптимизацию и кэширование байт-кода. Это увеличивает скорость PHP-приложений путем исключения процесса чтения скриптов с диска и их компилирования. Zend Optimizer+ запускается автоматически, и установка вашего приложения поверх Zend Server (ZS) &#8211; это всё, что вам нужно сделать чтобы насладиться его преимуществами. Во время тестов с ZS, кэш APC был деактивирован, так как Zend optimizer+ делает ту же работу.</li>
<li>Zend Page Cache позволяет кэшировать PHP страницы целиком. Кэширование страниц значительно увеличивает производительность веб-приложений, в то же время поддерживая динамические возможности с помощью системы правил кэширования, построенной на параметрах запросов и данных сессий пользователей. Кэширование страниц также имеет преимущество в том, что не требует никаких изменений в коде, и может быть настроено через интерфейс Zend Server. Только &#8220;pro&#8221;-версия включает в себя эту часть ПО, которая однозначно изменяет производительность к лучшему, в чем мы и убедимся через минуту.</li>
<li>Zend Data Cache это набор функций API, позволяющих разработчику сохранять и управлять данными (PHP строки, массивы и другие данные) и даже выдавать элементы либо из кэша диска, либо из кэша разделяемой памяти. Zend Data Cache позволяет настроить тонкое кэширование там, где полное кэширование страниц невозможно. Предлагаемый API легок в использовании в существующем коде, и во многих случаях разработчик может пропускать существующие участки кода, просто оборачивая их API кэширования. Эта возможность может быть использован путем незначительной доработки исходного кода ПО Varien.</li>
</ul>
<blockquote><p><strong>Примечание</strong>: Zend Optimizer+ и Zend Data Cache доступны в бесплатной версии Zend Server, в то время как Zend Page Cache требует покупки лицензии Zend Server (полное сравнение Zend Server и Zend Server Community Edition доступно на <a href="http://www.zend.com/en/products/server/editions">http://www.zend.com/en/products/server/editions</a>).</p></blockquote>
<h3>Настройка Zend Server для Magento</h3>
<p>В бенчмарке были определены 2 правила кэширования:</p>
<p>Первое правило кэширует файлы JavaScript, которые динамически подключаются к каждому запросу Magento. Это простое правило привело к значительному улучшению времени отклика.</p>
<p><img class="aligncenter size-medium" title="ZS - экран конфигурации стр.1" src="http://varien.com.ua/wp-content/uploads/zend-server/sc11-500x327.jpg" alt="ZS - экран конфигурации стр.1" width="500" height="327" /></p>
<p>Второе правило кэширует все веб-страницы, посещенные пользователями, у которых нет товаров в корзине и нет истории посещений (когда корзина не пустая, либо сохранена история пользователя &#8211; нет смысла в кэшировании страницы). Как вы видите на картинке внизу, это было сделано с помощью проверки переменных $_SESSION и разделению по $_SERVER['REQUEST_URI'] в дополнение к QUERY_STRING.</p>
<p><img class="aligncenter size-medium" title="ZS - экран конфигурации стр.2" src="http://varien.com.ua/wp-content/uploads/zend-server/sc2-499x427.jpg" alt="ZS - экран конфигурации стр.2" width="499" height="427" /></p>
<p>Наконец, Zend Optimizer+ был включен для оптимизации и кэширования PHP байт-кода.</p>
<p>Как видите, Zend Page Cache оказался очень мощной функцией. Он требует тонкой и тщательной настройки, но взгляните результаты:</p>
<p><strong>Главная страница / каталог из 80 000 продуктов</strong></p>
<p><img class="size-medium aligncenter" title="График 3 :сравнение между 1.3, 1.3 + FC, 1.3+ZS, 1.3+FC+ZS" src="http://varien.com.ua/wp-content/uploads/zend-server/graph3-499x254.jpg" alt="График 3 :сравнение между 1.3, 1.3 + FC, 1.3+ZS, 1.3+FC+ZS" width="499" height="254" /></p>
<p>Загрузка на главной странице не сильно повлияла на результаты, хотя при большой нагрузке на сервер (40 параллельных заросов), Zend Server (с или без page cage) немного лучше чем mod_php, но практически никакого реального влияния на тест. Выигрыш в 5% и даже меньше не является серьезным фактором и лежит в пределах статистической ошибки тестов.</p>
<p><strong>Полное посещение / 80k продуктов</strong></p>
<p><img class="size-medium aligncenter" title="График 4 : Полное посещение, диаграмма сравнения 80K продуктов" src="http://varien.com.ua/wp-content/uploads/zend-server/graph4-499x254.jpg" alt="График 4 : Полное посещение, диаграмма сравнения 80K продуктов" width="499" height="254" /></p>
<p>График говорит сам за себя, при любой нагрузке Zend Server с Page Cache и включенным flat каталогом в Magento действительно улучшают производительность.</p>
<p>Сравнивая 1.3 + flat каталог с такой же конфигурацией, но с установленной бесплатной версией ZS вместо APC, наш сервер получил  до 15% больше производительности.</p>
<p>Если же использовать полный Zend Server (с лицензией, в который включено кэширование страниц) на версии 1.3 с flat каталогом, сервер получил до 30% прироста производительности!</p>
<p>Mod PHP + APC -&gt; ZS: +15%<br />
Mod PHP + APC -&gt; ZS с лицензией: +30%</p>
<h3>Время отклика</h3>
<p><strong>Главная страница / 80k продуктов</strong></p>
<p><img class="aligncenter size-medium" title="График 5 : время загрузки" src="http://varien.com.ua/wp-content/uploads/zend-server/graph5-500x244.jpg" alt="График 5 : время загрузки" width="500" height="244" /></p>
<p>Этот график показывает время отклика на домашней странице во время загрузки. При значительной нагрузке, ZS дал до 35% сокращения времени отклика во время загрузки.</p>
<p><strong>Полное посещение / 80k продуктов</strong></p>
<p><img class="size-medium aligncenter" title="График 6 : диаграмма сравнения времени загрузки при полном посещении" src="http://varien.com.ua/wp-content/uploads/zend-server/graph61-500x244.jpg" alt="График 6 : диаграмма сравнения времени загрузки при полном посещении" width="500" height="244" /></p>
<p>Кэширование страниц сокращает время отклика во время полного посещения сайта даже под очень тяжелой нагрузкой. Выгоды от использования кэширования страниц в любом случае существенны, даже при стандартной загрузке. Можем засчитать 35%-ный выигрыш при серьезной загрузке в случае использования любой (бесплатной или лицензированной) версии ZS.</p>
<p>При средней и легкой загрузке, кэширование страниц дает гораздо больший эффект чем может дать бесплатная версия ZS. Этот неожиданный результат, вероятно, является следствием того, что механизм кэширования показал себя неэффективным при большой нагрузке, так как система использует свои ресурсы по-другому.<br />
У нас не было времени проверить, что именно является причиной &#8211; процессор, Линукс или сам ZS, однако тесты были проделаны несколько раз с одинаковыми результатами.</p>
<p>Таким образом, запомните, что выгоды механизма кэширования страниц в ZS будут становиться все менее эффективными по мере роста загрузки сервера. При обычной нагрузке, алгоритм Page Cache дал уменьшение времени загрузки до примерно 40%.</p>
<h3>Дополнительный технические детали тестов</h3>
<p><strong>Тестовые данные</strong></p>
<p>Все тесты были проведены с готовыми тестовыми данными (предоставленными компанией Varien)</p>
<p><img style="border: 0;" src="http://varien.com.ua/wp-content/uploads/zend-server/zend-magento-test-6.jpg" alt="image" width="488" height="72" /></p>
<p><strong>Описание тестов</strong></p>
<p><em>Тест главной страницы</em></p>
<p>Каждый поток загружает главную страницу без сохранения cookies, чтобы сымитировать одновременных пользователей.</p>
<p><em>Тест полного посещения</em></p>
<p>У нас есть список запросов, основанный на посещении сайта с помощью реального браузера. Каждый одновременный поток загружает каждый элемент один за другим так быстро как только сможет, и перегружается после удаления его cookies.</p>
<p>Список запрашиваемых страниц для базы данных из 80k продуктов (с информацией POST где возможно) <a title="здесь" href="http://www.wikigento.com/?p=938#more-938">здесь</a>.</p>
<h3>Планируемые тесты</h3>
<p><strong>Mage компилятор</strong></p>
<p>Во время подготовки этих тестов, вышла версия 1.3.1.1, включающая модуль <a href="http://www.magentocommerce.com/extension/1359/magento-compiler">Mage_Compiler</a>, и сразу за ней готовилась к выпуску версия 1.3.1.2, так что мы просто не успели включить некоторые тесты в этот обзор. Просто предположим, что весь механизм предназначен для уменьшения работы по вводу-выводу, с помощью включения большинства классов в несколько сборных файлов. Если ваши сервера использовали для работы в основном RAM, вы не ощутите значительного прогресса в производительности. Однако, если в серверах мало RAM, либо они в основном используют диски, вы убедитесь в выгодах использования данных возможностей!</p>
<p><strong>Nginx</strong></p>
<p>У нас не было достаточно времени для оценки результатов тестов с Nginx + PHP. Это решение давало результаты, промежуточные между Magento 1.3 + FC и Magento 1.3 + Zend Server (без Page cache). Так что эта комбинация достигала средних значений производительности, в отличие от Magento 1.3 + Zend Server или еще более продвинутых вариантов.</p>
<h3>Выводы</h3>
<p>Во-первых, позвольте заявить, что никакие электроны не были заряжены и не пострадали во время этих тестов. Возможно один или два СТО были вынуждены пострадать от кофейных вливаний, но чего только не сделаешь ради лучшего будущего E-commerce!</p>
<p>Если хотите более профессионального заключения, то можем сказать, что использование бесплатной версии ZS сказывается только положительно и действительно может заменить APC.</p>
<p>При использовании лицензированной версии ZS, механизм Page Cache очень эффективен, и может сократить используемые ресурсы железа на 25% для поддержания тех же возможностей хостинга. В некоторых случаях это может обернуться прямым сокращением расходов на сервера.</p>
<p>О Zend Server : это ПО имеет множество других полезных функций, но в этом отчете мы коснулись только тех, что так или иначе связаны с производительностью. Обо всем остальном несложно узнать, посетив веб-сайт Zend для гораздо более детального <a href="http://www.zend.com/en/products/server/">описания возможностей Zend Server</a>.</p>
<p>И последнее &#8211; настраивая сервер со всеми оптимизациями и используя приведенные рекомендации, на базе dual AMD 2376 с 8 Gb RAM, использующий ZS и кэширование страниц, вы сможете достичь уровня до 40 000 уникальных посетителей в день, что соответствует 2 500 одновременных сессий Magento при максимальной загрузке (при вынесении базы данных на отдельный сервер, и использовании обратного прокси типа <a href="http://www.squid-cache.org/">Squid</a> или <a href="http://varnish.projects.linpro.no/">Varnish</a> перед веб-сервером).</p>
<p>Эта оценка сильно зависит от сложности веб-сайта и типичного поведения ваших пользователей, но для стандартного сайта и обычного использования вы можете ожидать загрузки главной страницы в пределах 2 секунд.</p>
<p>И напоследок примерное суммарное сравнение производительности упомянутых конфигураций:</p>
<p><img class="aligncenter size-full" title="graph71" src="http://varien.com.ua/wp-content/uploads/zend-server/graph71.jpg" alt="graph71" width="259" height="100" /></p>
<p><em>Эта статья доступна также на <a href="http://www.magentocommerce.com/blog/comments/magento-zend-server-benchmarks/">английском</a> и <a href="http://www.wikigento.com/?p=938#more-938">французском</a> языке.</em></p>
<p><img style="border: 0; padding: 5px 10px 20px 0; " src="http://varien.com.ua/wp-content/uploads/license/cc-by-nc-sa.png" alt="Creative Commons Attribution-Noncommercial-Share Alike 3.0 License" align="left" /> <em><strong>Права:</strong> Оригинал этой статьи опубликован под лицензией Creative Commons &#8220;Attribution-Noncommercial-Share Alike 3.0&#8243; License. Только три компании (NBS System, Zend и Varien) могут использовать её в коммерческих целях.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://varien.com.ua/blog/magento-zend-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
