aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-01-24 19:22:22 +0000
committerChristopher Baines <mail@cbaines.net>2020-01-25 22:32:09 +0000
commitb9031db946ff89a39e1507b430f64402b0e9572a (patch)
treed7495fec039f33c04069dd6d9d97add460b506a0
parentfaf4bfdfcb124306abe0d1a5be0176a286535c51 (diff)
downloadcuirass-b9031db946ff89a39e1507b430f64402b0e9572a.tar
cuirass-b9031db946ff89a39e1507b430f64402b0e9572a.tar.gz
database: Enable running up to 4 database queries at once.allow-concurrent-database-queries
The number of threads is copied from bin/cuirass.in. When you have at least two processors, this will allow database queries to be executed in parallel. With some crude testing using the Apache HTTP server benchmarking tool (ab from the httpd package), the max request latency does seem to drop when multiple threads are used, especially when the database queries are slow (I tested by adding usleep to the worker thread code). * src/cuirass/database.scm (with-database): Pass #:parallelism to make-worker-thread-channel.
-rw-r--r--src/cuirass/database.scm4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm
index c82e306..7c1f286 100644
--- a/src/cuirass/database.scm
+++ b/src/cuirass/database.scm
@@ -439,7 +439,9 @@ worker thread that allows database operations to run without intefering with
fibers."
(parameterize ((%db-channel (make-worker-thread-channel
(lambda ()
- (list (db-open))))))
+ (list (db-open)))
+ #:parallelism
+ (min (current-processor-count) 4))))
body ...))
(define* (read-quoted-string #:optional (port (current-input-port)))