diff --git a/src/docbkx/book.xml b/src/docbkx/book.xml index 271313e4c41..9d016143f7f 100644 --- a/src/docbkx/book.xml +++ b/src/docbkx/book.xml @@ -1009,6 +1009,33 @@ to ensure well-formedness of your document after an edit session. with configuration such as this. +
<varname>hbase.regionserver.handler.count</varname> + + This setting defines the number of threads that are kept open to answer + incoming requests to user tables. The default of 10 is rather low in order to + prevent users from killing their region servers when using large write buffers + with a high number of concurrent clients. The rule of thumb is to keep this + number low when the payload per request approaches the MB (big puts, scans using + a large cache) and high when the payload is small (gets, small puts, ICVs, deletes). + + + It is safe to set that number to the + maximum number of incoming clients if their payload is small, the typical example + being a cluster that serves a website since puts aren't typically buffered + and most of the operations are gets. + + + The reason why it is dangerous to keep this setting high is that the aggregate + size of all the puts that are currently happening in a region server may impose + too much pressure on its memory, or even trigger an OutOfMemoryError. A region server + running on low memory will trigger its JVM's garbage collector to run more frequently + up to a point where GC pauses become noticeable (the reason being that all the memory + used to keep all the requests' payloads cannot be trashed, no matter how hard the + garbage collector tries). After some time, the overall cluster + throughput is affected since every request that hits that region server will take longer, + which exacerbates the problem even more. + +
Configuration for large memory machines