RpcActivityMBean.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.ipc.metrics;
  19. import javax.management.ObjectName;
  20. import org.apache.hadoop.metrics.util.MBeanUtil;
  21. import org.apache.hadoop.metrics.util.MetricsDynamicMBeanBase;
  22. import org.apache.hadoop.metrics.util.MetricsRegistry;
  23. /**
  24.  * 
  25.  * This is the JMX MBean for reporting the RPC layer Activity.
  26.  * The MBean is register using the name
  27.  *        "hadoop:service=<RpcServiceName>,name=RpcActivityForPort<port>"
  28.  * 
  29.  * Many of the activity metrics are sampled and averaged on an interval 
  30.  * which can be specified in the metrics config file.
  31.  * <p>
  32.  * For the metrics that are sampled and averaged, one must specify 
  33.  * a metrics context that does periodic update calls. Most metrics contexts do.
  34.  * The default Null metrics context however does NOT. So if you aren't
  35.  * using any other metrics context then you can turn on the viewing and averaging
  36.  * of sampled metrics by  specifying the following two lines
  37.  *  in the hadoop-meterics.properties file:
  38.  *  <pre>
  39.  *        rpc.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread
  40.  *        rpc.period=10
  41.  *  </pre>
  42.  *<p>
  43.  * Note that the metrics are collected regardless of the context used.
  44.  * The context with the update thread is used to average the data periodically
  45.  *
  46.  *
  47.  *
  48.  * Impl details: We use a dynamic mbean that gets the list of the metrics
  49.  * from the metrics registry passed as an argument to the constructor
  50.  */
  51. public class RpcActivityMBean extends MetricsDynamicMBeanBase {
  52.   final private ObjectName mbeanName;
  53.   /**
  54.    * 
  55.    * @param mr - the metrics registry that has all the metrics
  56.    * @param serviceName - the service name for the rpc service 
  57.    * @param port - the rpc port.
  58.    */
  59.   public RpcActivityMBean(final MetricsRegistry mr, final String serviceName, final String port) {
  60.     
  61.     super(mr, "Rpc layer statistics");
  62.     mbeanName = MBeanUtil.registerMBean(serviceName,
  63.           "RpcActivityForPort" + port, this);
  64.   }
  65.   
  66.   public void shutdown() {
  67.     if (mbeanName != null)
  68.       MBeanUtil.unregisterMBean(mbeanName);
  69.   }
  70. }