I am trying to tune a high message traffic system running on Solaris. The architecture is a large number (600) of clients which connect via TCP to a big Solaris server and then send/receive relatively small messages (.5 to 1K payload) at high rates. The goal is to minimize the latency of each message processed. I suspect that the TCP stack of the server is getting overwhelmed by all the traffic. What are some commands/metrics that I can use to confirm this, and in case this is true, what is the best way to alleviate this bottleneck?

PS I posted this on StackOverflow originally. One person suggested snoop and dtrace. dtrace seems pretty general - are there any additional pointers on how to use it to diagnose TCP issues?

  • Which mechanism are you using? (select, poll, Event Ports)? – jasonjwwilliams Feb 24 '10 at 16:41
  • Not sure. The application is using CORBA on top of TCP, I'd have to dig through the source. – Andy Faibishenko Feb 26 '10 at 16:38

Take a look at the dtrace toolkit for starters, also "netstat -na" output...do you see a lot of connections in TIME WAIT...

In the dtrace toolkit (google it), the "connections" script may be of particular interest to you. This is assuming you are using Solaris 10 of course...

600 concurrent TCP connections is not a particularly large number.

If you do need tuning you'll be using ndd to set kernel parameters. See: Internet Protocol Suite Tunable Parameters

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy