On Mon, 2013-10-14 at 22:22 +0100, Ke Ren wrote: > Hi, > > We are sending massive http client requests on amazon ec2 instance with 8 > cores (m3.xlarge). We notice always one core is hammered the most (80%) but > others are just used around 30% to 40%. The httpclient we are using is > 4.2.5. I reproduced this issue with very simple code on ec2 4 core > instance. Basically I created one http client instance new > DefaultHttpClient(mgr, params); mgr is a PoolingClientConnectionManager. > This http client instance is shared by multiple threads. In this test, each > thread worker just gets the same 700k file from s3. The result is the same. > always just one core is hit heavily but very low usage on others. From > jprofiler profiling, it looks the most cpu usage is on IO read from > InputStream. I used EntityUtils.toByteArray to read data from entity. From > netstat, there are 50 connections. The thing confuses me is why it always > hits the same core when http responses are processed from multiple threads. > Any ideas? > > Thanks in advance, > > Ke
The only rational theory I can think of is that the ReentrantLock guarding the connection pool favors certain threads due to 'unfair' behavior used by default. Still, I would presume that threads should not be bound to one core only and the load should get distributed evenly. Oleg --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
