2 Replies Latest reply on May 15, 2007 1:27 AM by ddpie

    The performance of JBoss clustering puzzled me

    ddpie

      Hi guys:

      I?m new to JBoss clustering and apache.

      Has anyone met problem like this? I use JBoss cluster to test my JSPs,but its performance was not so great,and even badly than the performace without clustering. Here is my environment:

      I have three servers:

      The first one (ip:192.168.13.26):
      Windows XP sp2
      512M memory
      JBoss 4.04GA

      The second one (ip:192.168.13.2):
      Windows XP sp2
      256M memory
      JBoss 4.04GA

      The last one (ip:192.168.13.2):
      Windows 2003 Server Enterprise Edition
      1G memory
      Apache 2.0.59

      The compiled in modules of the Apache is:
      core.c
      mod_win32.c
      mpm_winnt.c
      http_core.c
      mod_so.c

      httpd.config of apache on 192.168.13.2:

      ServerRoot "C:\Program Files\CSS\Apache2"
      PidFile logs/httpd.pid
      Timeout 300
      KeepAlive On
      MaxKeepAliveRequests 0
      KeepAliveTimeout 15
      <IfModule mpm_winnt.c>
       ThreadsPerChild 250
       MaxRequestsPerChild 0
      </IfModule>
      Listen 8888
      LoadModule access_module modules/mod_access.so
      LoadModule actions_module modules/mod_actions.so
      LoadModule alias_module modules/mod_alias.so
      LoadModule asis_module modules/mod_asis.so
      LoadModule auth_module modules/mod_auth.so
      LoadModule autoindex_module modules/mod_autoindex.so
      LoadModule cgi_module modules/mod_cgi.so
      LoadModule dir_module modules/mod_dir.so
      LoadModule env_module modules/mod_env.so
      LoadModule imap_module modules/mod_imap.so
      LoadModule include_module modules/mod_include.so
      LoadModule isapi_module modules/mod_isapi.so
      LoadModule log_config_module modules/mod_log_config.so
      LoadModule mime_module modules/mod_mime.so
      LoadModule negotiation_module modules/mod_negotiation.so
      LoadModule setenvif_module modules/mod_setenvif.so
      LoadModule userdir_module modules/mod_userdir.so
      LoadModule ssl_module modules/mod_ssl.so
      ServerAdmin ddpie.flea@gmail.com
      ServerName 192.168.13.26:80
      UseCanonicalName Off
      <Directory />
       Options FollowSymLinks
       AllowOverride None
      </Directory>
      DirectoryIndex index.html index.html.var index.jsp
      <FilesMatch "^\.ht">
       Order allow,deny
       Deny from all
      </FilesMatch>
      DefaultType text/plain
      HostnameLookups Off
      LogLevel debug
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
      LogFormat "%h %l %u %t \"%r\" %>s %b" common
      LogFormat "%{Referer}i -> %U" referer
      LogFormat "%{User-agent}i" agent
      CustomLog logs/access.log common
      CustomLog logs/referer.log referer
      CustomLog logs/agent.log agent
      CustomLog logs/access.log combined
      ServerTokens Full
      ServerSignature On
      AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|ru))?(/.*)?$ "F:/Apache2/manual$1"
      IndexOptions FancyIndexing VersionSort
      IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
      AddLanguage ca .ca
      AddLanguage cs .cz .cs
      AddLanguage da .dk
      AddLanguage de .de
      AddLanguage el .el
      AddLanguage en .en
      AddLanguage eo .eo
      AddLanguage es .es
      AddLanguage et .et
      AddLanguage fr .fr
      AddLanguage he .he
      AddLanguage hr .hr
      AddLanguage it .it
      AddLanguage ja .ja
      AddLanguage ko .ko
      AddLanguage ltz .ltz
      AddLanguage nl .nl
      AddLanguage nn .nn
      AddLanguage no .no
      AddLanguage pl .po
      AddLanguage pt .pt
      AddLanguage pt-BR .pt-br
      AddLanguage ru .ru
      AddLanguage sv .sv
      AddLanguage zh-CN .zh-cn
      AddLanguage zh-TW .zh-tw
      LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
      ForceLanguagePriority Prefer Fallback
      AddCharset ISO-8859-1 .iso8859-1 .latin1
      AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
      AddCharset ISO-8859-3 .iso8859-3 .latin3
      AddCharset ISO-8859-4 .iso8859-4 .latin4
      AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
      AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
      AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
      AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
      AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
      AddCharset ISO-2022-JP .iso2022-jp .jis
      AddCharset ISO-2022-KR .iso2022-kr .kis
      AddCharset ISO-2022-CN .iso2022-cn .cis
      AddCharset Big5 .Big5 .big5
      AddCharset WINDOWS-1251 .cp-1251 .win-1251
      AddCharset CP866 .cp866
      AddCharset KOI8-r .koi8-r .koi8-ru
      AddCharset KOI8-ru .koi8-uk .ua
      AddCharset ISO-10646-UCS-2 .ucs2
      AddCharset ISO-10646-UCS-4 .ucs4
      AddCharset UTF-8 .utf8
      AddCharset GB2312 .gb2312 .gb
      AddCharset utf-7 .utf7
      AddCharset utf-8 .utf8
      AddCharset big5 .big5 .b5
      AddCharset EUC-TW .euc-tw
      AddCharset EUC-JP .euc-jp
      AddCharset EUC-KR .euc-kr
      AddCharset shift_jis .sjis
      Include conf/mod-jk.conf


      The workers.properties of apache on 192.168.13.2 is:
      worker.list=loadbalancer,status
      #JBoss on 192.168.13.26
      worker.node26.port=8009
      worker.node26.host=192.168.13.26
      worker.node26.type=ajp13
      worker.node26.lbfactor=1
      worker.node26.cachesize=10
      #JBoss on 192.168.13.79
      worker.node79.port=8009
      worker.node79.host=192.168.13.79
      worker.node79.type=ajp13
      worker.node79.lbfactor=1
      worker.node79.cachesize=10
      worker.loadbalancer.type=lb
      worker.loadbalancer.balance_workers=node26,node79
      worker.loadbalancer.sticky_session=0
      worker.status.type=status


      A part of the configration in server.xml in tomcat of JBoss(192.168.13.26) is :
      <Connector port="8080" address="${jboss.bind.address}"
       maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
       emptySessionPath="true"
       enableLookups="false" redirectPort="8443" acceptCount="100"
       connectionTimeout="20000" disableUploadTimeout="true"/>
      <Connector port="8009" address="${jboss.bind.address}"
       emptySessionPath="true" enableLookups="false" redirectPort="8443"
       scheme="https" protocol="AJP/1.3"/>
      <Connector port="8443" address="${jboss.bind.address}"
       maxThreads="100" strategy="ms" maxHttpHeaderSize="8192"
       emptySessionPath="true"
       scheme="https" secure="true" clientAuth="false"
       keystoreFile="${jboss.server.home.dir}/conf/server.keystore"
       connectionTimeout="8000"
       keystorePass="12345678" sslProtocol = "TLS" />
      <Engine name="jboss.web" defaultHost="localhost" jvmRoute="node26">


      I used LoadRunner to record the script of visiting the JSPs in JBoss,and used JProfiler to monitor the JBoss on 192.168.13.26.

      I tested three times(50 virtual users visit the JSPs parallely 20 minutes.The CPU time involves the time of starting the JBoss service):
      Here is the table of the tests results:

      [img]http://lh4.google.com/image/ddpie.flea/RkbUmUVMWKI/AAAAAAAAAAo/o8w1WGAe32U/jboss_clustering.jpg[/img]

      If cann't displayed,see http://picasaweb.google.com/ddpie.flea/JBoss/photo#5063968585782417570.

      I doubt apache was the bottleneck,but I don?t know where the problem is with my configration of apache.

      Does anyone know?

      Thanks in advance.^o^