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

  • 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.

  • maxrequestworkers (Integer) (defaults to: 150)

    Maximum number of connections that will be processed simultaneously

See Also:



40
41
42
43
44
45
46
47
48
49
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
# File 'manifests/mod/worker.pp', line 40

class apache::mod::worker (
  Integer $startservers            = 2,
  Integer $minsparethreads         = 25,
  Integer $maxsparethreads         = 75,
  Integer $threadsperchild         = 25,
  Integer $maxrequestsperchild     = 0,
  Integer $serverlimit             = 25,
  Integer $threadlimit             = 64,
  Integer $listenbacklog           = 511,
  Integer $maxrequestworkers       = 150,
) {
  include apache

  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
  # - $maxrequestworkers
  # - $minsparethreads
  # - $maxsparethreads
  # - $threadsperchild
  # - $maxrequestsperchild
  # - $serverlimit
  # - $threadLimit
  # - $listenbacklog
  $parameters = {
    'serverlimit'         => $serverlimit,
    'startservers'        => $startservers,
    'threadlimit'         => $threadlimit,
    'minsparethreads'     => $minsparethreads,
    'maxsparethreads'     => $maxsparethreads,
    'threadsperchild'     => $threadsperchild,
    'maxrequestsperchild' => $maxrequestsperchild,
    'listenbacklog'       => $listenbacklog,
    'maxrequestworkers'   => $maxrequestworkers,
  }

  file { "${apache::mod_dir}/worker.conf":
    ensure  => file,
    content => epp('apache/mod/worker.conf.epp', $parameters),
    require => Exec["mkdir ${apache::mod_dir}"],
    before  => File[$apache::mod_dir],
    notify  => Class['apache::service'],
  }

  case $facts['os']['family'] {
    'RedHat', 'Debian', 'FreeBSD': {
      ::apache::mpm { 'worker':
      }
    }
    'Suse': {
      ::apache::mpm { 'worker':
        lib_path => '/usr/lib64/apache2-worker',
      }
    }

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