@@ -14,23 +14,57 @@ classes:
1414 and we use this class in httpd.conf to configure accordingly.";
1515 vars:
1616 policy_server.enterprise_edition.mission_portal_http2_enabled::
17+ "cpu_info_source" string => "/proc/cpuinfo";
18+ "cpu_cores_number"
19+ int =>
20+ int( execresult("grep -c ^processor $(cpu_info_source) 2>/dev/null", "useshell")),
21+ if => fileexists( $(cpu_info_source) );
22+ "mem_info_source" string => "/proc/meminfo";
23+ "mem_total_kb"
24+ int => int( execresult("grep ^MemTotal $(mem_info_source) | awk '{print $2}' 2>/dev/null", "useshell") ),
25+ if => fileexists( $(mem_info_source) );
26+ "php_fpm_www_pool_min_spare_servers_calculated" int => int(
27+ ifelse(
28+ isvariable("cpu_cores_number"),
29+ eval("$(cpu_cores_number) * 2"), # min spare servers are cpu cores number * 2
30+ "8" # fallback
31+ ));
32+ "php_fpm_www_pool_max_spare_servers_calculated" int => int(
33+ ifelse(
34+ isvariable("cpu_cores_number"),
35+ eval("$(cpu_cores_number) * 4"), # max spare servers are cpu cores number * 4
36+ "16" # fallback
37+ ));
38+ #start servers between min & max spare
39+ "php_fpm_www_pool_start_servers_calculated" int => int(
40+ eval(
41+ "($(php_fpm_www_pool_min_spare_servers_calculated) + $(php_fpm_www_pool_max_spare_servers_calculated)) / 2")
42+ );
43+ "fpm_children_average_memory_kb" int => "25600"; # average memory taken by one fpm process 25MB * 1024
44+ "php_fpm_www_pool_max_children_calculated" int => int(
45+ ifelse(
46+ isvariable("mem_total_kb"),
47+ eval("$(mem_total_kb) * 0.6 / $(fpm_children_average_memory_kb)"), # get only 60% of total memory and devide by avarage memory taken by one fpm process
48+ "60" # fallback
49+ ));
50+
1751 "php_fpm_pid_file" string => "$(sys.workdir)/httpd/php-fpm.pid";
1852 "php_fpm_www_pool_max_children" string => ifelse(
1953 isvariable("default:def.php_fpm_www_pool_max_children"),
2054 "$(default:def.php_fpm_www_pool_max_children)",
21- "60 ");
55+ "${php_fpm_www_pool_max_children_calculated} ");
2256 "php_fpm_www_pool_start_servers" string => ifelse(
2357 isvariable("default:def.php_fpm_www_pool_start_servers"),
2458 "$(default:def.php_fpm_www_pool_start_servers)",
25- "50 ");
59+ "$(php_fpm_www_pool_start_servers_calculated) ");
2660 "php_fpm_www_pool_min_spare_servers" string => ifelse(
2761 isvariable("default:def.php_fpm_www_pool_min_spare_servers"),
2862 "$(default:def.php_fpm_www_pool_min_spare_servers)",
29- "40 ");
63+ "$(php_fpm_www_pool_min_spare_servers_calculated) ");
3064 "php_fpm_www_pool_max_spare_servers" string => ifelse(
3165 isvariable("default:def.php_fpm_www_pool_max_spare_servers"),
3266 "$(default:def.php_fpm_www_pool_max_spare_servers)",
33- "50 ");
67+ "$(php_fpm_www_pool_max_spare_servers_calculated) ");
3468 "php_fpm_state" data => mergedata(
3569 '{"vars": { "sys": { "workdir": "${default:sys.workdir}" } } }',
3670 '{
0 commit comments