{"id":17348339,"url":"https://github.com/jmervine/httperfrb","last_synced_at":"2025-08-12T00:33:13.449Z","repository":{"id":55086861,"uuid":"5189320","full_name":"jmervine/httperfrb","owner":"jmervine","description":"Simple interface for calling httperf via ruby.","archived":false,"fork":false,"pushed_at":"2021-01-11T19:25:11.000Z","size":357,"stargazers_count":13,"open_issues_count":2,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-27T21:57:19.855Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jmervine.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-07-26T07:53:09.000Z","updated_at":"2020-05-10T13:27:31.000Z","dependencies_parsed_at":"2022-08-14T11:31:23.524Z","dependency_job_id":null,"html_url":"https://github.com/jmervine/httperfrb","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/jmervine/httperfrb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmervine%2Fhttperfrb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmervine%2Fhttperfrb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmervine%2Fhttperfrb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmervine%2Fhttperfrb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmervine","download_url":"https://codeload.github.com/jmervine/httperfrb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmervine%2Fhttperfrb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269980860,"owners_count":24507271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T16:52:00.482Z","updated_at":"2025-08-12T00:33:13.371Z","avatar_url":"https://github.com/jmervine.png","language":"Ruby","readme":"# HTTPerf.rb\n\n![Gem Version](https://badge.fury.io/rb/httperfrb.png) \u0026nbsp; ![Build Status](https://travis-ci.org/jmervine/httperfrb.png?branch=master)\n\nSimple Ruby interface for httperf.\n\n## Installing 'httperf'\n\nRequires [httperf](http://mervine.net/httperf), of course...\n\n#### Mac\n\n    :::shell\n    sudo port install httperf\n\n#### Debian / Ubuntu\n\n    :::shell\n    sudo apt-get install httperf\n\n#### Redhat / CentOS\n\n    :::shell\n    sudo yum install httperf\n\n#### My 'httperf'\n\nSee: [httperf-0.9.1 with individual connection times](http://mervine.net/httperf-0-9-1-with-individual-connection-times).\n\n## Install\n\n    :::shell\n    gem install httperfrb\n\n## Usage - HTTPerf\n\nSome basic usage examples.\n\n    :::ruby\n    require 'httperf'\n    perf = HTTPerf.new( \"server\" =\u003e \"host\", \"port\" =\u003e 8080, \"uri\" =\u003e \"/foo\" )\n    puts perf.run\n\n    perf.update_option(\"uri\", \"/foo/bar\")\n    thread = perf.fork\n    while((thread.alive?))\n      sleep 0.01\n      print \"#\"\n    end\n    unless perf.fork_err.nil?\n      puts perf.fork_out\n    end\n\n### Teeing output\n\nAdded in 0.3.10.\n\n\u003e Adding the `tee` param will print httperf output while running the process.\n\n    :::ruby\n    require 'httperf'\n    perf = HTTPerf.new( \"server\" =\u003e \"host\", \"port\" =\u003e 8080, \"uri\" =\u003e \"/foo\", \"tee\" =\u003e true )\n    output = perf.run\n\n### With HTTPerf::Parser\n\n    :::ruby\n    require 'httperf'\n    perf = HTTPerf.new( \"server\" =\u003e \"host\", \"port\" =\u003e 8080, \"uri\" =\u003e \"/foo\" )\n    puts perf.parse = true\n    puts perf.run\n\n    # or directly\n\n    puts HTTPerf::Parser.parse( HTTPerf.new( \"server\" =\u003e \"host\", \"port\" =\u003e 8080, \"uri\" =\u003e \"/foo\" ).run )\n\n## Useage - HTTPerf::Parser\n\n    :::ruby\n    require 'httperf/parser'\n\n    # read result from a file, for example\n    puts HTTPerf::Parser.parse( File.open(\"httperf.out\", \"r\").read )\n\n    # or verbose output\n    puts HTTPerf::Parser.parse( File.open(\"httperf_verbose.out\", \"r\").read, true )\n\n#### From the command line:\n\nSomething I've been playing around with, it's more of hack really. But it works well for seralizing output to YAML or JSON:\n\n##### To JSON file:\n\n    :::shell\n    httperf --num-conns=10 --verbose | ruby -e 'require \"httperf/parser\"; require \"json\"; puts HTTPerf::Parser.parse(ARGF.read).to_json' \u003e httperf.json\n\n##### To YAML file:\n\n    :::shell\n    httperf --num-conns=10 --verbose | ruby -e 'require \"httperf/parser\"; require \"yaml\"; puts HTTPerf::Parser.parse(ARGF.read).to_yaml' \u003e httperf.yml\n\n#### Parser Keys:\n\n    :::ruby\n    :command\n    :max_connect_burst_length\n    :total_connections\n    :total_requests\n    :total_replies\n    :total_test_duration\n    :connection_rate_per_sec\n    :connection_rate_ms_conn\n    :connection_time_min\n    :connection_time_avg\n    :connection_time_max\n    :connection_time_median\n    :connection_time_stddev\n    :connection_time_connect\n    :connection_length\n    :request_rate_per_sec\n    :request_rate_ms_request\n    :request_size\n    :reply_rate_min\n    :reply_rate_avg\n    :reply_rate_max\n    :reply_rate_stddev\n    :reply_rate_samples\n    :reply_time_response\n    :reply_time_transfer\n    :reply_size_header\n    :reply_size_content\n    :reply_size_footer\n    :reply_size_total\n    :reply_status_1xx\n    :reply_status_2xx\n    :reply_status_3xx\n    :reply_status_4xx\n    :reply_status_5xx\n    :cpu_time_user_sec\n    :cpu_time_system_sec\n    :cpu_time_user_pct\n    :cpu_time_system_pct\n    :cpu_time_total_pct\n    :net_io_kb_sec\n    :net_io_bps\n    :errors_total\n    :errors_client_timeout\n    :errors_socket_timeout\n    :errors_conn_refused\n    :errors_conn_reset\n    :errors_fd_unavail\n    :errors_addr_unavail\n    :errors_ftab_full\n    :errors_other\n\n#### Verbose Percentile Parser Keys:\n\n    :connection_time_75_pct\n    :connection_time_80_pct\n    :connection_time_85_pct\n    :connection_time_90_pct\n    :connection_time_95_pct\n    :connection_time_99_pct\n\n\n#### Accepted Options:\n\n- `\"add-header\"`\n- `\"burst-length\"`\n- `\"client\"`\n- `\"close-with-reset\"`\n- `\"debug\"`\n- `\"failure-status\"`\n- `\"hog\"`\n- `\"http-version\"`\n- `\"max-connections\"`\n- `\"max-piped-calls\"`\n- `\"method\"`\n- `\"no-host-hdr\"`\n- `\"num-calls\"`\n- `\"num-conns\"`\n- `\"period\"`\n- `\"port\"`\n- `\"print-reply\"`\n- `\"print-request\"`\n- `\"rate\"`\n- `\"recv-buffer\"`\n- `\"retry-on-failure\"`\n- `\"send-buffer\"`\n- `\"server\"`\n- `\"server-name\"`\n- `\"session-cookies\"`\n- `\"ssl\"`\n- `\"ssl-ciphers\"`\n- `\"ssl-no-reuse\"`\n- `\"think-timeout\"`\n- `\"timeout\"`\n- `\"uri\"`\n- `\"verbose\"`\n- `\"version\"`\n- `\"wlog\"`\n- `\"wsess\"`\n- `\"wsesslog\"`\n- `\"wset\"`\n","funding_links":[],"categories":["Web server Benchmarks","Webserver Benchmarks"],"sub_categories":["Meetups"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmervine%2Fhttperfrb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmervine%2Fhttperfrb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmervine%2Fhttperfrb/lists"}