[rabbitmq-discuss] RabbitMQ C library function amqp_simple_wait_frame takes 400 ms
Jim Irrer
irrer at umich.edu
Thu Jul 1 19:08:03 BST 2010
I had tried setting TCP_NODELAY before but did it this way:
setsockopt(socketFD, SOL_SOCKET, TCP_NODELAY, &one, sizeof(one));
and instead it needed to be done like this:
setsockopt(socketFD, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one));
Yes, that's it. Runs really fast now. 1.4294 milliseconds per round trip.
It seems like it would be
faster than that, but it's way better than 400ms and is sufficient for our
purposes. I suppose it's
doing program context switches If I bump into
any
Thanks for not reading the part of my post that said that I had already
tried this, and then posting the
correct version of the call. :) And as a bonus you don't have to be root
do to make the call, which
was also suspicious because you can do it in Java without being root.
- Jim
Jim Irrer irrer at umich.edu (734) 647-4409
University of Michigan Hospital Radiation Oncology
519 W. William St. Ann Arbor, MI 48103
On Wed, Jun 30, 2010 at 9:53 PM, Tony Garnock-Jones <tonyg at lshift.net>wrote:
> Hi Jim,
>
> I think it's possible that Brett is on the right track with his suggestion
> of
> the Nagle algorithm being responsible for the delays. You could try the
> following:
>
> int one = 1;
> setsockopt(amqp_get_sockfd(conn),
> IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one));
>
> Cheers,
> Tony
>
>
> Jim Irrer wrote:
> > Hi All -
> >
> > I'm working on two functions that act as a client-server pair. They
> > use two amq.direct queues to communicate. When ever either of
> > them calls the amqp_simple_wait_frame function, it does not return
> > for 436618 microseconds.
> >
> > Some other background info that might be relevant:
> >
> > If I only send messages in one direction it's really fast.
> >
> > Both processes are using separate connectors and different sockets.
> >
> > I used the amqp_consumer.c amqp_producer.c code in
> > the examples directory as a reference.
> >
> > Is there a way to avoid this delay?
> >
> > Also ...
> >
> > Could I use the same socket in each program as long as it was only
> > used by one thread at a time?
> >
> > Could I use the same connection in each program if it was only
> > used by one thread at a time?
> >
> > Thanks for any insights,
> >
> > - Jim
> >
> > Jim Irrer irrer at umich.edu <mailto:irrer at umich.edu> (734)
> 647-4409
> > University of Michigan Hospital Radiation Oncology
> > 519 W. William St. Ann Arbor, MI 48103
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > rabbitmq-discuss mailing list
> > rabbitmq-discuss at lists.rabbitmq.com
> > https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20100701/5e462783/attachment-0001.htm>
More information about the rabbitmq-discuss
mailing list