从客户端为服务器生成测试负载

时间:2012-04-18 05:36:21

标签: netty

问题1:

我在工作负载生成器客户端中使用计时器将消息流式传输到服务器。使用多个timertasks对创建的线程数或Channel的共享有什么影响吗?

我想了解这是否是生成负载的首选方法。我可能会以这种方式出现其他指数延迟或其他类型的延迟。

public class TestClientHandler extends SimpleChannelHandler {

private Timer timer = new HashedWheelTimer();

Channel channel;

public TestClientHandler() {
    timer.newTimeout( new DataStreamer( this ),
                      1000, 
                      TimeUnit.MILLISECONDS );
}

@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {
        e.getCause().printStackTrace();

        org.jboss.netty.channel.Channel ch = e.getChannel();
        ch.close();
}

  @Override
  public void channelConnected( ChannelHandlerContext ctx,
                                ChannelStateEvent e) {


      this.channel = e.getChannel();

      ChannelFuture future = e.getChannel().write( "SOMETHING" );

  }

}

问题2:

如何针对不同类型的请求维护不同的渠道?是否有基于优先级的想法? OrderAwareMemoryHandler是推荐的插入PriorityBlockingQueue的方式,就像在另一个线程中讨论一样吗?

1 个答案:

答案 0 :(得分:1)

问题1:我不确定我是否正确理解了Q1。只是,我可以说HashedWeelTimer是一个单线程计时器任务管理器 - >您传入的所有任务都由一个线程执行。

q2:我不清楚