UDP problem sending byte768 bytes
Neil Avery
neil at liquidlabs.co.uk
Fri Jun 26 17:25:24 EDT 2009
We are using it (udp) to burst a search request to hundreds or thousands of
machines. Sending using TCP degrades as more machines are added to the
network - even when using our custom connection pooling we still see
degradation - using udp provides much better performance (and we cannot use
multicast). Our message size is a maximum of 5K, - btw - we use netty tcp
elsewhere when reliablity is required.
Cheers Neil.
2009/6/26 "이희승 (Trustin Lee)" <trustin at gmail.com>
> By the way, please let me know if you think the default (768) is not sane
> and should be increased. I'm not really a UDP expert so other people's
> suggestion is appreciated.
>
> Thanks
>
> 이희승 (Trustin Lee) wrote:
>
>> Hi Neil,
>>
>> It's because the default receiveBufferSizePredictor of DatagramChannel
>> is FixedReceiveBufferSizePredictor(768). You can configure the channel
>> to a FixedReceiveBufferSizePredictor with different payload size. For
>> example:
>>
>> DatagramChannel ch = ...;
>> ch.getConfig().setReceiveBufferSizePredictor(
>> new FixedReceiveBufferSizePredictor(1024));
>>
>> or:
>>
>> ConnectionlessBootstrap b = ...;
>> b.setOption("receiveBufferSizePredictor",
>> new FixedReceiveBufferSizePredictor(1024));
>>
>> BTW, I wouldn't recommend to using AdaptiveReceiveBufferSizePrediector
>> for datagrams.
>>
>> HTH,
>> Trustin
>>
>> On 2009-06-25 오전 4:49, neilson9 wrote:
>>
>>> Hi,
>>>
>>> Im having a couple of problems sending UDP byte[]> 768K
>>>
>>> For example if Im passing 1024bytes the buffer.readIndex does not get
>>> updated. The sender only passes 768 bytes and if I manually set the
>>> readIndex to 768 it sends another 768 bytes on the second send. I would
>>> like
>>> to iterate of the byte[] and use the offsets to prevent copying data etc.
>>>
>>> Any help appreciated.
>>> Regards Neil.
>>>
>>> For example:
>>> byte[] payload = userdata....;
>>>
>>> channel = (DatagramChannel) b.bind(new
>>> InetSocketAddress(0));
>>> ChannelBuffer buffer = dynamicBuffer(bytes.length);
>>> buffer.writeBytes(bytes);
>>> LOGGER.info("Sending:" + bytes.length + " sent:" +
>>> buffer.readerIndex());
>>> ChannelFuture channelFuture = channel.write(buffer, new
>>> InetSocketAddress(uri.getHost(), port));
>>> // manually setting to see if it sends the remainder
>>> buffer.readerIndex(768);
>>>
>>> channelFuture = channel.write(buffer, new
>>> InetSocketAddress(uri.getHost(), port));
>>> LOGGER.info("Sending:" + buffer.readerIndex());
>>>
>>>
>>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> netty-users mailing list
>> netty-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/netty-users
>>
>
>
> --
> Trustin Lee, http://gleamynode.net
>
> _______________________________________________
> netty-users mailing list
> netty-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/netty-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/netty-users/attachments/20090626/780c04f3/attachment.html
More information about the netty-users
mailing list