Clojure News Feed Performance Testing

Embed Size (px)

Citation preview

Clojure Performance

Measuring throughputand latencyOf a news feedWeb serviceWritten in Clojure

Features

Participant Profiles

Social Graph

Social Broadcast

Inbound Activity

Outbound Activity

Keyword Search

Components

Postgresql

Cassandra

Solr

Kafka

Redis

Jetty

Source Code

https://github.com/gengstrand/clojure-news-feed

AWS Deployment

Ubuntu Server 12.04.3 LTS 64 bit

Servers (no provisioned IOPs)m1.medium (2 ECUs, 1 vCPUs, 3.7 GiB memory, 1 x 410 GiB Storage Capacity)

Database (RDS)db.m1.medium

Client Load Machinem1.large (4 ECUs, 2 vCPUs, 7.5 GiB memory, 2 x 420 GiB Storage Capacity)

Throughput

Throughput

100 threads

Connection pool max size: 50

5 < Social Broadcast < 50

10 posts per user

10% searches

55 posts per second

Latency Overall

Poor at the beginning cold cache

Really good 15 minutes in

Bad spike near the end of the first hour

Steady performance in the second hour

Postgresql Latency

Cassandra Latency

Solr Latency

Web Service Latency

Summary

Cloud Spike

Postgresql latency similar to Cassandra

Solr indexing twice as slow

Between 50 and 70 requests per second

Clojure just as fast as Java

Jetty performed well

Thanks

Glenn Engstrand

Click to edit the title text format

Click to edit the title text format

Click to edit the title text format

Click to edit the title text format