扫码关注官方订阅号
代码如下,模仿10000次请求,为什么只成功了3次,求指教
闭关修行中......
按题主的代码,在第三次请求中,创建HttpClientConnection对象时就已经阻塞了,只成功3次实属正常(第三次是浏览器的请求)。 看一下PoolingHttpClientConnectionManager中的leaseConnection方法,阻塞发生在PoolEntryFuture对象get()方法中,这里会一直await下去。 题主可以自行detect一下HttpClient的源码。
HttpClientConnection
PoolingHttpClientConnectionManager
leaseConnection
PoolEntryFuture
HttpClient
解决方法很简单,每次都是新的HttpConnection就对了,比如:
for (int i = 0; i < 1000; i++) System.out.println(HttpClients.createDefault().execute(httpGet).getStatusLine().toString());
是你们老师叫你们刷的吗。。。这种统计应该就是访问一次就加一次了,你可以像上面那位兄弟那样查看返回的Response.getStatusLine()是不是出错了。如果200那那边应该就是加的。
不行再用Response.getEntity()看看返回的内容是不是你正确的html语句呗
还可以设置一下超时时间,有可能是那边链接过多超时了,不行做个delay就行 参考http://www.tuicool.com/articles/MjumArm
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
按题主的代码,在第三次请求中,创建
HttpClientConnection
对象时就已经阻塞了,只成功3次实属正常(第三次是浏览器的请求)。看一下
PoolingHttpClientConnectionManager
中的leaseConnection
方法,阻塞发生在PoolEntryFuture
对象get()方法中,这里会一直await下去。题主可以自行detect一下
HttpClient
的源码。解决方法很简单,每次都是新的HttpConnection就对了,比如:
是你们老师叫你们刷的吗。。。这种统计应该就是访问一次就加一次了,你可以像上面那位兄弟那样查看返回的Response.getStatusLine()是不是出错了。如果200那那边应该就是加的。
不行再用Response.getEntity()看看返回的内容是不是你正确的html语句呗
还可以设置一下超时时间,有可能是那边链接过多超时了,不行做个delay就行
参考http://www.tuicool.com/articles/MjumArm