<?xml version="1.0" encoding="UTF-8"?>
 <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://pinboard.in">
    <title>Pinboard (jm)</title>
    <link>https://pinboard.in/u:jm/public/</link>
    <description>recent bookmarks from jm</description>
    <items>
      <rdf:Seq>	<rdf:li rdf:resource="https://blog.cloudflare.com/how-to-receive-a-million-packets/"/>
	<rdf:li rdf:resource="http://vaurien.readthedocs.org/en/1.8/index.html"/>
	<rdf:li rdf:resource="https://github.com/amscanne/huptime"/>
	<rdf:li rdf:resource="http://aws.amazon.com/articles/3604"/>
	<rdf:li rdf:resource="http://blog.netherlabs.nl/articles/2009/01/18/the-ultimate-so_linger-page-or-why-is-my-tcp-not-reliable"/>
	<rdf:li rdf:resource="http://www.cyberciti.biz/files/ss.html"/>
      </rdf:Seq>
    </items>
  </channel><item rdf:about="https://blog.cloudflare.com/how-to-receive-a-million-packets/">
    <title>How to receive a million packets per second on Linux</title>
    <dc:date>2015-06-19T22:52:50+00:00</dc:date>
    <link>https://blog.cloudflare.com/how-to-receive-a-million-packets/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>
To sum up, if you want a perfect performance you need to:
Ensure traffic is distributed evenly across many RX queues and SO_REUSEPORT processes. In practice, the load usually is well distributed as long as there are a large number of connections (or flows).
You need to have enough spare CPU capacity to actually pick up the packets from the kernel.
To make the things harder, both RX queues and receiver processes should be on a single NUMA node.
</blockquote>]]></description>
<dc:subject>linux networking performance cloudflare packets numa so_reuseport sockets udp</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:7c3b21a94945/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:networking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cloudflare"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:numa"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:so_reuseport"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sockets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:udp"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://vaurien.readthedocs.org/en/1.8/index.html">
    <title>Vaurien, the Chaos TCP Proxy — Vaurien 1.8 documentation</title>
    <dc:date>2015-02-13T11:10:44+00:00</dc:date>
    <link>http://vaurien.readthedocs.org/en/1.8/index.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>Vaurien is basically a Chaos Monkey for your TCP connections. Vaurien acts as a proxy between your application and any backend. You can use it in your functional tests or even on a real deployment through the command-line.

Vaurien is a TCP proxy that simply reads data sent to it and pass it to a backend, and vice-versa. It has built-in protocols: TCP, HTTP, Redis & Memcache. The TCP protocol is the default one and just sucks data on both sides and pass it along.

Having higher-level protocols is mandatory in some cases, when Vaurien needs to read a specific amount of data in the sockets, or when you need to be aware of the kind of response you’re waiting for, and so on.

Vaurien also has behaviors. A behavior is a class that’s going to be invoked everytime Vaurien proxies a request. That’s how you can impact the behavior of the proxy. For instance, adding a delay or degrading the response can be implemented in a behavior.

Both protocols and behaviors are plugins, allowing you to extend Vaurien by adding new ones.

Last (but not least), Vaurien provides a couple of APIs you can use to change the behavior of the proxy live. That’s handy when you are doing functional tests against your server: you can for instance start to add big delays and see how your web application reacts.</blockquote>

]]></description>
<dc:subject>proxy tcp vaurien chaos-monkey testing functional-testing failures sockets redis memcache http</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:c2b6d44f05b0/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:proxy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tcp"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:vaurien"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:chaos-monkey"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:functional-testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:failures"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sockets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:redis"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:memcache"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:http"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/amscanne/huptime">
    <title>huptime</title>
    <dc:date>2015-01-25T23:50:05+00:00</dc:date>
    <link>https://github.com/amscanne/huptime</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Nice trick -- wrap servers with a libc wrapper to intercept bind(2) and accept(2) calls, so that transparent restarts becode possible]]></description>
<dc:subject>linux ops servers uptime restarting libc bind accept sockets</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:8dc351b013f1/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:servers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:uptime"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:restarting"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:libc"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bind"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:accept"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sockets"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://aws.amazon.com/articles/3604">
    <title>AWS SDK for Java Client Configuration</title>
    <dc:date>2014-06-17T11:19:59+00:00</dc:date>
    <link>http://aws.amazon.com/articles/3604</link>
    <dc:creator>jm</dc:creator><description><![CDATA[turns out the AWS SDK has lots of tuning knobs: region selection, socket buffer sizes, and debug logging (including wire logging).]]></description>
<dc:subject>aws sdk java logging ec2 s3 dynamodb sockets tuning</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:6e67b33f2691/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sdk"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:logging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ec2"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:s3"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dynamodb"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sockets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tuning"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://blog.netherlabs.nl/articles/2009/01/18/the-ultimate-so_linger-page-or-why-is-my-tcp-not-reliable">
    <title>The ultimate SO_LINGER page, or: why is my tcp not reliable</title>
    <dc:date>2013-08-24T20:33:19+00:00</dc:date>
    <link>http://blog.netherlabs.nl/articles/2009/01/18/the-ultimate-so_linger-page-or-why-is-my-tcp-not-reliable</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote> If we look at the HTTP protocol, there data is usually sent with length information included, either at the beginning of an HTTP response, or in the course of transmitting information (so called ‘chunked’ mode). And they do this for a reason. Only in this way can the receiving end be sure it received all information that it was sent. Using the shutdown() technique above really only tells us that the remote closed the connection. It does not actually guarantee that all data was received correctly by program B. The best advice is to send length information, and to have the remote program actively acknowledge that all data was received.</blockquote>

]]></description>
<dc:subject>SO_LINGER sockets tcp ip networking linux protocols shutdown FIN RST</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:b6db924cd294/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:SO_LINGER"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sockets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tcp"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ip"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:networking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:protocols"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:shutdown"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:FIN"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:RST"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.cyberciti.biz/files/ss.html">
    <title>Linux SS Utility To Investigate Sockets / Network Connections</title>
    <dc:date>2011-10-26T12:16:10+00:00</dc:date>
    <link>http://www.cyberciti.biz/files/ss.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA['When amount of sockets is enough large, netstat or even plain cat /proc/net/tcp/ cause nothing but pains and curses. In linux-2.4 the desease [sic] became worse: even if amount of sockets is small reading /proc/net/tcp/ is slow enough.  This utility presents a new approach, which is supposed to scale well.'  via scanlan]]></description>
<dc:subject>via:scanlan ss linux sockets networking tools cli</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:de5d4f7fcd68/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:scanlan"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ss"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sockets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:networking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tools"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cli"/>
</rdf:Bag></taxo:topics>
</item>
</rdf:RDF>