如何用TCP/IP协议代替HTTP发送get请求

小宇 2018-12-15 04:39:28
需要做的是访问一个地址100万次,(业务是每访问一次会生成一个新用户,做测试用)
我现在是在java代码中遍历发100万次HTTP GET请求,小试一下了,比较慢,预计发完100万次得需要几天,
我知道TCP/IP协议请求是比较快的,但是我不知道需要怎么写,网上也没找到,还望大神们指点指点
...全文
797 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2018-12-21
  • 打赏
  • 举报
回复
协议之所以是协议,那就是双方约定好的,你用tcp发,那也是自己基于TCP基础上实现http协议,有啥意义?
你这种情况直接上多线程就行了,IO太占时间,而且大概率是你服务器响应速度太慢,本地测试网络延迟应该不会很低的

实在懒的话,直接AB压,这个就很暴力了,就怕你服务器撑不住
或者用其他压力测试工具
sk815 2018-12-21
  • 打赏
  • 举报
回复
httpclien urlconnection 都可以···做好写个连接池 然后多线程 别遍历····
小宇 2018-12-20
  • 打赏
  • 举报
回复
引用 1 楼 咸哼酒家 的回复:
发100万次请求,要几天呢,姑且当作3天 那么就是每分钟230条请求,这计算速度也无法满足嘛
用tcp异步发的话是可以的
牧之~ 2018-12-20
  • 打赏
  • 举报
回复
应该在生成测加一个“批量”接口,输入产生用户的个数,然后他去生成多少个。否则时间都浪费在了网络上。否则只能多线程访问,类似压测。
MiceRice 2018-12-17
  • 打赏
  • 举报
回复
假设做的并不正确。HTTP本身就是建立在TCP/IP基础上的。 限制HTTP发送速度的情况很多,你没有说明到底是什么情况,比如:网络带宽、单次发送数据包、目标服务端处理能力等。 极端举例来说,单次发送数据包如果有 1个G,那你100万次如果走普通网络,发几天能发完才怪。 但是,如果单次发送数据包假定仅有 1K,那么100万次数据包不会用需要耗费几天,你有如下几个工作可以提升性能: 1)HTTP连接使用KeepAlive,而且一定要确保KeepAlive是生效的,而不是“我估计它生效了”。 2)发送端合并数据包,比如把1000个包合并起来,那么单次发送就是 1000K,但直接包含了1000个请求。 3)并发调用目标服务器,在横向伸缩能力基本正常的情况下,你单线程如果调用服务端是 10TPS,那么你100线程也许就是 800TPS 了。 4)拓宽网络带宽或进行数据包压缩,如果发送内容是以文本信息为主(比如是JSON),那么压缩效率可以很高。 当然以上建议也包含了很多假定,比如服务器端处理能力绝对没有任何问题。
咸哼酒家 2018-12-17
  • 打赏
  • 举报
回复
发100万次请求,要几天呢,姑且当作3天
那么就是每分钟230条请求,这计算速度也无法满足嘛

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧