Topic
  • 6 replies
  • Latest Post - ‏2012-04-03T20:27:09Z by wasero
SystemAdmin
SystemAdmin
3908 Posts

Pinned topic Multiple HTTP Process created in HTTP server.

‏2012-02-23T07:10:51Z |
Hi All,

My Production HTTP Server responds very slow and routes the request to my Websphere portal also slowly.

As a result of this my webpage takes a longer time to load. When i checked in the server i saw multiple instances of HTTP server running usually 4 will run when i start my HTTP but now a days a multiple instance is created and making the HTTP slow.

Why does HTTP create these many process when it still runs? And after restart of the HTTP all the instance goes and it performs fastly for some days then it slows with multiple instance..

Please advise what exactly is happening and how can we resolve this?

Thanks in advance for your help..

Thanks,
Praveen.
Updated on 2012-04-03T20:27:09Z at 2012-04-03T20:27:09Z by wasero
  • Sunit
    Sunit
    199 Posts

    Re: Multiple HTTP Process created in HTTP server.

    ‏2012-02-23T14:39:32Z  
    How have you sized it?

    You should have something similar to this in your conf file:

    ##
    1. Server-Pool Size Regulation (MPM specific)
    ##
    <IfModule worker.c>
    ThreadLimit nnn
    ServerLimit nn
    StartServers n
    MaxClients nnnn
    MinSpareThreads nnn
    MaxSpareThreads nnnn
    ThreadsPerChild nnn
    MaxRequestsPerChild nnnnn
    </IfModule>

    • Sunit
  • SystemAdmin
    SystemAdmin
    3908 Posts

    Re: Multiple HTTP Process created in HTTP server.

    ‏2012-02-23T14:50:23Z  
    Multiple processes is simply how it works. The easiest place to start is by setting the HTTP Plugin logging to TRACE and scrutinizing it. See plugin-cfg.xml
  • SystemAdmin
    SystemAdmin
    3908 Posts

    Re: Multiple HTTP Process created in HTTP server.

    ‏2012-02-25T12:46:43Z  
    • Sunit
    • ‏2012-02-23T14:39:32Z
    How have you sized it?

    You should have something similar to this in your conf file:

    ##
    1. Server-Pool Size Regulation (MPM specific)
    ##
    <IfModule worker.c>
    ThreadLimit nnn
    ServerLimit nn
    StartServers n
    MaxClients nnnn
    MinSpareThreads nnn
    MaxSpareThreads nnnn
    ThreadsPerChild nnn
    MaxRequestsPerChild nnnnn
    </IfModule>

    • Sunit
    Hi Sunit,

    Thanks for your response

    this is how my HTTP server is sized, Please let me know do we need alter this in conf files,

    User nobody

    Group nobody

    ThreadLimit 25
    ServerLimit 64
    StartServers 2
    MaxClients 600
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadsPerChild 25
    MaxRequestsPerChild 0
    ________________________
    Thanks,
    Praveen.
  • SystemAdmin
    SystemAdmin
    3908 Posts

    Re: Multiple HTTP Process created in HTTP server.

    ‏2012-02-25T12:50:48Z  
    Multiple processes is simply how it works. The easiest place to start is by setting the HTTP Plugin logging to TRACE and scrutinizing it. See plugin-cfg.xml
    Hi Eric,

    Thanks a lot for your response.

    What exactly we need to see in plugin-cfg.xml?

    When we change the logging to TRACE will it affect the file system like will more no of logs written in file system.

    Thanks a lot for your help.

    Thanks,
    Praveen.
  • Sunit
    Sunit
    199 Posts

    Re: Multiple HTTP Process created in HTTP server.

    ‏2012-02-27T14:54:10Z  
    Hi Sunit,

    Thanks for your response

    this is how my HTTP server is sized, Please let me know do we need alter this in conf files,

    User nobody

    Group nobody

    ThreadLimit 25
    ServerLimit 64
    StartServers 2
    MaxClients 600
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadsPerChild 25
    MaxRequestsPerChild 0
    ________________________
    Thanks,
    Praveen.
    I am making certain assumptions here:

    You are using worker.c for MPM
    In your case you start with 2 servers. This means that there will be 3 httpd processes running. One master and two workers.

    ThreadLimit is set to 64. So each child/worker process can handle a maximum of 64 threads or concurrent connections. But, ThreadsPerChild is set to 25. This directive sets the number of threads created by each child process. The child creates these threads at startup and never creates more.

    Whereas, MaxClients is set to 600 so the HTTP server can handle 600 maximum concurrent connections. That means that at peak traffic you should see 25 httpd processes running. One master/parent and 10 worker/child.

    Please see http://publib.boulder.ibm.com/httpserv/ihsdiag/ihs_performance.html

    As to the slow response from your application, first test IHS without WebSphere and then with WebSphere. It could be that the WebSphere threads are taking longer to respond because the transaction in WAS is taking longer time. Also, while WAS is working on the transaction, IHS thread is tied up so you will see more IHS threads active than what the traffic "should" create.

    • Sunit
  • wasero
    wasero
    9 Posts

    Re: Multiple HTTP Process created in HTTP server.

    ‏2012-04-03T20:27:09Z  
    • Sunit
    • ‏2012-02-27T14:54:10Z
    I am making certain assumptions here:

    You are using worker.c for MPM
    In your case you start with 2 servers. This means that there will be 3 httpd processes running. One master and two workers.

    ThreadLimit is set to 64. So each child/worker process can handle a maximum of 64 threads or concurrent connections. But, ThreadsPerChild is set to 25. This directive sets the number of threads created by each child process. The child creates these threads at startup and never creates more.

    Whereas, MaxClients is set to 600 so the HTTP server can handle 600 maximum concurrent connections. That means that at peak traffic you should see 25 httpd processes running. One master/parent and 10 worker/child.

    Please see http://publib.boulder.ibm.com/httpserv/ihsdiag/ihs_performance.html

    As to the slow response from your application, first test IHS without WebSphere and then with WebSphere. It could be that the WebSphere threads are taking longer to respond because the transaction in WAS is taking longer time. Also, while WAS is working on the transaction, IHS thread is tied up so you will see more IHS threads active than what the traffic "should" create.

    • Sunit
    Make sure via the plugin log that you dont have unresponsive JVMs. AS you probably know each IHS child process loads a separate instance of the plugin, the likelyhood of all of the plugin instance running in each IHS process knowing a server has been marked down or MaxConnection plugin exceeded is very low. Best advice is to trim down the thread model to less IHS child process running and bump up threads.