java模拟连接超时

用Toxiproxy和Java的HttpURLConnection模拟各种连接问题,以查看产生了什么样的错误:连接超时vs.读取超时vs.连接被拒绝…。

结果:

系统:openjdk 11.0.1 2018-10-16

  1. (.setConnectTimeout 1) => java.net.SocketTimeoutException:连接超时
  2. (.setReadTimeout 1) => javax.net.ssl.SSLProtocolException: Read timed out在HTTPS上javax.net.ssl.SSLProtocolException: Read timed outjava.net.SocketTimeoutException: Read timed out在HTTP上java.net.SocketTimeoutException: Read timed out (或5s延迟或超时的Toxiproxy)
  3. 在端口上没有监听=> java.net.ConnectException:连接被拒绝
  4. 没有上游配置的Toxiproxy(即,端口是开放的,但连接没有问题)=> javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake HTTPS上javax.net.ssl.SSLHandshakeException: Remote host terminated the handshakejava.net.SocketTimeoutException: Read timed out HTTP上的java.net.SocketTimeoutException: Read timed out
  5. limit_data_downstream => java.io.IOException:过早的EOF

(我还无法模拟(但是)“连接中断/断开”。)

设置

先决条件

/etc/hosts添加:

127.0.0.1       proxied.google.com

毒物替代品设置

开始使用抗氧化剂:

docker pull shopify/toxiproxy
# BEFORE we `run` it: case #3
docker run --rm -p 5555:5555 -p 6666:6666 -p 8474:8474 --name toxiproxy -it shopify/toxiproxy

配置它(我们可以只发布到:8474但是使用CLI更容易):

$ docker exec -it toxiproxy /bin/sh
/ # cd /go/bin/
# ./toxiproxy-cli create google -l 0.0.0.0:6666 -u www.google.com:443 # BEFORE this is run: case #4
# ./toxiproxy-cli toxic add google -t latency -a latency=5000 # case #2
Added downstream latency toxic 'latency_downstream' on proxy 'google
# ./toxiproxy-cli toxic remove google -n latency_downstream
Removed toxic 'latency_downstream' on proxy 'google'# ./toxiproxy-cli toxic add google -t  timeout -a timeout=2000 # case #2
Added downstream timeout toxic 'timeout_downstream' on proxy 'google'
# ./toxiproxy-cli toxic remove google -n timeout_downstream
Removed toxic 'timeout_downstream' on proxy 'google'# ./toxiproxy-cli toxic add google -t limit_data -a bytes=5000 # case #5
Added downstream limit_data toxic 'limit_data_downstream' on proxy 'google'

测试代码

(import '[java.net URL HttpURLConnection])
(->(doto ^HttpURLConnection (.openConnection (URL. "https://proxied.google.com:6666/"));; BEWARE: JVM *must* be started with `-Dsun.net.http.allowRestrictedHeaders=true` to allow setting the Host:(.setRequestProperty "Host" "www.google.com")(.setConnectTimeout 1000)(.setReadTimeout 1000))(.getInputStream)slurp)

巴克特

阅读我的toxiproxy模拟网络超时以了解为什么我们需要打扰/etc/hostsHost标头。

翻译自: https://www.javacodegeeks.com/2018/11/java-simulating-connection-problems.html

java模拟连接超时

java模拟连接超时_Java:使用Toxiproxy模拟各种连接问题相关推荐

  1. linux http连接超时时间设置,Linux 下 HTTP连接超时

    将项目部署到现场环境,HTTP请求莫名奇妙的连接超时,通过抓包定位了问题,是请求的IP被禁止掉.其中用到了抓包,将记录记录于此. tcpdump host 120.197.89.51 -i any - ...

  2. java模拟银行存取_JAVA基础案例 模拟银行存取款业务

    模拟银行存取款业务 编写一个Java应用程序,模拟网上银行登录及存取款业务.登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型.操作 ...

  3. java程序模拟atm机_Java项目实现模拟ATM机

    本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下 项目名称 模拟ATM机 项目描述 简单实现ATM机功能 代码实现 测试类 public class Test { // ...

  4. java web atm机_Java项目实现模拟ATM机

    本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下 项目名称 模拟ATM机 项目描述 简单实现ATM机功能 代码实现 测试类 public class Test { // ...

  5. mc java 连接超时_Java进程CPU占用高导致的网页请求超时的故障排查

    一.发现问题的系统检查: 一个管理平台门户网页进统计页面提示请求超时,随进服务器操作系统检查load average超过4负载很大,PID为7163的进程占用到了800%多.  二.定位故障 根据这 ...

  6. java 微信请求超时_java – SQL服务器“超出锁定请求超时时间”..再次

    我在尝试扩展sql server SP中的锁定超时时遇到问题.无论我尝试什么,它都会继续投掷"锁定请求超时时间超出". 我正在使用 java jtds 1.2.2,c3p0 0.9 ...

  7. java 远程调试超时_java 远程调试

    参考: 1. 远程调试普通程序 程序打成 jar 包,使用命令行执行: java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport= ...

  8. java 获取mysql链接_Java中如何获取mysql连接的3种方法总结

    前言 本文主要来说说三种 Java 中获取 mysql 连接的方式,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 第一种:传统的连接方式: 第二种:读取配置文件方式: 第三种:数据库 ...

  9. java微信支付超时_Java微信支付之关闭订单

    本文实例为大家分享了java微信支付之关闭订单的具体代码,供大家参考,具体内容如下 一.应用场景 商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付 系统下单后,用户支付超 ...

最新文章

  1. .Net使用Redis详解之ServiceStack.Redis(七)
  2. 【工具】13 款 Linux 实用工具推荐,个个是神器!(附下载链接)
  3. 服务器客户端回射程序-自己设计包的结构
  4. Python|队列Queue
  5. CF724E Goods transportation
  6. 干货:12个案例教你用Python玩转数据可视化(建议收藏)
  7. 【例题+习题】【数值计算方法复习】【湘潭大学】(三)
  8. 进程 线程 用户控件
  9. 百度智能云“云+AI”新战略年终答卷,PaddlePaddle累计开发者数量265万人
  10. 怎样查找某个sp中哪条sql语句存在性能问题。
  11. 英语翻译软件测试简历,如此翻译-2 - Victor's Testing Career - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  12. c语言资产管理系统设计报告,(C)固定资产管理系统论文
  13. Linux 就该这么学
  14. 谷歌生物医学翻译软件_翻译器可翻译方言和文言文 超出谷歌微软的翻译软件能力...
  15. 还不知道简历如何写?就该这样写!
  16. 思维导图软件Mindmanager2018下载
  17. ERROR: pip‘s dependency resolver does not currently take into account all the packages that are inst
  18. bzoj4008亚瑟王
  19. oracle数据库导出数据为csv包含clob数据
  20. c语言mfc怎么插入背景图片,MFC 对话框添加背景图片详细过程(两种方法)

热门文章

  1. P1494 [国家集训队]小Z的袜子
  2. 【每日一题】7月20日题目精讲—着色方案
  3. 【周末狂欢赛6】[AT1219]历史研究(回滚莫队),大魔法师(矩阵+线段树),单峰排列
  4. 字符串:凯撒密码(洛谷P1914)
  5. P1758-[NOI2009]管道取珠【dp】
  6. jzoj4248-n染色【数学,快速幂】
  7. 2019.01.24【NOIP普及组】模拟赛C组
  8. 2、oracle数据库的用户和权限
  9. 2、安装和连接mysql
  10. mongodb如何实现更新一个字段的值为另外一个字段的值?