Java 如何解决Apache Http客户端中的锁争用问题

Java 如何解决Apache Http客户端中的锁争用问题,java,multithreading,apache-httpclient-4.x,Java,Multithreading,Apache Httpclient 4.x,我正在优化与数据库对话的元数据服务。我发现的瓶颈之一是线程在等待连接池的连接时超时(超时=1s)。在对堆栈转储进行更仔细的调查后,似乎有很多线程在org.apache.http.pool.AbstractConnPool中等待锁 ApacheHttpClient:4.5.x ApacheHttpCore:4.4.x MaxNumberOfConnection:900 连接超时:1s 有什么办法来克服这个瓶颈吗? < P>也许你可以考虑另一种方法。 900个http请求对于一个服务提供商来说太重。

我正在优化与数据库对话的元数据服务。我发现的瓶颈之一是线程在等待连接池的连接时超时(超时=1s)。在对堆栈转储进行更仔细的调查后,似乎有很多线程在org.apache.http.pool.AbstractConnPool中等待锁

ApacheHttpClient:4.5.x

ApacheHttpCore:4.4.x

MaxNumberOfConnection:900

连接超时:1s


有什么办法来克服这个瓶颈吗?

< P>也许你可以考虑另一种方法。 900个http请求对于一个服务提供商来说太重。 对于著名的servlet容器(tomcat或jetty),它可以并发处理300-500个请求连接

您可以部署两个或三个服务提供者来形成一个集群,使用nginx或apachehttp服务器来调度请求