Skip to content

perfcached 0.5.7.1

Choose a tag to compare

@Lt-Flash Lt-Flash released this 11 Oct 13:01
· 1 commit to master since this release

perfcached - found fast, kept safe

A multithreaded, self-clustering cache for Linux, with its own encrypted protocols and a Redis-compatible door. New here? Start with the README.

Superseded by 0.6.0. This page was added afterwards for the record: no packages are attached - install the latest release. The source archives below are this tag's tree.

This page covers everything since 0.5.6.6: 0.5.7 and 0.5.7.1, which replaced it the same day. The ChangeLog has both.

A rolling restart. From 0.4.5, 0.5.7.1 joins a fleet one node at a time; use SET IFEQ/IFNE and DELEX once every node runs 0.5.0 or later.

A rolling restart waits for the witness a reconcile needs

  • A node does not call itself safe to restart while it is the last live witness of a peer's reconcile: stats.cluster.restart.waits_for names the peers. (0.5.7 waited while any peer reconciled; 0.5.7.1 waits only where its restart would leave the reconcile without a witness.)
  • A reconcile left with no witness at all - every peer restarted after the node went down - says so once, after 30 seconds, with the remedy, and counts the time in stats.cluster.reconcile_no_witness_s. A rolling restart that went on regardless used to leave the first node's reconcile waiting for good.
  • The status page's header says when a reconcile is in trouble: red "reconcile has no witness - restart this node", amber "do not restart: node N needs it to finish its reconcile". /members carries each member's reconciling and sole_witness.

The memory guard and huge pages

  • The guard no longer counts a huge-page arena twice. On a 2 GB node with arena_mb = 1024 on a 512-page pool it refused every new client once the arena had given memory back. Boot says when a pool is outside the limit; /stats clients.memory.hugetlb_pool.

Read-through probes without a fetch

  • EXISTS, TTL, PTTL and TYPE of a key the collection does not hold answer from one round trip of TYPE and PTTL, and a hash or JSON document is remembered as present for the next ones - they used to fetch and store the whole document. /stats upstream.fill_present, present_hits.

Connect storms

  • A worker turn runs at most 8 Noise handshakes and parks the rest, and accepts at most 64 connections: at ~6,000 encrypted connects a second, an established client's p99 went from 92-107 ms to 33-37 ms. /stats clients.handshakes.