• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Tim Cooke
  • Campbell Ritchie
  • Paul Clapham
  • Ron McLeod
  • Liutauras Vilda
Sheriffs:
  • Jeanne Boyarsky
  • Rob Spoor
  • Bear Bibeault
Saloon Keepers:
  • Jesse Silverman
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
Bartenders:
  • Piet Souris
  • Al Hobbs
  • salvin francis

I/O performance down in Jboss AS 7 for Enterprise application

 
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I am working with EnterpriseApplication on Jboss AS 7 platform.
Functionality of application it that it takes XML data as request
and process it and sends XML data as response to client. Here
XML request (in kilobyts) is relatively less in size when compared to
XML response ( ranges fro KB to MB). I enabled some loggings of
request processing from this i conclude that 90% of request processing
(i.e 1.parsingXML + 2.executeBusinessLogic + 3.constructsXMLResponse +
4. SendXML response to client)
is to write back the XML response to client(i.e step 4 from the above).
And observed from live that Ram usage is always 50% - 70% and
CPU load is 0.16 - 1.0

But still i couldn't found that only write response back to client
takes 90% of response time.

following is Web configuration in Standalone.xml of Jboss As 7 and target client
has same configuration which receives the response.
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host">
<configuration>
<static-resources sendfile="524288"/>
</configuration>
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" enable-lookups="true" redirect-port="8443" executor="http-executor" max-connections="50"/>
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" redirect-port="8443" secure="true" max-connections="400">
<ssl name="ssl" key-alias="chapter8" password="123456" certificate-key-file="../standalone/configuration/cultswitch.cultuzz.de.keystore" cipher-suite="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA" protocol="TLSv1" verify-client="false" verify-depth="10" keystore-type="PKCS12" truststore-type="PKCS12"/>
</connector>
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<alias name="vela"/>
</virtual-server>
</subsystem>

Can anybody help with the way to find the reasons for this ?

For more information :
1. Using non-transactional datasource with following pool configuration
<pool>
<min-pool-size>20</min-pool-size>
<max-pool-size>50</max-pool-size>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
2. Local EJB's with CONTAINER managed transactions.
3. Configured for recovery-environment for transactions recovery for every 2 minutes.
4. Threads subsystem configuration as follows
<subsystem xmlns="urn:jboss:domain:threads:1.1">
<bounded-queue-thread-pool name="http-executor">
<core-threads count="50"/>
<queue-length count="50"/>
<max-threads count="50"/>
<keepalive-time time="10" unit="seconds"/>
</bounded-queue-thread-pool>
</subsystem>

Hardware Specification : 8GB RAM

Processor Information (2 processors):

vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R) Xeon(R) CPU E5645 @ 2.40GHz
stepping : 2
cpu MHz : 2400.085
cache size : 12288 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perf
mon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm arat epb dts
bogomips : 4800.17
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual


Softwares Specification:
ApplicationType : EnterpriseApplication
Java : 7.1
Application Server : Jboss AS 7
DataBase : MySQL
EJB : 3.0
Hibenate : 4.0.1

Do i need any changes in Standalone configuration ?
Do i need any changes in I/O of OpertingSystem ?
 
author
Posts: 5856
7
Android Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
So you are saying that 90% of the response time observed by the client is transmitting the XML results from the server to the client. Is that correct?

Are you using the HTTP port or the HTTPS port?
If you have tried both, do you still get the same results?
What is the size of your response message?
How are you measuring the response time that the client is seeing? If via a timer in the client app, could it be that some of the time is being spent in the client? (I'd suggest monitoring the network adapter in this case to see how much time it really takes to do the actual network transfer)
 
kishore routhu
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Dear Peter Johnson Thank for your quick reply with valuable suggestions

So you are saying that 90% of the response time observed by the client is transmitting the XML results from the server to the client. Is that correct?

A : Yes, it is correct 90% of the response time is only to commit response to client through socket outputstream

Example :
1. byte[] rsBytes = resXML.getBytes();
2.response.setContentType("text/xml");
3.int contentLength = otaRSBytes.length;
4.response.setContentLength(contentLength);
5.response.setCharacterEncoding("UTF-8");
6.out = response.getOutputStream();
7.out.write(rsBytes);
8.out.flush();
9.out.close();
90% response time takes from line 2 to line 7 .

Are you using the HTTP port or the HTTPS port?
A : I am using HTTP port 8080.

If you have tried both, do you still get the same results?
A : I didn't tried with HTTPS.

What is the size of your response message?
A: Size of response varies it can 200KB, 500KB , 1MB, 2MB,3MB,4MB
but the response message with higher sizes takes max time to send response.

How are you measuring the response time that the client is seeing? If via a timer in the client app, could it be that some of the time is being spent in the client? (I'd suggest monitoring the network adapter in this case to see how much time it really takes to do the actual network transfer)
A : I measure response time from server side by logging time stamps into database before and after writing response to client.

Can you please suggest me How to monitoring the network adapter for network transfer ?

 
Sheriff
Posts: 10445
227
IntelliJ IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
https://community.jboss.org/thread/228770?tstart=0
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic