Design question


Design Architecture:

HP Service Manager 9.50

Concurrent Users 550

No of servers planned:

App server: 3 ( 2 would serve end users, 1 is for integrations)

Web server: 2 ( load balanced thru F5)

Below is how we are planning , I haven’t shown the CIT and Knowledge servers in the diagram.



  • I have a question regarding the web server, is it ok to have 2 ports serving all the end users connections incoming thru load balancer?. Can we enable / configure more worker threads to have better apache tomcat performance ?

If answer is yes, please let me know how we do this. I have read the documentation on Apache internal load balancing. How do we make it work with F5 ?

  •  Any suggestions on performance improvement on this architecture ?

plz guide.




  • We had similar set up as you mentioned here for webserver. There is worker properties file under the below location


    In the worker properties file you can have multiple tomcats instances of your hpsm web as tomcat1, tomcat2, tomcat3 etc...
    tomcat1 should be acting as a LB here, and it will distribute load to tomcat2, 3 and 4
    so, the f5 request comes to Apache httpd, which gets re-directed to tomcat1 as lb and then tomcat1 decides where to process the request among other 2 tomcats - tomcat2, tomcat3




  • Hi Washim,

    Thank you for the reply.

    I had some documents for tomcat loadbalancing setup.

    So to reiterate what I understand from your setup is, 

    you have 2 apache servers running on 2 instances, and multiple tomcat nodes on each of the servers . The F5 is load balancing against the 2 apache servers .

    Please confirm.

    Also please share if you have any guide / references to enable this setup.

    thank you



  • Yes you understood it correct.. Unfortunately I have lost the documentation I was having. 

    You may go through the link I have provided in previous post.

  • Thank you Washim for the reply.

    I will work on this and incase of challenges i'll post on this thread.

  • Update 092118 --

    I am having a doubt regarding the below set of parameters on tomcat,

    1. maxThreads
    2. minSpareThreads
    3. maxSpareThreads

    We are going to setup 2 web servers and the no of concurrent user sessions is going to be around 500 . 

    Please advise , if there is any specific rule to set the count values on these threads.



  • For Web:

    It's not clear for me if you are using apache or tomcat only. It seems that you are using tomcat only. This might be ok for your environment, since you have F5 performing the LB. If this is your case, why'd you have a tomcat performing LB? Just set them up and configure each one of them in F5 pool. 

    For 500 users I'd recommend at least 3 tomcat instances - 200/user. For high availability you can configure 3 tomcat instances on each of your 2 severs or add a new tomcat server and have 2 tomcat instances on each. For Web I'd also recommend you to use Linux; I have the impression that the resource consumption and performance are better.

    For the parameters I recommend you to start with the default (for most cases they are enough) and during the performance tests you can tune your environment. 

    For Application

    Why don't you use F5 as LB?

    Why do you have one server only for integration? Aren't they important? Why not use F5 for this?

    - for data push integrations like UCMDB I'd go for a specific servlet in any server;

    - for application / critical integrations I'd go for a F5 VIP having as pool one or two servlet in each server. 


  • Thank you for the reply Breno.

    We are currently using Tomcat 8.x load balanced through an F5. At present we are having 2 web servers with only 2 listeners / workers addressing the client requests. As we are going to add more users in the next few months, we are upgrading / migrating our architecture on web. 

    I was thinking to have the F5 load balance against 2 apache servers which will do the load balancing against multiple tomcat instances.  I was thinking to have multiple tomcat instances configured and use the in house Apache load balancing feature. As you have suggested, I could also use F5 to load balance the multiple tomcat instances I create.

    As you have suggested to setup 3 tomcat instances, is there a parameter on tomcat which would set the max no of connections per listener ?( i do not remember any threshold value set on F5 ).

    we have to rule out Linux as we are allowed to have only windows for SM.

    For SM application, we still havent tried using F5, as this would take some amount of testing to test . Moreover we havent had any issues using the software LB. The reason why we have a dedicated server for integration is 1) allowing ease of debugging as most of the ports run on debugnode 2) SM doesnt support http redirection for web service integrations. 3) if this particular server can be rebooted / application services rerstarted without having the impact to end users who are already logged in..



  • Hi brav0,

    You don't need to set any limit on tomcat; if the limit is reached the request will be enqueued and processed when possible; what you need to do is set a monitoring on your tomcat to keep track of jvm, sessions, threads values...

    About add Apache, most companies I worked with have it as a mandatory component and honestly I never understood why :)... Maybe it's because backwards Tomcat was not as good as Apache as WebServer, today from my tests  they are more or less the same and you still should use Apache only if you want to use HTTPs (also on apache) or SSO... otherwise it's just another component to manage. In case of doubt, test; there is no reason to add apache just for LB, since you have F5 doing this for you.

    Windows is OK as well.

    Regarding your points:

    1) you can set a specific log for each servlet/port, just set the parameter -log ; Ok, the log will be in different servers, but you can overcome this "issue" quite easily by using any log tool (even notepad )

    2) The F5 is transparent for SM, I remember that I read something like unsupported a long time ago, not sure if it's still valid; anyway, I"m using F5 for my integrations withouth any problem for more than 2 years... Basically what you need to do is configure two vips on F5, one for Web, other for Integration and the integration one has as pool servers, the servlets you have on debugnode dedicated for integrations. Just as said for UCMDB like integrations (intensive data push), makes no sense to overload F5.. so for this kind of integration use direct integration to HPSM. 

    3) Most of the cases the restart of the problematic servlet is enough, and you can restart them using the command: 

    sm -restart:0 -host: -pid:3433

    You can also configure a periodic restart of servlets and usually this avoid most of problems, take a look at:



  • Thank you for the reply and guidance, Arbeno

    One clarification on the statement you have made, "you still should use Apache only if you want to use HTTPs (also on apache) or SSO... otherwise it's just another component to manage. "

    We do not have SSO set up at this point, but I am sure this will be a ask in the future. Do you see any challenges in setting up SSO without having a web server like Apache.

    Regarding the F5, i understand your suggestions and definitely consider while estimating the total effort for our project.

    The restart command is currently used in our environment whenever a servlet goes unresponsive . 

    We had instances when the shared memory of our integration server goes down drastically and we can bring down and restart the app services without impacting the end user connections. Hence isolating the integration connections from end user connections have helped us in the past.