hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ted Yu (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-4863) Make HBase Thrift server more configurable and add a command-line UI test
Date Thu, 24 Nov 2011 16:57:39 GMT

    [ https://issues.apache.org/jira/browse/HBASE-4863?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13156821#comment-13156821
] 

Ted Yu commented on HBASE-4863:
-------------------------------

I got compilation error:
{code}
testRunThriftServer[0](org.apache.hadoop.hbase.thrift.TestThriftServerCmdLine)  Time elapsed:
2.047 sec  <<< ERROR!
java.lang.Error: Unresolved compilation problem:
  Cannot make a static reference to the non-static method getColumnDescriptors() from the
type TestThriftServer

  at org.apache.hadoop.hbase.thrift.TestThriftServer.createDropTable(TestThriftServer.java:111)
{code}

Since HBaseThreadPoolServer extends TServer, I think a better name for the class would be
TThreadPoolServer.
                
> Make HBase Thrift server more configurable and add a command-line UI test
> -------------------------------------------------------------------------
>
>                 Key: HBASE-4863
>                 URL: https://issues.apache.org/jira/browse/HBASE-4863
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Mikhail Bautin
>            Assignee: Mikhail Bautin
>         Attachments: D531.1.patch, D531.2.patch
>
>
> This started as an internal hotfix where we found out that the Thrift server spawned
15000 threads. To bound the thread pool size I added a custom thread pool server implementation
called HBaseThreadPoolServer into HBase codebase, and made the following parameters configurable
from both command line and as config settings: minWorkerThreads, maxWorkerThreads, and maxQueuedRequests.
Under an increasing load, the server creates new threads for every connection before the pool
size reaches minWorkerThreads. After that, the server puts new connections into the queue
and only creates a new thread when the queue is full. If an attempt to create a new thread
fails, the server drops connection. The default TThreadPoolServer would crash in that case,
but it never happened because the thread pool was unbounded, so the server would hang indefinitely,
consume a lot of memory, and cause huge latency spikes on the client side.
> Another part of this fix is refactoring and unit testing of the command-line part of
the Thrift server. The logic there is sufficiently complicated, and the existing ThriftServer
class does not test that part at all. The new TestThriftServerCmdLine test starts the Thrift
server on a random port with various combinations of options and talks to it through the client
API from another thread.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message