diff --git a/attributes/default.rb b/attributes/default.rb index dd14dff9..1225ac81 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -41,6 +41,15 @@ default['openstack']['compute']['rootwrap']['syslog_log_level'] = 'ERROR' default['openstack']['compute'][service]['ssl']['ciphers'] = '' end +# Work around upstream issue with running the api service under wsgi +# https://docs.openstack.org/releasenotes/nova/stein.html#known-issues +default['openstack']['compute']['api']['threads'] = 1 +default['openstack']['compute']['api']['processes'] = 6 +default['openstack']['compute']['placement']['threads'] = 10 +default['openstack']['compute']['placement']['processes'] = 2 +default['openstack']['compute']['metadata']['threads'] = 10 +default['openstack']['compute']['metadata']['processes'] = 2 + # Platform specific settings case node['platform_family'] when 'rhel' # :pragma-foodcritic: ~FC024 - won't fix this diff --git a/recipes/api-metadata.rb b/recipes/api-metadata.rb index caef84d7..e0b97152 100644 --- a/recipes/api-metadata.rb +++ b/recipes/api-metadata.rb @@ -80,6 +80,8 @@ template "#{apache_dir}/sites-available/nova-metadata.conf" do run_dir: lock_dir, user: node['openstack']['compute']['user'], group: node['openstack']['compute']['group'], + processes: node['openstack']['compute']['metadata']['processes'], + threads: node['openstack']['compute']['metadata']['threads'], use_ssl: node['openstack']['compute']['metadata']['ssl']['enabled'], cert_file: node['openstack']['compute']['metadata']['ssl']['certfile'], chain_file: node['openstack']['compute']['metadata']['ssl']['chainfile'], diff --git a/recipes/api-os-compute.rb b/recipes/api-os-compute.rb index 7d9da229..91c27d87 100644 --- a/recipes/api-os-compute.rb +++ b/recipes/api-os-compute.rb @@ -88,6 +88,8 @@ template "#{apache_dir}/sites-available/nova-api.conf" do run_dir: lock_dir, user: node['openstack']['compute']['user'], group: node['openstack']['compute']['group'], + processes: node['openstack']['compute']['api']['processes'], + threads: node['openstack']['compute']['api']['threads'], use_ssl: node['openstack']['compute']['api']['ssl']['enabled'], cert_file: node['openstack']['compute']['api']['ssl']['certfile'], chain_file: node['openstack']['compute']['api']['ssl']['chainfile'], diff --git a/recipes/placement_api.rb b/recipes/placement_api.rb index df337c68..0129aefb 100644 --- a/recipes/placement_api.rb +++ b/recipes/placement_api.rb @@ -75,6 +75,8 @@ template "#{apache_dir}/sites-available/nova-placement.conf" do run_dir: lock_dir, user: nova_user, group: nova_user, + processes: node['openstack']['compute']['placement']['processes'], + threads: node['openstack']['compute']['placement']['threads'], use_ssl: node['openstack']['compute']['placement']['ssl']['enabled'], cert_file: node['openstack']['compute']['placement']['ssl']['certfile'], chain_file: node['openstack']['compute']['placement']['ssl']['chainfile'], diff --git a/spec/api-metadata_spec.rb b/spec/api-metadata_spec.rb index f902e5fe..c58f9375 100644 --- a/spec/api-metadata_spec.rb +++ b/spec/api-metadata_spec.rb @@ -48,11 +48,13 @@ describe 'openstack-compute::api-metadata' do group: 'nova', key_file: '', log_dir: '/var/log/apache2', + processes: 2, protocol: '', run_dir: '/var/lock/apache2', server_entry: '/usr/bin/nova-metadata-wsgi', server_host: '127.0.0.1', server_port: '8775', + threads: 10, user: 'nova', use_ssl: false, } diff --git a/spec/api-os-compute_spec.rb b/spec/api-os-compute_spec.rb index 76790a69..c5849641 100644 --- a/spec/api-os-compute_spec.rb +++ b/spec/api-os-compute_spec.rb @@ -57,11 +57,13 @@ describe 'openstack-compute::api-os-compute' do group: 'nova', key_file: '', log_dir: '/var/log/apache2', + processes: 6, protocol: '', run_dir: '/var/lock/apache2', server_entry: '/usr/bin/nova-api-wsgi', server_host: '127.0.0.1', server_port: '8774', + threads: 1, user: 'nova', use_ssl: false, } @@ -69,7 +71,7 @@ describe 'openstack-compute::api-os-compute' do end [ /$/, - /WSGIDaemonProcess nova-api processes=2 threads=10 user=nova group=nova display-name=%{GROUP}$/, + /WSGIDaemonProcess nova-api processes=6 threads=1 user=nova group=nova display-name=%{GROUP}$/, /WSGIProcessGroup nova-api$/, %r{WSGIScriptAlias / /usr/bin/nova-api-wsgi$}, /WSGIApplicationGroup %{GLOBAL}$/, diff --git a/spec/placement_api_spec.rb b/spec/placement_api_spec.rb index 03bdc5d9..5cad2097 100644 --- a/spec/placement_api_spec.rb +++ b/spec/placement_api_spec.rb @@ -61,11 +61,13 @@ describe 'openstack-compute::placement_api' do group: 'nova', key_file: '', log_dir: '/var/log/apache2', + processes: 2, protocol: '', run_dir: '/var/lock/apache2', server_entry: '/usr/bin/nova-placement-api', server_host: '127.0.0.1', server_port: '8778', + threads: 10, user: 'nova', use_ssl: false, } diff --git a/templates/default/wsgi-template.conf.erb b/templates/default/wsgi-template.conf.erb index aa083a65..3b9166fa 100644 --- a/templates/default/wsgi-template.conf.erb +++ b/templates/default/wsgi-template.conf.erb @@ -1,7 +1,7 @@ <%= node['openstack']['compute']['custom_template_banner'] %> :<%= @server_port %>> - WSGIDaemonProcess <%= @daemon_process %> processes=2 threads=10 user=<%= @user %> group=<%= @group %> display-name=%{GROUP} + WSGIDaemonProcess <%= @daemon_process %> processes=<%= @processes %> threads=<%= @threads %> user=<%= @user %> group=<%= @group %> display-name=%{GROUP} WSGIProcessGroup <%= @daemon_process %> WSGIScriptAlias / <%= @server_entry %> WSGIApplicationGroup %{GLOBAL}