hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fran Casado <juanfrancisco.cas...@pandasecurity.com>
Subject Thrift monitoring and performance
Date Fri, 23 Sep 2016 08:14:01 GMT
Hi there,

We have a productive Hbase (v1.1.2) cluster with a lone thrift2 server.
We're experiencing some performance troubles (timeouts, TIO Errors) when
accesing HBASE, with C# libraries, through our thrift server.

We're launching the Thrift daemon with this command: "hbase-daemon.sh start
thrift2" and this is the thrift usage info:

/usage: Thrift [-b <arg>] [-c] [-f] [-h] [-hsha | -nonblocking |
       -threadpool] [--infoport <arg>]  [-p <arg>]
 -b,--bind <arg>       Address to bind the Thrift server to. [default:
                       0.0.0.0]
 -c,--compact          Use the compact protocol
 -f,--framed           Use framed transport
 -h,--help             Print help information
 -hsha                 Use the THsHaServer. This implies the framed
                       transport.
    --infoport <arg>   Port for web UI
 -nonblocking          Use the TNonblockingServer. This implies the framed
                       transport.
 -p,--port <arg>       Port to bind to [default: 9090]
 -threadpool           Use the TThreadPoolServer. This is the default./

Is there a way to increase: the number of workers or the timeout? We've
checked the thrift source code for better understanding of the server and
we've see extra useless parameters to launch the daemon:

  private static Options getOptions() {
    Options options = new Options();
    options.addOption("b", "bind", true,
        "Address to bind the Thrift server to. [default: 0.0.0.0]");
    options.addOption("p", "port", true, "Port to bind to [default: " +
DEFAULT_LISTEN_PORT + "]");
    options.addOption("f", "framed", false, "Use framed transport");
    options.addOption("c", "compact", false, "Use the compact protocol");
    *options.addOption("w", "workers", true, "How many worker threads to
use.");*
    options.addOption("q", "callQueueSize", true,
      "Max size of request queue (unbounded by default)");
    options.addOption("h", "help", false, "Print help information");
    options.addOption(null, "infoport", true, "Port for web UI");
    *options.addOption("t", READ_TIMEOUT_OPTION, true,
      "Amount of time in milliseconds before a server thread will timeout "
+
      "waiting for client to send data on a connected socket. Currently, " +
      "only applies to TBoundedThreadPoolServer");*
    OptionGroup servers = new OptionGroup();
    servers.addOption(
        new Option("nonblocking", false, "Use the TNonblockingServer. This
implies the framed transport."));
    servers.addOption(new Option("hsha", false, "Use the THsHaServer. This
implies the framed transport."));
    servers.addOption(new Option("threadpool", false, "Use the
TThreadPoolServer. This is the default."));
    options.addOptionGroup(servers);
    return options;
}

We've searched the usage of the "workers" parameter, and encountered that it
only limits the upper bound of the number of workers used to process all the
request attended by the thrift server:
  /  if (workerThreads > 0) {
      serverArgs.maxWorkerThreads(workerThreads);
    }/

And the READ_TIMEOUT_OPTION ("t") modifies the "waiting for client" time,
and it's only applicable to the TBoundedThreadPoolServer, wich is not the
default one...

So, summarizing:
 - How can we improve the thrift performance?
 - Is there a way to change default timeout value to avoid the TIO Errors?
 - How can we monitorize the thrift server global performance?

Thank you all folks!!




--
View this message in context: http://apache-hbase.679495.n3.nabble.com/Thrift-monitoring-and-performance-tp4082865.html
Sent from the HBase User mailing list archive at Nabble.com.

Mime
View raw message