cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From slebre...@apache.org
Subject git commit: Make thrift HSHA thread limit unlimited by default
Date Tue, 29 May 2012 16:26:49 GMT
Updated Branches:
  refs/heads/trunk 90170d159 -> f4f9802c4


Make thrift HSHA thread limit unlimited by default

patch by scode; reviewed by slebresne for CASSANDRA-4277


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f4f9802c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f4f9802c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f4f9802c

Branch: refs/heads/trunk
Commit: f4f9802c41828ff1da0c5bc9097f95ef23bc899c
Parents: 90170d1
Author: Sylvain Lebresne <sylvain@riptano.com>
Authored: Tue May 29 18:25:22 2012 +0200
Committer: Sylvain Lebresne <sylvain@riptano.com>
Committed: Tue May 29 18:25:22 2012 +0200

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 conf/cassandra.yaml                                |   37 ++++++--------
 .../cassandra/config/DatabaseDescriptor.java       |    9 +--
 3 files changed, 20 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f4f9802c/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 82ce164..b36b736 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -9,6 +9,7 @@
  * Add support for range tombstones (CASSANDRA-3708)
  * Improve MessagingService efficiency (CASSANDRA-3617)
  * Avoid ID conflicts from concurrent schema changes (CASSANDRA-3794)
+ * Set thrift HSHA server thread limit to unlimet by default (CASSANDRA-4277)
 
 
 1.1.1-dev

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f4f9802c/conf/cassandra.yaml
----------------------------------------------------------------------
diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml
index d64e2c9..eb01f38 100644
--- a/conf/cassandra.yaml
+++ b/conf/cassandra.yaml
@@ -282,34 +282,29 @@ rpc_keepalive: true
 
 # Cassandra provides three options for the RPC Server:
 #
-# sync  -> One connection per thread in the rpc pool (see below).
-#          For a very large number of clients, memory will be your limiting
-#          factor; on a 64 bit JVM, 128KB is the minimum stack size per thread.
-#          Connection pooling is very, very strongly recommended.
+# sync  -> One thread per thrift connection. For a very large number of clients, memory
+#          will be your limiting factor. On a 64 bit JVM, 128KB is the minimum stack size
+#          per thread, and that will correspond to your use of virtual memory (but physical
memory
+#          may be limited depending on use of stack space).
 #
-# async -> Nonblocking server implementation with one thread to serve 
-#          rpc connections.  This is not recommended for high throughput use
-#          cases. Async has been tested to be about 50% slower than sync
-#          or hsha and is deprecated: it will be removed in the next major release.
-#
-# hsha  -> Stands for "half synchronous, half asynchronous." The rpc thread pool 
-#          (see below) is used to manage requests, but the threads are multiplexed
-#          across the different clients.
+# hsha  -> Stands for "half synchronous, half asynchronous." All thrift clients are handled
+#          asynchronously using a small number of threads that does not vary with the amount
+#          of thrift clients (and thus scales well to many clients). The rpc requests are
still
+#          synchronous (one thread per active request).
 #
 # The default is sync because on Windows hsha is about 30% slower.  On Linux,
 # sync/hsha performance is about the same, with hsha of course using less memory.
 rpc_server_type: sync
 
-# Uncomment rpc_min|max|thread to set request pool size.
-# You would primarily set max for the sync server to safeguard against
-# misbehaved clients; if you do hit the max, Cassandra will block until one
-# disconnects before accepting more.  The defaults for sync are min of 16 and max
-# unlimited.
-# 
-# For the Hsha server, the min and max both default to quadruple the number of
-# CPU cores.
+# Uncomment rpc_min|max_thread to set request pool size limits.
+#
+# Regardless of your choice of RPC server (see above), the number of maximum requests in
the
+# RPC thread pool dictates how many concurrent requests are possible (but if you are using
the sync
+# RPC server, it also dictates the number of clients that can be connected at all).
 #
-# This configuration is ignored by the async server.
+# The default is unlimited and thus provide no protection against clients overwhelming the
server. You are
+# encouraged to set a maximum that makes sense for you in production, but do keep in mind
that
+# rpc_max_threads represents the maximum number of client requests this server may execute
concurrently.
 #
 # rpc_min_threads: 16
 # rpc_max_threads: 2048

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f4f9802c/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index 6d85425..bb48ff7 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -381,13 +381,10 @@ public class DatabaseDescriptor
             if (!CassandraDaemon.rpc_server_types.contains(conf.rpc_server_type.toLowerCase()))
                 throw new ConfigurationException("Unknown rpc_server_type: " + conf.rpc_server_type);
             if (conf.rpc_min_threads == null)
-                conf.rpc_min_threads = conf.rpc_server_type.toLowerCase().equals("hsha")
-                                     ? Runtime.getRuntime().availableProcessors() * 4
-                                     : 16;
+                conf.rpc_min_threads = 16;
+
             if (conf.rpc_max_threads == null)
-                conf.rpc_max_threads = conf.rpc_server_type.toLowerCase().equals("hsha")
-                                     ? Runtime.getRuntime().availableProcessors() * 4
-                                     : Integer.MAX_VALUE;
+                conf.rpc_max_threads = Integer.MAX_VALUE;
 
             /* data file and commit log directories. they get created later, when they're
needed. */
             if (conf.commitlog_directory != null && conf.data_file_directories !=
null && conf.saved_caches_directory != null)


Mime
View raw message