Solved

Increase ThreadsPerChild to support more connections in HttpServer1.log

  • 16 December 2021
  • 4 replies
  • 774 views

Userlevel 2
Badge +3

Hi,

I noticed below error in HttpServer1.log while investigating an IFS application issue. Therefore I double the ThreadsPerChild parameter and restarted the middleware servers, but still this error appears in the log. IFS application is in app10 UDP 12.

 

[2021-12-15T09:26:05.5565+01:00] [OHS] [ERROR:32] [OH99999] [weblogic] [host_id: ##] [host_addr: ##] [pid: 8464] [tid: 968] [user: SYSTEM] [VirtualHost: main] Lowering WLMaxWebSocketClients to 450. Increase ThreadsPerChild to support more connections

 

Appreciate your advice to fix this error.

icon

Best answer by Kasun Balasooriya 16 December 2021, 17:41

View original

This topic has been closed for comments

4 replies

Userlevel 7
Badge +20

Hi @Dilshani ,

You can use the following recommendation when setting a value to this parameter. 

 

ThreadsPerChild: 

Constant number of worker threads in the server process.

 The ThreadsPerChild directive is important. It tells the server how many threads it should use. This is the maximum number of connections the server can handle at once, so be sure to set this number high enough for your system if you expect a lot of concurrent hits.

The default value is ThreadsPerChild 600, but this must be adjusted to reflect the greatest anticipated number of simultaneous connections to accept.

Please note that this is not the same thing as the maximum number of concurrent users. Rather, it sets the maximum number of concurrently executed requests.

With WinNt MPM which is used by IFS, ThreadsPerChild cannot exceed 15 000. However, the real limits are the sum of the fixed startup cost of memory for each thread + the maximum runtime memory usage per thread, which varies based on configuration and workload.

 

NOTE: A rule of thumb to calculate an appropriate value is to multiply the maximum number of concurrently logged on users by 1.5. This means that the default value will cater for 400 concurrently logged on users doing 200 simultaneous requests.

 

Hope this helps!

 

Thanks,

Kasun

Userlevel 2
Badge +3

Hi @Kasun Balasooriya ,

 

Thank you very much.

 

Following are the values in the current environment. Do we need to increase ThreadLimit value or any other value when we increase ThreadsPerChild value?

 

Userlevel 7
Badge +20

Hi @Dilshani ,

 

Please refer the following articles to understand the above values and how they behave. 

  1. 2 Top Performance Areas (oracle.com) - Check section 2.9.1.1 MaxClients/ThreadsPerChild
  1. 6 Oracle HTTP Server Performance Tuning - Check Table 6-1 Oracle HTTP Server Configuration Properties

Since your question is regarding the parameter ThreadLimit, here’s the explanation from article 2) noted above: 

ThreadLimit

Specifies the upper limit on the number of threads that can be created under a server (child) process. This value overrides the ThreadsPerChild value if that value is greater than the ThreadLimit value. This is used to control the maximum number of threads created per process to avoid conflicts/issues.

Default Values:

  • Windows Multi-Processing Module (mpm_winnt): 1920

  • All others: 64

 

So according to above explanation, ThreadLimit will override your ThreadsPerChild parameter at 600 and it will not be able to utilize 1200. Hope this answers your question. 

 

Thanks,

Kasun

Userlevel 2
Badge +3

Hi @Kasun Balasooriya ,

 

Thank you very much.

 

Regards,

Dilshani