java - 如何用Java设计http压力测试器

标签 java multithreading http asynchronous threadpool

我想针对 URL 运行尽可能多的请求,并且想知道最好的方法是什么。

需求触发 GET 请求并读取响应。

我首先简单地创建一个可同步执行获取和阻止的可运行程序。然后我将那些带有循环的内容转储到固定线程池执行器中。使用 100 个线程运行它会导致每秒 200 个请求。

我还研究了异步库,例如 http://hc.apache.org/httpcomponents-asyncclient-4.0.x/但运行这些将导致大量的 future 永远不会返回。

NIO 或异步库之类的东西可以帮助提高吞吐量吗?我应该如何解决这个问题?

最佳答案

Apache 有一个免费开源工具,名为 JMeter 。它专为 HTTP 负载测试而设计,并提供

  • 通过嵌入式实现记录和重放功能 HTTP Proxy Server用于快速测试开发
  • Assertions - 确保响应时间不超过合理值,检查响应内容、返回码、消息等。
  • Listeners - 构建有助于分析负载测试结果的表格和图表。
  • 已有多个plugins扩展基本功能
  • 支持使用多种受支持的语言编写脚本,例如 JavaScript 或 Beanshell

希望这对您的测试有所帮助,并节省您重新发明轮子以生产更好的产品的宝贵时间。

关于java - 如何用Java设计http压力测试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22376032/

相关文章:

java - Spring-boot 和 Keycloak 集成

c++ - fork() 与 C++ 中的 std::async

http - 如何为云端设置缓存 header 以便 Google Pagespeed 识别它?

sockets - 非常偶发的 Go HTTP 错误 : multiple response. WriteHeader 调用

java - 尝试创建方法时出现空字符错误

java - 如何在数组中同时调用抽象方法和接口(interface)方法?

java - Jackson 的 ParameterNamesModule 无法反序列化类

c# - 尽管产生了意外的堆栈溢出

java - 如何实现阻塞线程池执行器?

RESTful API - 一次可写资源