`
lj6684
  • 浏览: 964837 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Ruby实现的简单HTTP探测请求发生器

    博客分类:
  • Ruby
阅读更多
项目上产品因为前端网络架设负载均衡设备,导致产品运行不稳定,为了尽快重现解决问题,首先需要能够模拟出项目上使用的负载均衡设备,对产品持续进行压力测试;

负载均衡设备特点:
1. 通过发送空的HTTP请求,探测产品具体服务端口是否可连通;
2. 探测请求发送间隔5秒;
3. 发现某一服务端口不通,立即动态切换服务请求到备用设备上;(这个功能不是此次模拟重点)

Ruby简单实现如下
require "open-uri"

#监听服务器IP地址
ip = '127.0.0.1'
#待监听端口列表
ports = [20440, 20443, 20448]
while true		
  ports.each do |port|
    url = "http://#{ip}:#{port}"		
    begin
      open(url) do |http|
        puts "[#{Time.now}] #{url} OK"
        html = http.read
      end
    rescue Exception => e
      puts "[#{Time.now}] #{url} #{e}"
    end
  end	
  puts "\r\n"
  sleep(5)
end


TCP监听版本
require "socket"

ip = '172.16.13.12'
ports = [30443,7443]
loop {
  ports.each do |port|
    begin
      socket = TCPSocket.open(ip, port)
      puts "#{Time.now} #{ip}:#{port} test OK"
      socket.close
    rescue Exception => e
      puts "#{Time.now} #{ip}:#{port} test error [#{e}]"
    end
  end	
  puts "\r\n"
  sleep(5)
}
分享到:
评论

相关推荐

    Ruby-Http2HTTP2协议的纯Ruby实现

    Ruby-Http2是HTTP/2协议的一个纯Ruby实现,它为Ruby开发者提供了一种高效、安全的方式来处理HTTP通信。HTTP/2是HTTP协议的最新版本,相比于早期的HTTP/1.1,它引入了许多改进,旨在提高网络性能,降低延迟,并优化...

    webmock, 在 ruby 中,对HTTP请求的stub和设置期望的库.zip

    webmock, 在 ruby 中,对HTTP请求的stub和设置期望的库 WebMock 在 ruby 中对HTTP请求进行存储和设置期望的库。特性在低HTTP客户机库级别的Stubbing请求( 在更改HTTP库时不需要更改测试)设置和验证HTTP请求的期望...

    Ruby-Typhoeus封装libcurl让http请求更快和可靠

    "Ruby-Typhoeus封装libcurl让http请求更快和可靠"这一主题,正是关于如何利用Ruby的Typhoeus库来封装libcurl,以实现高效、可靠的HTTP请求。 Typhoeus是一个基于libcurl的Ruby库,它提供了一种简单的方式来发送HTTP...

    Ruby-Whois一个智能纯Ruby实现的WHOIS客户端与解析器

    Ruby-Whois是一个高效、灵活且完全用Ruby语言编写的WHOIS客户端和解析库。它设计用于查询域名、IP地址和其他WHOIS相关的记录,并能够处理各种服务器响应格式。这个库的强大之处在于它不仅可以发送WHOIS请求,还可以...

    Ruby-ReekRuby代码味道探测器

    **Ruby Reek: 代码质量的嗅探器** Ruby Reek 是一款强大的静态代码分析工具,专注于检测 Ruby 代码中的“坏味道”或不良编程习惯。这个工具可以帮助开发者提升代码质量,遵循更好的编程实践,从而使得代码更易于...

    Ruby-HttpLogHTTP请求日志输出

    Ruby中的HttpLog库是一个强大的工具,它允许开发者记录和分析HTTP请求的详细信息。这个库主要面向那些希望深入了解其应用程序网络交互的开发人员,尤其是在调试、性能优化或监控上下文中。HttpLog通过提供详细的日志...

    Ruby-TensorStream用Ruby重新实现TensorFlow

    Ruby-TensorStream的一大亮点是它默认提供了纯Ruby实现的计算图执行器。这意味着整个框架不依赖于TensorFlow的C++或Python接口,而是完全在Ruby环境中运行。这为Ruby开发者提供了更直观、更无缝的体验,同时也减少了...

    ruby-snmp, SNMP ( 简单网络管理协议)的ruby 实现.zip

    ruby-snmp, SNMP ( 简单网络管理协议)的ruby 实现 用于 ruby的 SNMP库摘要这里库实现 SNMP ( 简单网络管理协议) 。 它在纯 ruby 中实现,因此不依赖于的外部库( 如 ) 。 你可以在 ruby 可以运行的任何地方运行这里库...

    飞机大战ruby实现

    【标题】"飞机大战ruby实现" 是一个使用Ruby编程语言开发的飞行射击游戏,它基于RPG Maker XP 1.03引擎构建。这个项目展示了如何利用Ruby的灵活性和RPG Maker XP的功能来创建一款简单但有趣的游戏。 【描述】中的...

    Ruby - NetHTTP实现短信验证码注册登录完整示例:Ruby - NetHTTP.rb和附件说明.rar

    这个库使得开发者可以方便地发送HTTP请求并接收响应,从而执行各种网络操作,比如下载文件、提交表单或者,正如标题所示,实现短信验证码的注册和登录功能。在这个示例中,我们将探讨如何利用Net::HTTP库来构建一个...

    Ruby-RESTClient简单的HTTP和Ruby的REST客户端

    这个库使得在Ruby环境中进行Web服务交互变得极其简单,是开发者进行API测试和集成时的常用工具。RESTClient提供了丰富的功能,可以方便地发送GET、POST、PUT、DELETE等各种HTTP请求,并能处理响应的各种数据格式,如...

    ruby-使用ruby实现的排序算法-sorting.zip

    本资源"ruby-使用ruby实现的排序算法-sorting.zip"聚焦于如何使用Ruby实现不同的排序算法,这对于Ruby开发者来说是一项重要的技能。下面将详细讨论Ruby中的排序算法及其原理。 1. 内置排序方法 `sort` Ruby提供了...

    Ruby-DeviceDetector一个用Ruby编写的精确和快速的useragent解析器和设备探测器

    Ruby-DeviceDetector是一个基于Ruby语言的用户代理解析器和设备检测工具,它的设计目标是提供高效且准确的方式来识别用户使用的设备类型,如桌面电脑、移动设备、平板电脑、智能电视或者各种浏览器。这个库能够帮助...

    ruby-nmap, Nmap探测工具和安全/端口扫描器的Rubyful接口.zip

    ruby-nmap, Nmap探测工具和安全/端口扫描器的Rubyful接口 ruby源代码问题文档文档[Email] ( mailto: 后端,gmail.com) 处的mod3 描述to nmap,探测工具和安全/端口扫描器的ruby 界面。特性为运行nmap提供一个 ruby ...

    Ruby-rubyinstall安装RubyJRubyRubiniusMagLevorMRuby

    它由Ruby的创始人松本行弘(Yukihiro Matsumoto)开发,基于C语言实现,是标准的Ruby解释器。 2. JRuby:JRuby是Ruby的一个Java实现,它可以在Java平台上运行,并且能够利用Java的性能和生态系统。JRuby的最大优点...

    Ruby-httparty让http有趣

    Ruby-httparty是一个强大的Ruby库,它使得执行HTTP请求变得简单且有趣。这个库的主要目标是减少处理RESTful API和其他Web服务时的繁琐代码,让开发者能够更专注于业务逻辑,而不是网络交互的细节。在Ruby社区中,...

    在ruby中记录传出的HTTP请求-Ruby开发

    httplog记录从应用程序发出的传出HTTP请求。 帮助调试讨厌的API错误响应,或者只是大致了解幕后情况。 到目前为止,由于此问题,此宝石可与rubygems.org的以下ruby mo httplog版本1.4.0和1.4.1兼容,请更新至1.4.2或...

    Ruby-bladetranslate是一款用ruby打造的简单控制台翻译软件

    在使用blade-translate时,用户首先需要安装必要的依赖库,这通常通过Ruby的包管理器gem来完成。然后,他们可以在终端中运行该工具,输入待翻译的文本,并指定源语言和目标语言。命令行参数的使用使得操作更加灵活,...

Global site tag (gtag.js) - Google Analytics