WebService performance

Posted by Admin on 19-May-2010 09:03

I'm running a series of simple web service calls from OpenEdge 10.1C.

Pseudo code whise this is what i do:

1) connect
2) call webservice 1 to open session.
3) call webservice 2 to retrieve data (ca 10kbytes of xml).
4) parse xml.
5) call webservice 3 to close session.
6) disconnect.

Running this on my desktop is more than twice as fast as running it on our production server (SUN Sparc T5140). GHz wise my desktop is indeed faster but I wonder if this has to do with only raw cpu power. The parsing of the xml is just a fraction of the total time used.

Only creating the connection takes a lot of time.

CREATE SERVER ghWebService.
ghWebService:CONNECT(" -WSDL '" + gcWsdlFile + "'").
RUN AmadeusWebServicesPT SET ghAmadeusWebServicesPT ON ghWebService.

Desktop timing: about 2 seconds. Server timing: about 5 seconds!

WSDL-file and .xsds total to 33 files and roughly 3 megabytes.

Any input about this?

All Replies

Posted by rbf on 19-May-2010 09:08

Slow connects are often an indication of DNS problems. In other words, resolving the host name from your machine.

Posted by Admin on 20-May-2010 01:46

Inserting the hostname into /etc/hosts doesn't make any difference. Also running "nslookup hostname" wont indicate any dns issues.

The connection is HTTPS and I use no other parameters than the -wsdl file.

I've also checked all three initiation statements (create, connect and run) and its connect that takes 90% of the time.

Posted by rstanciu on 20-May-2010 06:05

try to you save the WSDL file localy, and connect with the local file path.

Posted by Admin on 20-May-2010 06:10

The WSDL and all the XSDs already are locally saved.

The wsdl seem to point to the local xsd's as well.

example:

<xsd:import namespace="http://xml.amadeus.com/TTSTRQ_05_1_1A" schemaLocation="Ticket_DisplayTST_05_1_1A.xsd"/>
<xsd:import namespace="http://xml.amadeus.com/TTSTRR_05_1_1A" schemaLocation="Ticket_DisplayTSTReply_05_1_1A.xsd"/>

the wsdl and xsds are stored in the same folder.

Posted by rstanciu on 20-May-2010 06:23

I mean, the variable: gcWsdlFile points to the local file ?

ghWebService:CONNECT(" -WSDL '" + gcWsdlFile + "'").

Posted by Admin on 20-May-2010 06:26

Yes, it does!

It's  gcNorwegianWSDL = "/export/home/folder/folder/folder/wsdl-file.wsdl".

Posted by rstanciu on 20-May-2010 06:30

3Mb of wsdl/xsd information is abnormal, very big.

Try to use another testing too like: http://www.soapui.org/

Posted by Admin on 20-May-2010 06:46

Yes I agree but it is the way it is. The wsdl file is supplied to us and there is little I can do to make it smaller.

I still don't understand why the difference is so big between my two machines...

Posted by rstanciu on 20-May-2010 07:17

the big difference is the file-system performances,

try this on both machines you will see the file-system diff

java SyncTest aaaaa

Posted by mresnick on 20-May-2010 07:23

Jens,

How much memory does the Solaris machine have. It's possible the parsing of the WSDL/XSD file is increasing the size of the process to the point where it's affecting the performance of the entire machine.

Michael

Posted by Admin on 20-May-2010 07:30

8 gigabytes. There are several process run on the server thought. Mainly Apache 2 and WebSpeed.

According to vmstat there should be free memory.

kthr      memory            page            disk          faults      cpu
r b w   swap  free  re  mf pi po fr de sr m0 m1 m2 m3   in   sy   cs us sy id
0 0 0 24989184 6125248 127 396 23 144 144 0 1 2 1 1 0 5789 14186 7449 2  1 97
0 0 0 24403080 5574040 221 528 0 497 497 0 0 0 0 0  0 7567 15300 9690 3  1 96

Posted by Admin on 20-May-2010 07:36

Thanks!

This makes it even trickier though. Since the server seems to be ALOT faster than my computer. (Thank god for that since it's about 20 times more expensive).

(I ran several times and got similar results).

Server

=======================================================
Your tests might show results similar to the following:
=======================================================
Poor:
Desktops: 100-500 syncs/second
Good server: >1.000 syncs/second
Fast server: 4.000-6.000 syncs/second
Ramdisk/gcj: >200.000 syncs/second
=======================================================
You are there -> 2316.7420814479638 syncs/second
Elapsed time (ms) = 442

Old Dell computer:

=======================================================
Your tests might show results similar to the following:
=======================================================
Poor:
Desktops: 100-500 syncs/second
Good server: >1.000 syncs/second
Fast server: 4.000-6.000 syncs/second
Ramdisk/gcj: >200.000 syncs/second
=======================================================
You are there -> 102.08354102282922 syncs/second
Elapsed time (ms) = 10031
=======================================================

This thread is closed