State of the art of Public Object Storage Europe - cURL


libcurl is an open source library considered as a swiss knife for various layer 7 communication protocols. By using it, we aim to collect the Time-To-First-Byte (TTFB) and the different timings inherent to a HTTPs connection.

Each provider has been tested by launching isolated HTTPS requests on 512KB objects. Here's an example of output:

{ "configuration": { "chart": { "type": "bar", "polar": false, "zoomType": "", "options3d": {}, "height": 300, "width": null, "margin": null, "inverted": false }, "credits": { "enabled": false }, "title": { "text": "" }, "colorAxis": null, "subtitle": { "text": "" }, "xAxis": { "title": { "text": "", "useHTML": false }, "categories": ["Example"], "lineWidth": 1, "tickInterval": null, "tickWidth": 1, "tickLength": 10, "plotLines": null, "labels": { "enabled": true, "formatter": "" }, "plotBands": null, "visible": true, "floor": null, "ceiling": null, "type": null, "min": null, "gridLineWidth": null, "gridLineColor": null, "minorTickInterval": null, "minorTickWidth": 0, "minTickInterval": null, "startOnTick": true, "endOnTick": null }, "yAxis": { "title": { "text": "In ms - Lower is better", "useHTML": false }, "categories": null, "plotLines": null, "plotBands": null, "lineWidth": null, "tickInterval": null, "tickLength": 10, "floor": null, "ceiling": null, "gridLineInterpolation": null, "gridLineWidth": null, "gridLineColor": null, "min": null, "max": null, "minorTickInterval": null, "minorTickWidth": 0, "startOnTick": true, "endOnTick": null, "minRange": null, "labels": { "enabled": true, "formatter": null } }, "zAxis": { "title": { "text": "In ms - Lower is better" } }, "plotOptions": { "series": { "dataLabels": { "enabled": false, "format": null, "distance": 30, "align": "center", "inside": null, "style": { "fontSize": "11px" } }, "showInLegend": null, "turboThreshold": 1000, "stacking": "normal", "groupPadding": 0.2, "centerInCategory": false } }, "rangeSelector": { "enabled": false }, "legend": { "enabled": true, "align": "center", "verticalAlign": "bottom", "layout": "horizontal", "width": null, "margin": 12, "reversed": true }, "series": [ { "name": "wait_byte", "data": [14.283053333333338] }, { "name": "wait_time", "data": [0.015706666666666737] }, { "name": "ssl_time", "data": [36.18365333333334] }, { "name": "tcp_time", "data": [0.5799333333333335] }, { "name": "dns_time", "data": [4.2351866666666655] } ], "tooltip": { "enabled": true, "useHTML": false, "headerFormat": "", "pointFormat": "<span style=\"color:{series.color}\">{series.name}</span>: <b>{point.y:.2f}</b><br/>", "footerFormat": "", "shared": false, "outside": false, "valueDecimals": null, "split": false } }, "hc_type": "chart", "id": "139682988425056" }
  • DNS: Time taken by client to translate domain name to IP. This value is entirely dependent of the client and and its DNS server. Object Storages aren't involved.
  • TCP: Time taken for TCP/IP handshake. Layer 4 communication linking client and Object Storage's endpoint
  • SSL: Time taken for SSL negociation. Layer 5 protocol encrypting communication between client and Object Storage.
  • Wait: Time taken for HTTP negociation. Generally close to null.
  • Wait bytes: Time before the first data byte is received by client. It represents the time for the Object Storage to retrieve the file and start to send it.