Question about per-socket concurrency
Yang Zhang
yanghatespam at gmail.com
Wed Aug 12 21:07:52 EDT 2009
Hi, we have a Netty-based server that is running into a bottleneck that
we suspect may be due to the way (socket-wise) concurrency control works
in the Netty reactor. While we're exploring the code, we're wondering
if anyone has any insight into this so as to expedite our performance
debugging.
The system is a simple topic-based publish-subscribe messaging system,
and the workload we're issuing is a handful of publishers publishing
messages to the server, all on separate hosts on a GigE LAN. Each of
the publishers tops out at just 1000 messages per second, where each
message is 1KB in size. However, we can keep piling on clients, and the
throughput scales up linearly.
From this info, one simple explanation would be that the culprit is a
bottleneck in the client. Yet the strange thing is that the CPU
utilization of each client is just ~5%. On the server, CPU utilization
hovers at ~20% when presented with a single publisher, and grows another
~20% for each additional publisher. The bottom line is that we're being
held back well before full CPU or network saturation.
Is there any synchronization in the reactor core of Netty that could be
causing this per-socket bottleneck? Thanks in advance for any hints.
--
Yang Zhang
http://www.mit.edu/~y_z/
More information about the netty-users
mailing list