[bbb-greenlight: 21/39] Puma Worker Configuration (#1701)
- From: Bartłomiej Piotrowski <bpiotrowski src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [bbb-greenlight: 21/39] Puma Worker Configuration (#1701)
- Date: Thu, 15 Oct 2020 07:11:22 +0000 (UTC)
commit 42868642638e7bb95503cb18384d1c06c9025bd6
Author: Lars Kiesow <lkiesow uos de>
Date: Tue Sep 29 17:44:47 2020 +0200
Puma Worker Configuration (#1701)
We noticed that the current default settings perform very poorly under
load. We managed to literally take down Greenlight during a larger event
when people where accessing the landing page for rooms and when doing
some tests, I was more or less able to DoS Greenlight on my own.
This patch adds a default worker configuration similar to the previous
configuration with one worker, but lets users easily adjust it to more
workers which significantly improves the situation. The small, 4 core
machine I was testing on could handle about thrice the amount of
requests.
Co-authored-by: Ahmad Farhat <ahmad af farhat gmail com>
config/puma.rb | 4 ++--
sample.env | 14 +++++++++++++-
2 files changed, 15 insertions(+), 3 deletions(-)
---
diff --git a/config/puma.rb b/config/puma.rb
index fda772a..44bed0b 100644
--- a/config/puma.rb
+++ b/config/puma.rb
@@ -23,14 +23,14 @@ environment ENV.fetch("RAILS_ENV") { "development" }
# Workers do not work on JRuby or Windows (both of which do not support
# processes).
#
-# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
+workers ENV.fetch("WEB_CONCURRENCY") { 1 }
# Use the `preload_app!` method when specifying a `workers` number.
# This directive tells Puma to first boot the application and load code
# before forking the application. This takes advantage of Copy On Write
# process behavior so workers use less memory.
#
-# preload_app!
+preload_app!
# Allow puma to be restarted by `rails restart` command.
plugin :tmp_restart
diff --git a/sample.env b/sample.env
index 062a8c9..c59bba9 100644
--- a/sample.env
+++ b/sample.env
@@ -268,7 +268,7 @@ CABLE_ADAPTER=postgresql
DEFAULT_REGISTRATION=open
# Preupload Presentation Storage
-#
+#
# By default, if Preupload Presentation is enabled for rooms, presentations are uploaded locally to
~/greenlight/storage
# If you prefer to use AWS S3 or GCS Storage, you can set the variables below
#
@@ -287,3 +287,15 @@ DEFAULT_REGISTRATION=open
# GCS_CLIENT_CERT=
# GCS_PROJECT=
# GCS_BUCKET=
+
+# Web server settings
+#
+# The size of the thread pool per worker used by Greenlight's web server.
+# For details, see: https://github.com/puma/puma#thread-pool
+# Default: 5
+#RAILS_MAX_THREADS=5
+
+# The amount of workers (separate processes) used by the web server.
+# For details, see: https://github.com/puma/puma#clustered-mode
+# Default: 1
+#WEB_CONCURRENCY=1
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]