Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Anchortoptop

Running SPECjAppServer2004 benchmark on Geronimo

...

Issues still exist that prevent SPECjAppServer2004 from running on Geronimo.

This article is not a success story, but a collection of notes on the progress that has been made in this direction.

Current issue that requires your help is: #Running the benchmark

...

Disclaimer: This article is created to write down the existing experience and to make it reproducible. It is not targeted to be a comprehensive guide on either product or on merging them together. It's not also a replacement to the products' documentation, but just a step-by-step guide on how to make things work in a simple configuration, as it worked for me. Make sure you at least look through the documentation on both products before you proceed.

...

SPECjAppServer is a trademark of the Standard Performance Evaluation Corp. (SPEC). The SPECjAppServer2004 results or findings in this publication have not been reviewed or accepted by SPEC, therefore no comparison nor performance inference can be made against any published SPEC result. The official web site for SPECjAppServer2004 is located at http://www.spec.org/jAppServer2004/.

...

This article is written for SPECjAppServer2004 v1.05 and Geronimo v1.1. For other versions some stages may be different. Version of this article for Geronimo v1.0 is available here.

The described configuration uses as many Geronimo components as possible, including the built-in Derby database and the built-in Jetty or Tomcat servlet container. In fact, the configuration only uses Java, Geronimo, an external servlet container (e. g. Tomcat) and SPECjAppServer2004. To plug external components (most probably, a database), you have to change your configuration accordingly.

...

Geronimo is the Apache Software Foundation Java EE 1.4 certified application server. It is developed under Apache License and can be downloaded freely.

...

Sharing geronimo.host with emulator.host or driver.host is contradicting with the SPECjAppServer2004 documentation and would impact the performance severely and invalidate the benchmark results. However technically this is possible.

...

It was reported that some components may work incorrectly if working paths are too long or contain spaces. So it's recommended that you avoid long paths and spaces in them.

...

java -jar SPECjAppServer2004-Kit-v1.05-050425.jar

...

This is necessary to allow the SPECjAppServer2004 Driver to remotely access the EJBs deployed in Geronimo.

...

...

If your geronimo.host and your driver.host are the same machine, you have to adjust the port number of the Geronimo RMI Registry (to e. g. 1199), otherwise it would conflict with the SPECjAppServer2004 Driver that uses the default port of 1099:

...

...

Starting Geronimo

Go to your <GERONIMO> directory.

...

java -jar bin/server.jar

...

It will take some time to start. After that, you will see:

No Format

bgColorblack
borderStylesolid
Booting Geronimo Kernel (in Java blacksolid Booting Geronimo Kernel (in Java 1.4.2)... Starting Geronimo Application Server v1.1 [**********************] 100% 73s Startup complete Listening on Ports: 1099 0.0.0.0 RMI Naming 1527 0.0.0.0 Derby Connector 4201 0.0.0.0 ActiveIO Connector EJB 4242 0.0.0.0 Remote Login Listener 8009 0.0.0.0 Jetty Connector AJP13 8080 AJP13 8080 0.0.0.0 Jetty Connector HTTP 8443 0.0.0.0 Jetty Connector HTTPS 9999 0.0.0.0 JMX Remoting Connector 61616 0.0.0.0 ActiveMQ Message Broker Connector Started Application Modules: EAR: geronimo/webconsole-jetty/1.1/car RAR: geronimo/activemq/1.1/car RAR: geronimo/system-database/1.1/car WAR: geronimo/remote-deploy-jetty/1.1/car WAR: geronimo/welcome-jetty/1.1/car Web Applications: http://geronimo.host:8080/ http://geronimo.host:8080/console http://geronimo.host:8080/console-standard http://geronimo.host:8080/remote-deploy Geronimo Application Server started

If you get another result, particularly, if network errors show up, then something has gone wrong.

...

Sometimes, the startup fails because some local network addresses are inaccessible. This could happen, for example, if you have used a VPN interface that is disconnected now. By default, Geronimo uses the first local address it comes across to access its components, and may try to use a stale address, causing startup errors.

You may try disabling and then re-enabling the unused network interfaces to resolve such issues.

...

Use forward slashes ( / ) as directory separators!

...

ant/bin/ant clean

...

Build the application and configure it for Geronimo:

...

...

ant/bin/ant -Dappserver=geronimo

...

You will get the BUILD SUCCESSFUL diagnostic.

...

Go to the <SPEC>/config directory. Replace the content of each of the *db.properties files you find there with the contents of the attached db.properties template file. Make sure the pipeDir variable there points to a valid temporary directory, adjust if necessary.

Loading the tables

Run:

...

...

ant/bin/ant -Dappserver=geronimo loaddb

...

After some time, you will get the BUILD SUCCESSFUL diagnostic.

...

At this stage you need to deploy the configured components to Geronimo.

...

...

Note that if your geronimo.host and your driver.host are the same machine, and you changed the port number of the Geronimo RMI Registry, you should specify that port number in all deployer commands, like this:

...

java -jar bin/deployer.jar --port 1199 ...

Deploying database connector

...

java -jar bin/deployer.jar --user system --password manager deploy repository/tranql/tranql-connector-derby-embed-xa/1.1/tranql-connector-derby-embed-xa-1.1.rar <KIT>/sjas-db.xml

...

To deploy an ActiveMQ JMS connector for SPECjAppServer2004, go to the <GERONIMO> directory and run:

...

...

java -jar bin/deployer.jar --user system --password manager deploy repository/geronimo/ge-activemq-rar/1.1/ge-activemq-rar-1.1.rar <KIT>/sjas-jms.xml

...

You will get the Deployed SPEC/SPECjAppServerJMS/1.05/car diagnostic.

...

Go to the <GERONIMO> directory and run:

...

...

java -jar bin/deployer.jar --user system --password manager deploy <SPEC>/jars/SPECjAppServer.ear <KIT>/sjas2004.xml

...

You will get the Deployed SPEC/SPECjAppServer/1.05/ear diagnostic.

...

The Geronimo built-in servlet container (in case the emulator.host and the geronimo.host are the same machine); or a stand-alone servlet container on the emulator.host.

...

...

Note that SPECjAppServer2004 documentation requires that the Supplier Emulator servlet container should have the keep-alive option turned off. You can ignore this requirement, but that would impact the performance severely.

...

Using the Geronimo servlet container

...

java -jar bin/deployer.jar --user system --password manager deploy <SPEC>/jars/Emulator.war <KIT>/sjas-emulator.xml

...

Do not bother editing <SPEC>/config/tomcat.env file or running ant/bin/ant -f tomcat.xml.

Both files are obsolete, they generate the Emulator.war file, which has already been created at #Building the application phase.

...

bin/catalina run

...

bgColorwhite
borderStylesolid

...

Emulator Servlet seems to work OK
JAS_HOST : emulator.host
JAS_PORT : 8080
Servlet URL : Supplier/DeliveryServlet

Number of Transactions : 0
Servlet invoked without command specified

...

bin/setenv.bat

...

bin/driver.bat

...

If you wish to run a distributed load with multiple Drivers, then after the Driver is started on the first host (the master.host), start the Driver on other driver hosts like this:

...

...

bin/driver.bat master.host

...

After starting the Driver, you should see the output like this: No FormatbgColor

blackborderStylesolid The following environment settings are in effect for SPECjAppServer2004 * ========================= * JAVA_HOME=<JAVA_HOME> JAS_HOME=<DRIVER> CONFIG_DIR=<DRIVER>\config APPSSERVER=geronimo ENVFILE=<DRIVER>\config\geronimo.env * ========================= * Driver Host: <driver.host> Binding controller to //<driver.host>/Controller DriverDebug: DealerAgent <propsFile> <agentName> <masterMachine> Controller: Registering M1 on machine <driver.host IP address> Controller: Registering O1 on machine <driver.host IP address> Controller: Registering L1 on machine <driver.host IP address> Calling switchLog as master RunID for this run is : 75 Output directory for this run is : <OUTPUT>\75 TTF1 = 93 ttf = 93 Configuring 1 DealerAgent(s)... DealerAgent O1, Thread 0 started DealerAgent O1, Thread 1 started DealerAgent O1, Thread 2 started DealerAgent O1, Thread 3 started DealerAgent O1, Thread 4 started DealerAgent O1, Thread 5 started DealerAgent O1, Thread 6 started DealerAgent O1, Thread 7 started DealerAgent O1, Thread 8 started DealerAgent O1, Thread 9 started Configuring 1 MfgAgent(s)... MfgAgent M1, Thread 0 started MfgAgent M1, Thread 1 started MfgAgent M1, Thread 2 started Configuring 1 LargeOLAgent(s)... MfgAgent L1, Thread 0 started Rampup = Fri May 12 20:49:51 MSD 2006 SteadyState = Fri May 12 20:59:51 MSD 2006 Rampdown = Fri May 12 21:59:51 MSD 2006 Finish = Fri May 12 22:04:51 MSD 2006 sleeptime is 28417 note this is time in excess needed for trigger Starting Ramp Up...

This means the Driver started normally.

...

You can interrupt the run at any point with Ctrl-C.

...

Sometimes binding exceptions or other problems may occur at the Driver startup. In such a case, interrupt the test run with Ctrl-C and rerun it again. Sometimes it helps.

...

...

It's recommended to reload the database tables before each run, particularly if previous run was not finished correctly. Otherwise, errors like this may occur:

...

black

...

solid

...

java.rmi.RemoteException:

...

Failure

...

in

...

calling

...

validateInitialValues()

...

java.rmi.RemoteException:

...

Invalid

...

initial

...

Order

...

DB

...

State

...

at

...

org.spec.jappserver.driver.Auditor.validateInitialValues(Auditor.java:201)

...

at

...

org.spec.jappserver.driver.Driver.configure(Driver.java:330)

...

at

...

org.spec.jappserver.driver.Driver.<init>(Driver.java:160)

...

at

...

org.spec.jappserver.driver.Driver.main(Driver.java:1137)

...

During the run, the following diagnostics may appear in the Driver window:

No FormatbgColorblackborderStylesolid AbstractSJASLoad> Application error has already been cancelled

and in the same time, various TransactionRolledback and other exceptions of the same kind are being printed in the Geronimo shell.

...

These diagnostics are probably caused by the fact that TranQL version 1.3 used in Geronimo version 1.1 does not provide the necessary transaction isolation level. Hopefully, this problem will be fixed in TranQL version 1.3.1.

...

After the run has completed successfuly, you will see the output like this:

No FormatbgColorblackborderStylesolid Gathering DealerStats ... Gathering MfgStats ... summary file is <OUTPUT>\75\SPECjAppServer.summary SPECjAppServer2004 v1.05 Results JOPS: *** Dealer Response Times Purchase...0.4 Manage.....1.5 Browse.....0.4 Manufacturing Response Times Mfg........0.0 Calling getLog as master

The number of JOPS is a final benchmark metric.

...

For now these values for Geronimo are terribly low, and don't depend on the hardware being used. Probably this is due to some configuration issues that still exist or due to TranQL issue mentioned above.

...

java -cp reporter.jar reporter Your_Submission.txt

...

Run the following command to generate a text-only benchmark report, it would be named Your_Submission.report.txt:

...

...

java -cp reporter.jar reporter -a Your_Submission.txt

...

For the details on how yo submit your results, see SPECjAppServer2004 User's Guide :: Section 5.3 – Submitting the Results

...