npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

wrk-bench

v1.1.0

Published

Uses wrk to conduct a continuous benchmark

Downloads

3

Readme

wrk-bench

wrk-bench is a library to make creating wrk jobs that recur immediately. This is good for having tests that collect stats for a couple seconds, record them, then does it again. This assumes you'll pipe the results into something that makes sense.

usage

Since this is just a light wrapper around wrk the node module, which is just a light wrapper around wrk the command line tool. You'll just pass the options that you'd normally pass to wrk to wrk-bench like so:

var bench = require('wrk-bench')

var job = bench({
	url: 'http://localhost:3000',
	threads: 2,
    connections: 5,
	duration: '10s'
})

job.pipe(process.stdout)

Which might result in output that looks like the following:

{
  "transferPerSec": 355090,
  "requestsPerSec": 228.54,
  "requestsTotal": 2286,
  "durationActual": 10000,
  "transferTotal": 3470000,
  "latencyAvg": 17.62,
  "latencyStdev": 4.29,
  "latencyMax": 73.93,
  "latencyStdevPerc": 98.67,
  "rpsAvg": 115.89,
  "rpsStdev": 15.94,
  "rpsMax": 171,
  "rpsStdevPerc": 79.32,
  "options-threads": 2,
  "options-connections": 5,
  "options-duration": "10s",
  "options-url": "http://localhost:3000"
  "timestamp": 1413854725961
}

Quantities of data are measured in bytes, quantities of time are measure in milliseconds.

Notice how the options is merged into the object. This makes it so you don't have to track each job yourself. Also if you add any other properties to the option argument they will be merged in and if wrk doesn't know about them, they wont be used. This is handy if you want to name jobs or add in any interesting version data or something of that sort.

Also a timestamp of when the test finished is added to the object as well. I am up for debate on this and could also see collecting start/end and reporting them, or maybe not having a timestamp on at all and leaving that up to a user of the API

theoretical changes

  • Possibly take an array of jobs
  • Delay between jobs seems like a good idea but I don't have a use case yet.