CARVIEW |
Select Language
HTTP/2 302
server: nginx
date: Tue, 02 Sep 2025 19:17:59 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20090425121152
location: https://web.archive.org/web/20090425121152/https://github.com/igrigorik/em-proxy/tree
server-timing: captures_list;dur=1.259394, exclusion.robots;dur=0.041083, exclusion.robots.policy;dur=0.020072, esindex;dur=0.024188, cdx.remote;dur=34.670349, LoadShardBlock;dur=235.459413, PetaboxLoader3.datanode;dur=109.623797, PetaboxLoader3.resolve;dur=80.485150
x-app-server: wwwb-app210
x-ts: 302
x-tr: 346
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: wb-p-SERVER=wwwb-app210; path=/
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 301
server: nginx
date: Tue, 02 Sep 2025 19:18:00 GMT
content-type: text/html; charset=utf-8
content-length: 114
x-archive-orig-server: nginx/0.6.31
x-archive-orig-date: Sat, 25 Apr 2009 12:11:51 GMT
x-archive-orig-connection: close
x-archive-orig-status: 301 Moved Permanently
location: https://web.archive.org/web/20090425121152/https://github.com/igrigorik/em-proxy/tree/master
x-archive-orig-x-runtime: 23ms
x-archive-orig-cache-control: no-cache
x-archive-orig-content-length: 114
cache-control: max-age=1800
memento-datetime: Sat, 25 Apr 2009 12:11:52 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Sat, 25 Apr 2009 12:11:52 GMT", ; rel="memento"; datetime="Sat, 25 Apr 2009 12:11:52 GMT", ; rel="next memento"; datetime="Sat, 25 Apr 2009 17:01:37 GMT", ; rel="last memento"; datetime="Sat, 31 Oct 2009 04:00:10 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 52_9_20090425115325_crawl102-c/52_9_20090425121150_crawl101.arc.gz
server-timing: captures_list;dur=0.856429, exclusion.robots;dur=0.030044, exclusion.robots.policy;dur=0.012014, esindex;dur=0.020377, cdx.remote;dur=34.956858, LoadShardBlock;dur=471.655630, PetaboxLoader3.resolve;dur=456.794031, PetaboxLoader3.datanode;dur=242.567655, load_resource;dur=331.380043
x-app-server: wwwb-app210
x-ts: 301
x-tr: 878
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 302
server: nginx
date: Tue, 02 Sep 2025 19:18:01 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20090425170137
location: https://web.archive.org/web/20090425170137/https://github.com/igrigorik/em-proxy/tree/master
server-timing: captures_list;dur=0.536516, exclusion.robots;dur=0.019915, exclusion.robots.policy;dur=0.008959, esindex;dur=0.011671, cdx.remote;dur=45.146968, LoadShardBlock;dur=317.409229, PetaboxLoader3.datanode;dur=202.149667, PetaboxLoader3.resolve;dur=80.688026
x-app-server: wwwb-app210
x-ts: 302
x-tr: 396
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 200
server: nginx
date: Tue, 02 Sep 2025 19:18:02 GMT
content-type: text/html; charset=utf-8
x-archive-orig-server: nginx/0.6.26
x-archive-orig-date: Sat, 25 Apr 2009 17:01:37 GMT
x-archive-orig-connection: close
x-archive-orig-status: 200 OK
x-archive-orig-x-runtime: 200ms
x-archive-orig-etag: "f83ce954a5c6e94a7e994e2b2ecae474"
x-archive-orig-cache-control: private, max-age=0, must-revalidate
x-archive-orig-content-length: 17419
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: utf-8
memento-datetime: Sat, 25 Apr 2009 17:01:37 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Sat, 25 Apr 2009 17:01:37 GMT", ; rel="memento"; datetime="Sat, 25 Apr 2009 17:01:37 GMT", ; rel="next memento"; datetime="Mon, 11 May 2009 03:29:28 GMT", ; rel="last memento"; datetime="Fri, 26 Aug 2016 19:37:48 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 52_9_20090425165108_crawl102-c/52_9_20090425170122_crawl101.arc.gz
server-timing: captures_list;dur=0.583600, exclusion.robots;dur=0.020064, exclusion.robots.policy;dur=0.009213, esindex;dur=0.014581, cdx.remote;dur=44.625409, LoadShardBlock;dur=143.549535, PetaboxLoader3.datanode;dur=194.230128, load_resource;dur=256.699987, PetaboxLoader3.resolve;dur=111.337554
x-app-server: wwwb-app210
x-ts: 200
x-tr: 504
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
content-encoding: gzip
igrigorik's em-proxy at master - GitHub
This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (

This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (

Description: | EventMachine proxies for performance, monitoring and scale |
Homepage: | https://www.igvita.com/ |
Clone URL: |
git://github.com/igrigorik/em-proxy.git
Give this clone URL to anyone.
git clone git://github.com/igrigorik/em-proxy.git
|
em-proxy /
name | age | message | |
---|---|---|---|
![]() |
README.rdoc | Thu Apr 16 17:30:24 -0700 2009 | doc [igrigorik] |
![]() |
demo/ | Thu Apr 16 17:30:24 -0700 2009 | doc [igrigorik] |
![]() |
lib/ | Wed Apr 15 22:50:18 -0700 2009 | fix + working http duplex [igrigorik] |
![]() |
server.rb | Thu Apr 16 17:30:24 -0700 2009 | doc [igrigorik] |
EM-Proxy
EventMachine HTTP Duplex Proxy: splits any incoming request into two parallel connections to two hosts.
- One of the connections is marked as production: response is forwarded to client
- One of the connections is marked as benchmark: response is buffered by the proxy
- Once both connections are finished, a ‘post processor’ is executed
- Response time + response body is compared and analyzed
Why?
Because sometimes you want to benchmark your new code against the production environment, and this pattern makes it easy to do so! Put up a proxy, customize it, and analyze whatever you want. The client won’t notice a thing.
Example
> ruby server.rb -c demo/duplex_http.yml > ruby demo/appserver.rb 9001 > ruby demo/appserver.rb 9002 > curl localhost:9000
This feature is coming soon. Sit tight!