Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Apr 08, 2012

  1. Grzegorz Nosek

    Merge pull request #8 from mikegagnon/master

    fixed off-by-one bug in the calculation of shm_name->len
    authored

Apr 07, 2012

  1. Michael N. Gagnon

    Fixed off-by-one bug in the calculation of shm_name->len

    authored

Dec 06, 2011

  1. Grzegorz Nosek

    Merge pull request #4 from pkwarren/issue3

    Fix building against nginx without the --with-debug option specified.
    authored
  2. Fix building against nginx without the --with-debug option specified.

    authored

Nov 11, 2011

  1. Grzegorz Nosek

    Merge pull request #2 from qualtrics/master

    Fixed a bug ngx_http_upstream_fair_sched_score function.
    authored

Oct 27, 2011

  1. Fixed a bug ngx_http_upstream_fair_sched_score function.

    In SCHED_SCORE(nreq,delta) (((nreq) << SCHED_COUNTER_BITS) | (~(delta))) the ~(delta) would dominate the "bitwise or", making the calculated score ignore the number of requests the peer is currently processing.
    
    The fix is to perform a bitwise mask on ~(delta) so it only affect the lower 20bits.
    SCHED_SCORE(nreq,delta) (((nreq) << SCHED_COUNTER_BITS) | (~(delta) & SCHED_COUNTER_MAX))
    authored

Sep 23, 2009

  1. Grzegorz Nosek

    Fix best_sched_score initialisation on 64-bit architectures

    Thanks to Victor Lavrenko for reporting, analysing and providing
    a patch.
    authored

Oct 12, 2008

  1. Grzegorz Nosek

    Silly logic bug in idle/no_rr mode checking

    Yay for De Morgan's laws.
    authored

Oct 05, 2008

  1. Grzegorz Nosek

    upstream_fair has a home page! Update README

    authored

Sep 22, 2008

  1. Grzegorz Nosek

    Status handler improvements and fixes

    authored

Sep 21, 2008

  1. Grzegorz Nosek

    Replace per-worker refcount with a concurrent request counter

    authored
  2. Grzegorz Nosek

    Keep our own generation counter instead of relying on ngx_cycle

    authored
  3. Grzegorz Nosek

    Don't store pointers inside the shm segment at all

    (an exceptional use-case is the status handler but it takes care
    to do things safely)
    authored
  4. Grzegorz Nosek

    Use ngx_cycle instead of various tricks to store the current cycle so…

    …mewhere
    authored
  5. Grzegorz Nosek

    Fix (another) crash in status display after reload

    authored
  6. Grzegorz Nosek

    Debug message tweaks

    authored

Sep 20, 2008

  1. Grzegorz Nosek

    weight_mode=(idle|peak) parameter support

    Weight mode 'idle' means that a backend is considered idle when
    servicing less than 'weight' requests. This has special meaning
    when running in no_rr mode. The backends are chosen from the
    following groups with descending priority:
     - backends with 1 <= nreq <= weight (by descending nreq)
     - totally idle backends
     - all other (busy) backends
    
    This mode (idle+no_rr) is particularly suited to small setups
    with backends started on demand. It requires care in bigger
    installations, as it may overload a range of backends without ever
    using others.
    
    Weight mode 'peak' means that no backend may serve more than 'weight'
    requests at once. Once this limit is reached, nginx starts to return
    502 errors. This is useful when you want to limit the load on your
    backends at the price of errors sent to the client (although this
    might be an advantage in e.g. tiered load balancer setups).
    
    So the distinct modes of upstream_fair operation are:
    
     * default
     * no_rr
     * no_rr weight_mode=idle
     * weight_mode=peak
    
    All other combinations are more or less pointless, at least for now.
    authored
  2. Grzegorz Nosek

    Replace atomic ops with normal ones (except the spinlock, of course)

    authored
  3. Grzegorz Nosek

    Fix status report for multiple fair upstreams

    authored

Sep 18, 2008

  1. Grzegorz Nosek

    Use per-upstream spinlock to protect access to shared memory

    authored

Sep 16, 2008

  1. Grzegorz Nosek

    Fix crash in status handler if called right after reload

    authored
  2. Grzegorz Nosek

    Use monotonic request counter instead of time data, track total numbe…

    …r of requests per upstream and per backend
    authored
  3. Grzegorz Nosek

    The `fair' directive now takes parameters.

    Currently the only parameter is `no-rr' which disables round-robin
    behaviour, i.e. if you only need X backends to keep up with your peak
    load, backends X+1 should never receive any requests.
    
    Note that this does make the load balancer unfair as requests are
    definitely not distributed evenly.
    authored

Jun 29, 2008

  1. Grzegorz Nosek

    --with-extended-status support in upstream_fair

    The data returned is more for debugging purposes than real production
    monitoring, so this is still proof-of-concept stage.
    authored
  2. Grzegorz Nosek

    Show upstream name in gdb show_fair_peers command

    authored

Jun 26, 2008

  1. Grzegorz Nosek

    Fix compile error on some platforms

    Reported by Jeff Berg
    authored

Jun 18, 2008

  1. Grzegorz Nosek

    Update gdb macros

    authored
  2. Grzegorz Nosek

    Move ->fails and ->current_weight to shm, remove fp->shared

    authored
  3. Grzegorz Nosek

    Update gdb macros to reflect latest changes

    authored
  4. Grzegorz Nosek

    Incorporate fair_rr_peers into rr_peers structure

    authored
  5. Grzegorz Nosek

    Mostly mechanical conversion to no longer use round_robin's data stru…

    …ctures
    authored
  6. Grzegorz Nosek

    Copy the last required bits from rr to upstream_fair

    upstream_fair is now completely independent from the round robin module
    (except of course of lots of copy-pasted code).
    authored

Jun 15, 2008

  1. Grzegorz Nosek

    Add a vim modeline to match nginx tab style

    authored
  2. Grzegorz Nosek

    Ensure proper nreq tracking

    authored

Jun 14, 2008

  1. Grzegorz Nosek

    Better tries and weight tracking

    authored
Something went wrong with that request. Please try again.