Što učiniti

kada klijent poželi servirati 110 milijuna geotargetiranih bannera s VPS-a?

Luka Mužinić

@lmuzinic

@trikoder

@netakademija

wogibtswas.at

Klijent:

"znate one widgete što ste davno napravili,
mi bi to htjeli pustiti u produkciju"

...

"pa nemamo još točne brojke, ali otprilike
110 milijuna prikaza mjesečno"

...

"halo, HALO?"

Developer:

...

"odlično, bit će mi drago vidjeti ih u živo.
Budući da nikada nismo pričali o brojkama, o kojem broju prikaza govorimo?"

...

"to su poprilično impresivne brojke,
predlažem da prvo isprobamo da li je moguće bez ulaganja u dodatni hardware"

...

Što je to uopće widget?

Stress test 1/2

Idemo vidjeti koliko requestova u sekundi trenutno rješenje može podnjeti? Cilj: ~45 req/s


7


#fail

Cache 101

optimizacija koda

8

keširaj DB upite

9

keširaj Sphinx upite

12


ponekada je pametno da requestovi uopće ne dođu do aplikacije
- Tomicius Rasimus

Nginx to the rescue

http://nginx.org/en/docs/http/ngx_http_memcached_module.html

http://wiki.nginx.org/HttpRedis

Primjer konfiguracije 1/2


# widget nginx + memcached
location /widget/ {
    set $memcached_key $geoip_city$uri;

    if ($arg_company != '') {
        set $memcached_key $memcached_key?company=$arg_company
    }

    default_type text/html;
    memcached_pass 127.0.0.1:11211;
    error_page 404 = @fallback;
    expires +7200;
}

Primjer konfiguracije 2/2


location @fallback {
    proxy_pass http://apache.application.server:8081;
    proxy_buffering off;
    proxy_redirect off;
}

Stress test 2/2

Idemo vidjeti koliko requestova u sekundi novo rješenje može podnjeti? Cilj: ~45 req/s


~1500 req/s


so much #win

Razine cachea

4. po IP adresi (cca. jako puno)

3. po gradu (cca. 1145 kom)

2. po regijama (9 kom)

1. cijela Austrija (1 kom)

Konačno rješenje

VPS, 4 core, 8 GB

load zanemariv

36m req/mj

u peakovima 50-60 req/s

Alternative

Varnish, raznorazni web acceleratori, podrška za ESI...

Kako motivirati klijenta?

želim ljude koji dolaze s rješenjima, a ne problemima

iskoristite trokut cjenkanja

novac, vrijeme, opseg posla

kvaliteta

Niste sami!

komunicirajte s kolegama, sistem administratorima, hosterima, klijentima, šefovima

Don't bullshit!

Errors, boo-boos, tips and tricks

cache stampedo

zagrijavanje cachea

održati memcache na životu

GA analytics

Hvala!

Pitanja?

Nešto za ponjeti kući

jeste li ikada vidjeli u teretani tipa koji vježba samo bicepse?

biti najbolji developer nije dovoljno

ne budite taj tip!