nginx-0.7.8
Denis F. Latypoff
denis at gostats.ru
Wed Aug 6 11:45:46 MSD 2008
Hello Igor,
Wednesday, August 6, 2008, 1:39:58 PM, you wrote:
> On Wed, Aug 06, 2008 at 01:10:43PM +0700, Denis F. Latypoff wrote:
>> Hello Igor,
>>
>> Tuesday, August 5, 2008, 11:00:11 PM, you wrote:
>>
>> > On Tue, Aug 05, 2008 at 10:51:59PM +0700, Denis F. Latypoff wrote:
>>
>> >> Hello Igor,
>> >>
>> >> Tuesday, August 5, 2008, 9:29:28 PM, you wrote:
>> >>
>> >> > On Tue, Aug 05, 2008 at 09:00:29PM +0700, Denis F. Latypoff wrote:
>> >>
>> >> >> Hello Igor,
>> >> >>
>> >> >> Tuesday, August 5, 2008, 8:23:03 PM, you wrote:
>> >> >>
>> >> >> > On Tue, Aug 05, 2008 at 05:19:20PM +0400, Igor Sysoev wrote:
>> >> >>
>> >> >> >> > > То есть, нужно искать по импортам до первого ненулевого mediaType ?
>> >> >> >> > > Ну, и естественно, сначала проверять mediaType в самом xsl.
>> >> >> >> >
>> >> >> >> > Да. И encoding тоже.
>> >> >> >>
>> >> >> >> OK.
>> >> >>
>> >> >> > Патч. Те же и encoding.
>> >> >>
>> >> >> 1) s/ngx_log_debug1/ngx_log_debug3/ ngx_http_xslt_filter_module.c:780
>> >> >> 2) на indent можно забить: "XSLT-процессор не обязан выполнять это
>> >> >> требование, и в этом случае трудно
>> >> >> предугадать точную форму вывода"
>> >> >>
>> >> >> Все в порядке, вроде потестил с многоэтажными import'ами, все как по
>> >> >> спеке.
>> >>
>> >> > Новый патч. Включает всё, что было, + единственные копии XSLT-деревьев.
>> >>
>> >> Патч срежектил пару строк (в кое каких местах табуляция
>> >> протиснулась), плюс пара полей у структур не синхронизировна с кодом
>> >> (или наоборот), я интуитивно поправил, все в порядке, для каждого
>>
>> > Да, там есть некоторая рассинхронизация.
>>
>> >> location (около 20) прописал одну и ту же таблицу стилей, все в порядке.
>>
>> > Было бы интересно увидеть, есть ли какая-нибудь разница по сравнению с Апачём.
>>
>> # cat /etc/redhat-release
>> CentOS release 4.6 (Final)
>>
>> # uname -a
>> Linux monster 2.6.26 #1 Sat Jul 19 02:14:28 OMSST 2008 i686 i686 i386
>> GNU/Linux
>>
>> # httpd -l
>> Compiled in modules:
>> core.c
>> mod_perl.c
>> prefork.c
>> http_core.c
>> mod_so.c
>>
>> + mod_apreq2.so + mod_rpaf-2.0.so + mod_xslt2.so
>>
>> StartServers 10
>> MaxClients 10
>>
>> в обоих случаях nginx проксировал апача.
>>
>> #######################################################################
>> 1) в апаче включен mod_xslt, в nginx выключен
>>
>> Concurrency Level: 10
>> Time taken for tests: 121.974 seconds
>> Complete requests: 10000
>> Failed requests: 0
>> Write errors: 0
>> Keep-Alive requests: 10000
>> Total transferred: 39990000 bytes
>> HTML transferred: 37780000 bytes
>> Requests per second: 81.98 [#/sec] (mean)
>> Time per request: 121.974 [ms] (mean)
>> Time per request: 12.197 [ms] (mean, across all concurrent requests)
>> Transfer rate: 320.17 [Kbytes/sec] received
>>
>>
>> PID USER PR NI %CPU TIME+ %MEM VIRT RES SHR S COMMAND
>> 19860 daemon 20 0 10.0 0:14.82 1.1 16136 10m 3256 R httpd
>> 19859 daemon 20 0 9.3 0:14.82 1.1 16136 10m 3256 R httpd
>> 19861 daemon 20 0 9.3 0:14.82 1.1 16396 10m 3256 R httpd
>> 19862 daemon 20 0 9.3 0:14.82 1.1 16400 10m 3256 R httpd
>> 19863 daemon 20 0 9.3 0:14.82 1.1 16140 10m 3256 R httpd
>> 19864 daemon 20 0 9.3 0:14.82 1.1 16400 10m 3256 R httpd
>> 19865 daemon 20 0 9.3 0:14.82 1.1 16144 10m 3256 R httpd
>> 19866 daemon 20 0 9.3 0:14.82 1.1 16136 10m 3256 R httpd
>> 19867 daemon 20 0 9.3 0:14.82 1.1 16140 10m 3256 R httpd
>> 19868 daemon 20 0 9.3 0:14.82 1.1 16400 10m 3256 R httpd
>> 19850 daemon 20 0 3.3 0:00.96 0.4 6776 3992 656 S nginx
>> 19898 root 20 0 0.7 0:00.14 0.1 2956 1136 804 S ab
>>
>> #######################################################################
>> 2) в апаче выключен mod_xslt, в nginx включен
>>
>> Concurrency Level: 10
>> Time taken for tests: 46.451 seconds
>> Complete requests: 10000
>> Failed requests: 0
>> Write errors: 0
>> Keep-Alive requests: 10000
>> Total transferred: 31360000 bytes
>> HTML transferred: 28930000 bytes
>> Requests per second: 215.28 [#/sec] (mean)
>> Time per request: 46.451 [ms] (mean)
>> Time per request: 4.645 [ms] (mean, across all concurrent requests)
>> Transfer rate: 659.29 [Kbytes/sec] received
>>
>> PID USER PR NI %CPU TIME+ %MEM VIRT RES SHR S COMMAND
>> 19988 daemon 20 0 24.6 0:09.12 1.0 12376 9932 1132 R nginx
>> 19965 daemon 20 0 8.0 0:07.90 1.0 14604 9.8m 2476 S httpd
>> 19958 daemon 20 0 7.3 0:08.26 1.1 15628 10m 2936 S httpd
>> 19959 daemon 20 0 7.3 0:08.16 1.1 15628 10m 2916 S httpd
>> 19960 daemon 20 0 7.3 0:08.18 1.1 15624 10m 2900 S httpd
>> 19961 daemon 20 0 7.3 0:08.12 1.0 14504 9.8m 2476 S httpd
>> 19962 daemon 20 0 7.3 0:08.16 1.0 14604 9.8m 2476 S httpd
>> 19963 daemon 20 0 7.3 0:08.24 1.0 14604 9.8m 2476 S httpd
>> 19964 daemon 20 0 7.3 0:08.22 1.0 14604 9.9m 2476 S httpd
>> 19966 daemon 20 0 7.3 0:08.12 1.0 14604 9.8m 2476 R httpd
>> 19967 daemon 20 0 7.3 0:08.08 1.0 14604 9.8m 2476 S httpd
>> 20007 root 20 0 1.3 0:00.18 0.1 2956 1144 804 S ab
> Афигеть. Разница в 2.5 раза. А казалось бы - и там, и там основное время
> уходит на парсинг XML и трансформацию по готовому дереву XSLT.
> А что в Апаче делается с DTD в XML ?
подозреваю, что дело не в DTD:
mod-xslt: creating dictionary for stylesheet
mod-xslt: reusing dictionary from /xxx/layout.xsl for stylesheet
mod-xslt: xsltParseStylesheetProcess : found stylesheet
[понеслась парсилка]
mod-xslt: parsed 51 templates
mod-xslt: Resolving attribute sets references
mod-xslt: Creating sub-dictionary from stylesheet for transformation
mod-xslt: Registered 0 modules
mod-xslt: reusing transformation dict for output
[понеслась транформация]
mod-xslt: freeing transformation dictionary
mod-xslt: freeing dictionary from stylesheet
похоже кеширование таблиц заложено (см 'reusing'), но не реализовано.
--
Best regards,
Denis mailto:denis at gostats.ru
More information about the nginx-ru
mailing list