Autor Zpráva
Peet
Profil
Zdravim,

rad bych si obasnil nejake veci na mem nginx serveru. Jedna se o toto nastaveni. Rad bych vedel k cemu presne slouzi, popripade zda je nutne je uvadet nebo zda bych dane hodnoty mel nejprve nejak zjistit.


fastcgi_buffers 8 16k; fastcgi_buffer_size 32k;

a pote jeste toto, a zda to muze zpusobovat, ze se mi nekdy zobrazo blank page a jindy zase ne.

fastcgi_send_timeout 1800;
        fastcgi_read_timeout 1800;
        fastcgi_connect_timeout 1800;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
smitka
Profil
fastcgi_buffer_size je paměť rezervovaná pro dočasné uložení hlaviček HTTP odpovědi než se pošle klientovi. U běžných aplikací stačí defaultní nastavení podle page size daného systému (getconf PAGESIZE - typicky 4k). Do 4kB se většinou bez problému vejdou běžné hlavičky odpovědí, výjimkou mohou být systémy, které nastavují velikánské Cookies, nebo jiné hlavičky - třeba oauth autentifikace, tam je pro funkčnost nutné hodnotu zvednout.

fastcgi_buffers je paměť pro zbytek odpovědi - to co vypadne z PHP-FPM, je to počet bufferů a jejich velikost - do toho by se měla vejít celá odpověď, v příkladu je to 8x16k = 128 kB kódu. Velikost se typicky opět nastavuje na page size systému - většinou 4kB. Pro získání vhodného počtu je dobré udělat si analýzu jak velké odpovědi z PHP typicky jdou a určit si takovou hodnotu, aby se jich tam většina vešla (ideální je si udělat histogram po 4kB). Pokud se výsledek do bufferů nevejde, tak se musí "swapovat" na disk, v logu se to projeví hláškou "an upstream response is buffered to a temporary file". Pár takových hlášek nevadí, pokud se však objevují často, je vhodné počet bufferů zvednout.

Pokud potřebuji 128 kB výstupní buffer, tak mohu použít buď 8 16k (dle ukázky), ale stejného výsledku se dosáhne i 32 4k. Rozhodnout se jak jakou cestu zvolit může pomoci opět histogram. Pokud mám velké množství odpovědí pod 4k, tak nedává smysl nastavovat větší velikost bufferu, protože by se pak často plýtvalo pamětí, ale raději zvednu jejich počet. Pokud odpovědi většinou nepadají pod 16k, tak raději sáhnu po menším počtu a větších bufferů, protože se tím snižuje režije.

Hraní s buffery je už docela jemné ladění výkonu, které se dělá u extrémně vytěžovaných serverů, běžně stačí ponechat výchozí hodnoty.

Nastavení timeoutů na 1800s (30 minut) podle mě nemá žádný smysl - to znamená, že počítám s tím, že návštěvník bude čekat na načtení stránky půl hodiny. Nevidím důvod tam mít více než 20 až 60s.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0