[ic] Upgrade to Interchange-5.7.4 performance issues

Stefan Hornburg (Racke) racke at linuxia.de
Wed Mar 17 13:53:39 UTC 2010


Bill Carr wrote:
> On Mar 17, 2010, at 7:43 AM, Stefan Hornburg (Racke) wrote:
> 
>> Bill Carr wrote:
>>> On Mar 17, 2010, at 7:06 AM, Bill Carr wrote:
>>>> On Mar 16, 2010, at 11:14 PM, Peter wrote:
>>>>
>>>>> On 17/03/10 13:34, Bill Carr wrote:
>>>>>> I tried removing all UTF-8 flags and directives and I've tried with
>>>>>> 5.7.5 nightly and I still get big slow downs compared to running
>>>>>> 5.4.0. During the slow downs there are several interchange processes
>>>>>> consuming 100% CPU. What else can I try?
>>>>> Have you tried setting the MINIVEND_DISABLE_UTF8 environment variable
>>>>> before starting the Interchange server?
>>>> Yes, I put the following right in bin/interchange
>>>>
>>>> $ENV{MINIVEND_DISABLE_UTF8} = 1;
>>> I ran strace on both 5.4.0 and 5.7.5 and one obvious difference I see in 5.7.5 is the following:
>>> open("/dev/urandom", O_RDONLY)          = 18
>>> read(18, "\322\201\304#", 4)            = 4
>>> close(18)                               = 0
>>> select(8, [2], NULL, NULL, {1, 0})      = 1 (in [2], left {0, 999998})
>>> read(2, "a", 1)                         = 1
>>> select(8, [2], NULL, NULL, {1, 0})      = 1 (in [2], left {0, 999999})
>>> read(2, "r", 1)                         = 1
>>> select(8, [2], NULL, NULL, {1, 0})      = 1 (in [2], left {0, 999999})
>>> read(2, "g", 1)                         = 1
>>> select(8, [2], NULL, NULL, {1, 0})      = 1 (in [2], left {0, 999999})
>>> read(2, " ", 1)                         = 1
>>> select(8, [2], NULL, NULL, {1, 0})      = 1 (in [2], left {0, 999999})
>>> read(2, "0", 1)                         = 1
>>> Followed by hundreds of the last two lines above (with different values). Is that a clue? Is that expected?
>> It somehow reads some data through a socket one by one character, that's for certain not efficient.
>> Can you pastebin a complete strace so we can see which socket is attached to filehandle #8?
> I put here http://www.bottlenose-wine.com/userfiles/strace.txt
> It was too big for pastebin. Wasn't sure what the relevant parts were in order to pare it down.

What's your exact Interchange/Apache setup? Do you use by chance mod_interchange?

The data which is read one-by-one looks like that:

108 SERVER_SOFTWARE=Apache/1.3.34 (Debian) mod_gzip/1.3.26.1a mod_ssl/2.8.25 OpenSSL/0.9.8c mod_interchange/1.33
29 UNIQUE_ID=S6DT5cCoAxsAAF2rMWs
25 GATEWAY_INTERFACE=CGI/1.1
24 SERVER_PROTOCOL=HTTP/1.1
18 REQUEST_METHOD=GET
29 QUERY_STRING=mv_tmp_session=1
38 REQUEST_URI=/testpage?mv_tmp_session=1
13 SCRIPT_NAME=/
19 PATH_INFO=/testpage
end
arg 0
env 31
43 DOCUMENT_ROOT=/www/linwoodwineco.com/htdocs
15 HTTP_ACCEPT=*/*
25 HTTP_ACCEPT_ENCODING=gzip
21 HTTP_CONNECTION=close
31 HTTP_HOST=www.linwoodwineco.com
77 HTTP_USER_AGENT=Mozilla/5.0 (compatible; ScoutJet; +http://www.scoutjet.com/)
34 PATH=/bin:/usr/bin:/sbin:/usr/sbin
59 REDIRECT_SCRIPT_URI=http://www.linwoodwineco.com/robots.txt
31 REDIRECT_SCRIPT_URL=/robots.txt
19 REDIRECT_STATUS=200
38 REDIRECT_UNIQUE_ID=S6DT5cCoAxsAAF2nMDM
24 REMOTE_ADDR=38.99.97.214
17 REMOTE_PORT=19033
56 SCRIPT_FILENAME=/www/linwoodwineco.com/htdocs/robots.txt
50 SCRIPT_URI=http://www.linwoodwineco.com/robots.txt
22 SCRIPT_URL=/robots.txt
25 SERVER_ADDR=204.213.240.2
42 SERVER_ADMIN=webmaster at bottlenose-wine.com
33 SERVER_NAME=www.linwoodwineco.com
14 SERVER_PORT=80
90 SERVER_SIGNATURE=<ADDRESS>Apache/1.3.34 Server at www.linwoodwineco.com Port 80</ADDRESS>

I extracted it with:

perl -ne 'print "\n" if /^\d+ read\(17, "\\n", 1\)/; print $1 if /^\d+ read\(17, "(.)", 1\)/' strace.txt

Regards
	Racke



-- 
LinuXia Systems => http://www.linuxia.de/
Expert Interchange Consulting and System Administration
ICDEVGROUP => http://www.icdevgroup.org/
Interchange Development Team




More information about the interchange-users mailing list