esbperformance / petals /

Filename Size Date modified Message
5.8 KB
2.9 KB
Petals ESB 4.1

Use Maven 2.x to build the artifacts as:

    $ cd ~/resources/esbperformance/petals
    $ mvn install

Increase heap memory to 2G by editing {PETALS_ESB_HOME}/bin/ 
(e.g. ~esbs/petals-esb-distrib-4.1.0/esb/petals-esb-4.1/bin/ read as follows

    JAVA_OPTS="-Xms2048m -Xmx2048m -XX:MaxPermSize=256m -Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl "

Edit ~/esbs/petals-esb-distrib-4.1.0/esb/petals-esb-4.1/conf/ and change the following to INFO level from MONIT

Go to the installation bin direcotry and start the petals platform

    $ cd {PETALS_HOME}/bin
    $ ./

Download the following jbi components and copy them into the install directory of the petals ESB

Petals SOAP BC

From the ~/esbs/petals-esb-distrib-4.1.0/esb-components directory, copy the SOAP binding component into the install directory

    $ cp ~/esbs/petals-esb-distrib-4.1.0/esb-components/ ~/esbs/petals-esb-distrib-4.1.0/esb/petals-esb-4.1/install

On the petals console you should see something like;

    [Petals.JBI-Management.InstallationService] : A new installer for the component 'petals-bc-soap' is loaded
    [Petals.Container.Components.petals-bc-soap] : Component Information is available at
    [Petals.Container.Components.petals-bc-soap] : Component started

Petals EIP SE

This is a bit of a special case, as we had to extend the EIP SE to add our own pattern to do header based routing (hbr
was not directly possible with Petals EIP SE standard version). So you have to get this built from the source

    $ cd ~/resources/esbperformance/petals/petals-se-eip
	$ mvn clean install

Then copy it to the installation directory

    $ cp target/ ~/esbs/petals-esb-distrib-4.1.0/esb/petals-esb-4.1/install

On the petals console you should see something like;

    [Petals.JBI-Management.InstallationService] : A new installer for the component 'petals-se-eip' is loaded
    [Petals.Container.Components.petals-se-eip] : Start component...
    [Petals.Container.Components.petals-se-eip] : Component started

Installing the services

Copy the deployable artifacts into the Petals deploy directory

    $ cd ~/resources/esbperformance/petals

    $ cp proxy/proxy-sa/target/ ~/esbs/petals-esb-distrib-4.1.0/esb/petals-esb-4.1/install
    $ cp hbr-soap/hbr-soap-sa/target/ ~/esbs/petals-esb-distrib-4.1.0/esb/petals-esb-4.1/install
	$ cp cbr/cbr-sa/target/ ~/esbs/petals-esb-distrib-4.1.0/esb/petals-esb-4.1/install

Service URLs

Direct Proxy
    url             : http://localhost:8084/petals/services/DirectProxy
    wsdl-url        : http://localhost:8084/petals/services/DirectProxy?wsdl

SOAP Body CBR Proxy
    url             : http://localhost:8084/petals/services/CBRProxy
    wsdl-url        : http://localhost:8084/petals/services/CBRProxy?wsdl

SOAP Header CBR Proxy
    url             : http://localhost:8084/petals/services/CBRSOAPHeaderProxy
    wsdl-url        : http://localhost:8084/petals/services/CBRSOAPHeaderProxy?wsdl


Petals ESB failed to support transport header based routing scenario, as the SOAP-BC doesn't send in any clue into the
NMR about the transport headers. Further to that there were no extension points to the SOAP BC even to get it done with
some coding, the only option available was to patch the SOAP-BC which we didn't want to as this is a perf test.

We strongly recommend that the SOAP-BC to be modified to be able to propagate any axis2 message context property into the
NormalizedMessage as its properties. This should be configurable in the Service Unit consume jbi configuration and the
implementation looked quite straight forward and just required a patch to the Marshaller.copyProperties method and the
way its called.

We were also not able to develop a successful XSLT and WS-Security sceanario with the Petals ESB. This may be possible for
a future round after investing more effort into this area.


The Petals ESB started to give errors from the smoke tests, and after processing 20 concurrent users with 100K messages, the system became unusable with a top output as follows:

top - 18:59:20 up 11:04,  4 users,  load average: 39.65, 36.95, 30.43
Tasks: 169 total,   1 running, 168 sleeping,   0 stopped,   0 zombie
Cpu(s): 93.9%us,  0.6%sy,  0.0%ni,  4.2%id,  0.0%wa,  0.0%hi,  0.1%si,  1.2%st
Mem:   7132352k total,  4885072k used,  2247280k free,   222712k buffers
Swap:        0k total,        0k used,        0k free,  1369876k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                               
22714 ubuntu    20   0 2912m 2.4g  15m S  774 34.8 312:58.08 java  

The log file contained lots of error messages, similar to the following:
0 2012/08/01 18:30:17,448 GMT+0000 WARNING [Petals.Container.Components.petals-bc-soap] : Try #0. No JBI message exchange processor is available in the pool. Wait 259ms before next try.
0 2012/08/01 18:30:41,815 GMT+0000 WARNING [Petals.Container.Components.petals-bc-soap] : Catch an exception on the WS invocation : null
0 2012/08/01 18:30:42,270 GMT+0000 WARNING [Petals.Container.Components.petals-bc-soap] : Catch an exception on the WS invocation : The server localhost failed to respond with a valid HTTP response
org.apache.axis2.AxisFault: The server localhost failed to respond with a valid HTTP response
0 2012/08/01 18:55:22,376 GMT+0000 INFO [Petals.JBI-Messaging.PriorityOrdererModule] : Memory threshold reached, persist some pending exchange if any
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.