Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7726883
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T05:19:19+00:00 2026-06-01T05:19:19+00:00

Im wondering how the performance of th ESI module is nowadays? I’ve read some

  • 0

Im wondering how the performance of th ESI module is nowadays? I’ve read some posts on the web that ESI performance on varnish were actually slower than the real thing.

Say i had a page with over 3500 esi includes, how would this perform? is esi designed for such usage?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T05:19:20+00:00Added an answer on June 1, 2026 at 5:19 am

    We’re using Varnish and ESI to embed sub-documents into JSON documents. Basically a response from our app-server looks like this:

    [
      <esi:include src="/station/best_of_80s" />,
      <esi:include src="/station/herrmerktradio" />,
      <esi:include src="/station/bluesclub" />,
      <esi:include src="/station/jazzloft" />,
      <esi:include src="/station/jahfari" />,
      <esi:include src="/station/maximix" />,
      <esi:include src="/station/ondalatina" />,
      <esi:include src="/station/deepgroove" />,
      <esi:include src="/station/germanyfm" />,
      <esi:include src="/station/alternativeworld" />
    ]
    

    The included resources are complete and valid JSON responses on their own. The complete list of all stations is about 1070. So when the cache is cold and a complete station list is the first request varnish issues 1000 requests on our backend. When the cache is hot ab looks like this:

    $ ab -c 100 -n 1000 http://127.0.0.1/stations
    [...]
    
    Document Path:          /stations
    Document Length:        2207910 bytes
    
    Concurrency Level:      100
    Time taken for tests:   10.075 seconds
    Complete requests:      1000
    Failed requests:        0
    Write errors:           0
    Total transferred:      2208412000 bytes
    HTML transferred:       2207910000 bytes
    Requests per second:    99.26 [#/sec] (mean)
    Time per request:       1007.470 [ms] (mean)
    Time per request:       10.075 [ms] (mean, across all concurrent requests)
    Transfer rate:          214066.18 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        1   11   7.3      9      37
    Processing:   466  971  97.4    951    1226
    Waiting:        0   20  16.6     12      86
    Total:        471  982  98.0    960    1230
    
    Percentage of the requests served within a certain time (ms)
      50%    960
      66%    985
      75%    986
      80%    988
      90%   1141
      95%   1163
      98%   1221
      99%   1229
     100%   1230 (longest request)
    $ 
    

    100 rec/sec doesn’t look that good but consider the size of the document. 214066Kbytes/sec oversaturates a 1Gbit interface well.

    A single request with warm cache ab (ab -c 1 -n 1 …) shows 83ms/req.

    The backend itself is redis based. We’re measuring a mean response time of 0.9ms [sic] in NewRelic. After restarting Varnish the first request with a cold cache (ab -c 1 -n 1 …) shows 3158ms/rec. This means it takes Varnish and our backend about 3ms per ESI include when generating the response. This is a standard core i7 pizza box with 8 cores. I measured this while being under full load. We’re serving about 150mio req/month this way with a hitrate of 0.9. These numbers suggest indeed that the ESI-includes are resolved in serial.

    What you have to consider when designing a system like this is 1) that your backend is able to take the load after a Varnish restart when the cache is cold and 2) that usually your resources don’t expire all at once. In case of our stations they expire every full hour but we’re adding a random value of up to 120 seconds to the expiration header.

    Hope that helps.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I was thinking about performance regarding .click() vs .live(click) and that left me wondering
m using pelops to talk to cassandra and m wondering with its slower performance
I have read Android's Developers Guide on Designing for Performance. I am just wondering
I am wondering about general performance of LINQ. I admit, that it comes handy
I was wondering if anyone has done some performance testing with two different approaches
Just wondering about the performance impact of copying very large php variables. For example
I am wondering about the performance of this index: I have an Invalid varchar(1)
I was wondering about the performance difference between these two scenarios and what could
I've been wondering about the performance improvements touted in Java SE 6 - is
I have been wondering about the performance of regular expression implementations lately, and have

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.