Pages

Thursday, April 26, 2012

What you can learn from the WebSphere Application Server Performance 2012 SPECjEnterprise 2010 Results


IBM did a world leadership publish on SPECjEnt  benchmark that was accepted by the SPEC organization.  The result are available here:  http://www.spec.org/jEnterprise2010/results/res2012q2/.

If you are a WAS customer that needs to squeeze the last bit of performance out of WAS on a performance mission critical application then you should study and emulate in DETAIL all the custom parameters and tuning done by IBM on the application server to get this world class performance of 524 enterprise job transactions per second. See the entire publish here

This benchmark heavily stresses the JPA, web container and web services containers in WAS. After going through the results I discuss the relevant server side tuning below -


Application Server & JVM Tuning:  (*Your mileage may vary)
-Xms2048m
-Xmx2048m 
-Xmo470m 
-Xmn1578m 
-Xss128k 
-Xgcpolicy:gencon 
-Xgcthreads3 
-Xnoloa
-Xshareclasses:none 
-Xaggressive 
-Xtrace:none 
-Xlp
-Xdisableexplicitgc 
-Dcom.ibm.CORBA.FragmentSize=10000 
-Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl
-Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl
-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
-Djava.net.preferIPv4Stack=true 
-Dsun.net.inetaddr.ttl=0 
-DdisableWSAddressCaching=true
-Dcom.ibm.websphere.webservices.http.connectionKeepAlive=true 
-Dcom.ibm.websphere.webservices.http.maxConnection=50
-Dcom.ibm.websphere.webservices.http.connectionIdleTimeout=6000 
-Dcom.ibm.websphere.webservices.http.connectionPoolCleanUpTime=6000
-Dcom.ibm.websphere.webservices.http.connectionTimeout=0



APAR Fixes 
PM61650 
PM61561 
PM61599

Hardware Tuning for maximum Application Server performance  (*Your mileage may vary)

fs.file-max = 1048576
kernel.sem = 250 32000 100 128
kernel.shmall = 4294967296
kernel.shmmax = 68719476736
net.core.netdev_max_backlog = 250000
net.core.optmem_max = 30000000
net.core.rmem_default = 30000000
net.core.wmem_default = 30000000
net.core.rmem_max = 32554432
net.core.wmem_max = 32554432
net.core.somaxconn = 32767
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.ip_forward = 0
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_syn_backlog = 30000
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.tcp_mem  = 30000000 30000000 30000000
net.ipv4.tcp_rmem = 20480 174760 32554432
net.ipv4.tcp_wmem = 20480 174760 32554432
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
vm.nr_hugepages = 8192
ulimit -n 1048576

Network Tuning:
  set txqueuelen 60000
  Stop irqbalance.
  Network interrupts bound to cores corresponding to the server instances.

Server instances were started using taskset, 2 instances per chip.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.