Kbase P159773: How much memory is used by the client in Web services out call with a ProdataSet?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/02/2010 |
|
Status: Unverified
GOAL:
How much memory is used by the client in Web services out call with a ProdataSet?
GOAL:
How much memory it will take to process a 50 Mb SOAP request?
FACT(s) (Environment):
OpenEdge 10.1x
OpenEdge 10.2x
Unix
Windows
FIX:
While processing a SOAP response the client will go through the following phases:
1. Read the SOAP message from the network
2. Transcode the SOAP message from UTF-8 to UTF-16
3. Parse SOAP envelope into a DOM tree
4. Parse the ProDataSet into a DOM tree
5. Serialization of ProDataSet SOAP DOM tree
6. Parse the ProDataSet into a Xerces/C DOM tree
There are two factors which influence the memory usage:
1. SOAP message size
2. XML structure of the data provided by the web service implementation.
More fields in the temp-table contained in a SOAP message lead to more complex XML, requiring more memory when parsed.
There is no exact formula for the memory usage based on the SOAP response size, however a linear dependency can be assumed :
MEM_USAGE = A * SOAP_SIZE + B
Where A and B constants can be experimentally determined by testing with various sizes for the data coming from the web service while keeping the same XML structure.
On OpenEdge 10.2B for Solaris a 50MB SOAP message has been seen to cause a process to grow to 1.4GB in size, while a process receiving a 10MB SOAP message of a similar structure grew to 346 MB. NOTE DIFFERENTLY STRUCTURED MESSAGES WILL RESULT IN DIFFERENT RESULTS.