Thanks a Lot Mark

On Mon, Dec 9, 2019 at 2:22 PM Mark Thomas <ma...@apache.org> wrote:

> On 09/12/2019 06:41, Jayaram Ponnusamy wrote:
> > Thanks for your Valuable Comments:
> > We are using Apache Tomcat/8.0.50 and Mod_JK mod_jk/1.2.28
> >
> > The Above configuration made by some consultant. We are in the
> situation to
> > correct all the things to make it for high availability.
> > Also we are in the process of upgrading the apache to 2.4.25 with mod_jk/
> > 1.2.42. And Event MPM instead of Prefork.
> >
> > Please let us know do we need to use worker MPM also or EVENT MPM is
> fine?
> > If Event MPM with below Configuration then how many concurrent users can
> > access the site and what are the relevant changes needs to be done on
> > Tomcat Side?
> > On Tomcat Servers We have 16GB RAM with 8CPU [Two Nodes]
> >
> > # event MPM
> > <IfModule event.c>
> >     StartServers 1
> >     ServerLimit 7
> >     MinSpareThreads 250
> >     MaxSpareThreads 2500
> >     ThreadsPerChild 500
> >     ThreadLimit 500
> >     MaxRequestWorkers 3500
> >     MaxConnectionsPerChild 0
> > </IfModule>
> >
> >
> > # Tomcat Configuration
> > <Connector port="9090" protocol="HTTP/1.1" redirectPort="8443"
> > URIEncoding="UTF-8" emptySessionPath="true" maxThreads="600"
> > minSpareThreads="10" connectionTimeout="-1" />
> > <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
> > URIEncoding="UTF-8" maxThreads="600" minSpareThreads="100"
> > connectionTimeout="20000" acceptCount="2000" />
> >
> >
> > # Tomcat Configuration
> >  -Xms2048M -Xmx6144M -XX:PermSize=1024m -XX:MaxPermSize=2048m
> >
> >
> >
> >
> > On Thu, Dec 5, 2019 at 7:27 PM Christopher Schultz <
> > ch...@christopherschultz.net> wrote:
> >
> > Jayaram,
> >
> > On 12/5/19 03:19, Jayaram Ponnusamy wrote:
> >>>> We are using apache 2.2.21 on RHEL6.9 and in Backend we are using
> >>>> Tomcat AppServer with JavaBased CMS. Our Server Architecture is
> >>>> *(F5 [For Load Balance] -> Apache WebServer [For Redirection & URL
> >>>> Mapping] -> Tomcat AppServer [Running a Java Based CMS]).*
> >
> > That version of Apache httpd is pretty old and unsupported. RHEL 6.9
> > is also out of support (if I'm reading their Wikipedia page
> > correctly). You may want to upgrade everything while you are looking
> > at all this.
> >
> >>>> We are using Apache to connect Tomcat by MOD_JK and mapping the
> >>>> URL (Attached VirtualHost.conf), and No applications/code are
> >>>> running on WebServers.
> >>>>
> >>>> 1. Two TomcatServers (8 CPU & 16GB RAM on Each Servers) 2. Two
> >>>> WebServers (4 CPU & 8GB RAM on Each Servers)
> >>>>
> >>>> *PROBLEM:* When the Child Process count is reached / crossed 200
> >>>> like below then site is not accessible
> >
> > Do you mean that new connections from httpd -> Tomcat cannot be made?
> >
> >>>> when the child processes reached 300 or More than site crashed
> >
> > Please define "crashed". Got an exception? JVM crash (with hs_pid*
> > file)? Kernel panic?
> >
> >>>> and then we bring the site back by restarting Tomcat & Apache
> >>>> HTTP.
> >
> > Do you need to restart httpd? Or only Tomcat? Or will restarting httpd
> > work?
> >
> >>>> Kindly please check my configuration and help to allow at-least
> >>>> 500 concurrent users.
> >>>>
> >>>> *CONFIGURATION:* * httpd.conf* <IfModule prefork.c> StartServers
> >>>> 80 ServerLimit 3500 MaxClients 3500 MaxRequestsPerChild  0
> >>>> </IfModule> <IfModule worker.c> StartServers 6 MaxClients 230
> >>>> MinSpareThreads 75 MaxSpareThreads 150 ThreadsPerChild 25
> >>>> MaxRequestsPerChild 0 </IfModule>
> >
> > Which MPM are you actually using? You have listed both prefork and
> > worker. AFAICT you have to pick one at runtime.
> >
> > For prefork, the maximum number of connections you should expect to be
> > made to each Tomcat backend is 3500 (the value of MaxClients).
> >
> > For worker, the maximum number of connections you should expect to be
> > made to each Tomcat backend is 230.
> >
> >>>> *Tomcat:* <Connector port="9090" protocol="HTTP/1.1"
> >>>> redirectPort="8443" URIEncoding="UTF-8" emptySessionPath="true"
> >>>> maxThreads="600" minSpareThreads="10" connectionTimeout="-1" />
> >>>> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
> >>>> URIEncoding="UTF-8" maxThreads="600" minSpareThreads="100"
> >>>> connectionTimeout="20000" acceptCount="2000" />
> >
> > Note that AJP connections are expected to be persistent; they don't
> > close when the request has completed. They don't even really do "keep
> > alive" in the same sense as HTTP keepalive. It's more like "always
> > keepalive". Once an httpd process opens a connection to a Tomcat
> > instance, that connection will remain open for quite a while as long
> > as requests continue to be made.
> >
> > If you are using prefork MPM, the the version of Tomcat you are using
> > is critical to understanding what is happening, here. If you are using
> > a BIO-based connector, then you will need to increase the number of
> > threads on each Tomcat server from 600 to 3500.
> >
> > If you are using the worker MPM, then your Tomcat should be able to
> > handle the 230 maximum connections configured there.
>
> TL;DR - Try switching to the NIO AJP connector on Tomcat.
>
> Take a look at this session I uploaded from TomcatCon London. You
> probably want to start around 35:00 and the topic of thread
> exhaustion.
>
> https://youtu.be/2QYWp1k5QQM
>
> Mark
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

-- 

*Thanks & Regards,*
*Jayaram Ponnusamy*

Reply via email to