Skip to content
Walter Dal Mut edited this page Apr 27, 2014 · 7 revisions

Corley Maintenance Bundle

The goal of this bundle is to provide a unified way to lock a down a web site. Mainly this bundles provides two ways to lock the website down, the hard lock and the soft lock. The hard lock uses web server strategies instead the soft lock that runs at the web application layer.

We provide a couple of commands:

app/console corley:maintenance:lock
app/console corley:maintenance:soft-lock

The first lock the website using the web server strategies, instead the second one lock the application using symfony2 events.

The hard lock

The hard lock works at web-server level, that means that the application can be broken during an upgrade or not available at all because all requests are routed to a static html file. A simple load test during the maintenance shows something like this (at 100 concurrency level):

Concurrency Level:      100
Time taken for tests:   11.382 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Non-2xx responses:      100000
Total transferred:      148500000 bytes
HTML transferred:       122000000 bytes
Requests per second:    8785.70 [#/sec] (mean)
Time per request:       11.382 [ms] (mean)
Time per request:       0.114 [ms] (mean, across all concurrent requests)
Transfer rate:          12740.98 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    3   1.9      3       8
Processing:     1    9   4.1      8     156
Waiting:        1    7   2.7      7      79
Total:          1   11   3.8     11     159

Percentage of the requests served within a certain time (ms)
  50%     11
  66%     12
  75%     12
  80%     12
  90%     13
  95%     14
  98%     18
  99%     24
 100%    159 (longest request)

The soft lock

The soft lock runs at the application level, that means that the application must works otherwise the lock can not runs at all. Additionally the soft lock engage the framework and that means during a test something like (at concurrency level 5):

Concurrency Level:      5
Time taken for tests:   57.897 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      4455000 bytes
HTML transferred:       4120000 bytes
Requests per second:    17.27 [#/sec] (mean)
Time per request:       289.487 [ms] (mean)
Time per request:       57.897 [ms] (mean, across all concurrent requests)
Transfer rate:          75.14 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       1
Processing:   213  289  52.0    279     635
Waiting:      199  271  50.1    261     575
Total:        214  289  52.0    279     635

Percentage of the requests served within a certain time (ms)
  50%    279
  66%    301
  75%    313
  80%    322
  90%    354
  95%    389
  98%    434
  99%    473
 100%    635 (longest request)
Clone this wiki locally