Puppet Class: apache::mod::worker

Defined in:
manifests/mod/worker.pp

Summary

Installs and manages the MPM `worker`.

Overview

Parameters:

  • startservers (Integer) (defaults to: 2)

    The number of child server processes created on startup

  • maxclients (Integer) (defaults to: 150)

    The max number of simultaneous requests that will be served. This is the old name and is still supported. The new name is MaxRequestWorkers as of 2.3.13. If maxrequestworkers is set, this value is ignored.

  • minsparethreads (Integer) (defaults to: 25)

    Minimum number of idle threads to handle request spikes.

  • maxsparethreads (Integer) (defaults to: 75)

    Maximum number of idle threads.

  • threadsperchild (Integer) (defaults to: 25)

    The number of threads created by each child process.

  • maxrequestsperchild (Integer) (defaults to: 0)

    Limit on the number of connectiojns an individual child server process will handle. This is the old name and is still supported. The new name is MaxConnectionsPerChild as of 2.3.9+.

  • serverlimit (Integer) (defaults to: 25)

    With worker, use this directive only if your MaxRequestWorkers and ThreadsPerChild settings require more than 16 server processes (default). Do not set the value of this directive any higher than the number of server processes required by what you may want for MaxRequestWorkers and ThreadsPerChild.

  • threadlimit (Integer) (defaults to: 64)

    This directive sets the maximum configured value for ThreadsPerChild for the lifetime of the Apache httpd process.

  • listenbacklog (Integer) (defaults to: 511)

    Maximum length of the queue of pending connections.

  • apache_version (Optional[String]) (defaults to: undef)

    Used to verify that the Apache version you have requested is compatible with the module.

  • maxrequestworkers (Optional[Integer]) (defaults to: undef)

    Maximum number of connections that will be processed simultaneously if set, maxclients is ignored

See Also:



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'manifests/mod/worker.pp', line 50

class apache::mod::worker (
  Integer $startservers            = 2,
  Integer $maxclients              = 150,
  Integer $minsparethreads         = 25,
  Integer $maxsparethreads         = 75,
  Integer $threadsperchild         = 25,
  Integer $maxrequestsperchild     = 0,
  Integer $serverlimit             = 25,
  Integer $threadlimit             = 64,
  Integer $listenbacklog           = 511,
  Optional[String] $apache_version = undef,
  Optional[Integer] $maxrequestworkers = undef,
) {
  include apache
  $_apache_version = pick($apache_version, $apache::apache_version)

  if defined(Class['apache::mod::event']) {
    fail('May not include both apache::mod::worker and apache::mod::event on the same node')
  }
  if defined(Class['apache::mod::itk']) {
    fail('May not include both apache::mod::worker and apache::mod::itk on the same node')
  }
  if defined(Class['apache::mod::peruser']) {
    fail('May not include both apache::mod::worker and apache::mod::peruser on the same node')
  }
  if defined(Class['apache::mod::prefork']) {
    fail('May not include both apache::mod::worker and apache::mod::prefork on the same node')
  }
  File {
    owner => 'root',
    group => $apache::params::root_group,
    mode  => $apache::file_mode,
  }

  # Template uses:
  # - $startservers
  # - $maxclients
  # - $minsparethreads
  # - $maxsparethreads
  # - $threadsperchild
  # - $maxrequestsperchild
  # - $serverlimit
  # - $threadLimit
  # - $listenbacklog
  file { "${apache::mod_dir}/worker.conf":
    ensure  => file,
    content => template('apache/mod/worker.conf.erb'),
    require => Exec["mkdir ${apache::mod_dir}"],
    before  => File[$apache::mod_dir],
    notify  => Class['apache::service'],
  }

  case $facts['os']['family'] {
    'redhat': {
      if versioncmp($_apache_version, '2.4') >= 0 {
        ::apache::mpm { 'worker':
          apache_version => $_apache_version,
        }
      }
      else {
        file_line { '/etc/sysconfig/httpd worker enable':
          ensure  => present,
          path    => '/etc/sysconfig/httpd',
          line    => 'HTTPD=/usr/sbin/httpd.worker',
          match   => '#?HTTPD=/usr/sbin/httpd.worker',
          require => Package['httpd'],
          notify  => Class['apache::service'],
        }
      }
    }

    'debian', 'freebsd': {
      ::apache::mpm { 'worker':
        apache_version => $_apache_version,
      }
    }
    'Suse': {
      ::apache::mpm { 'worker':
        apache_version => $apache_version,
        lib_path       => '/usr/lib64/apache2-worker',
      }
    }

    'gentoo': {
      ::portage::makeconf { 'apache2_mpms':
        content => 'worker',
      }
    }
    default: {
      fail("Unsupported osfamily ${$facts['os']['family']}")
    }
  }
}