Apache a sendfile

Dalibor Straka dast na panelnet.cz
Pátek Červen 1 04:02:55 CEST 2007


On Wed, May 30, 2007 at 09:47:58PM +0200, Jan Kasprzak wrote:
> Martin `MJ' Mares wrote:
> : > Pritom kdyz podobne strace pustim na proftpd, tak tam je videt,
> : > ze proftpd par minut visi v tom sendfile() a za tu dobu odvysila treba
> : > cely ISO image CDcka. Funguje vam nekomu sendfile() v Apache lepe nez
> : > u me?
> : 
> : Apache2 jsem nikdy poradne nezkoumal, ale jen tak od pohledu na ten
> : strace soudim, ze Apache ten socket ma v non-blocking modu, takze se
> : sendfile vrati vzdy po naplneni odchoziho bufferu. Vzhledem k tomu,
> : ze to jsou 190K kusy, nemelo by to byt na zatizeni serveru nijak vyrazne
> : poznat.
> 
> 	Tak furt lepsi 600MB kusy nez 190K kusy, ne?
>
Ja bych tipnul, ze je to zalezitost programatora. proftpd nastavi socket
jako blokujici, udela sendfile() na celou velikost souboru a pocka az to
odtece. Kdezto apache2 pouziva poll() nebo select() a soubor si kouskuje
na buffery 190kB. Nicmene netusim, kde bere hodnotu 190KB :-). Podle me
jsou obe dve metody i na vysokorychlostnich sitich optimalni, pokud
ma poll() rozumny timeout.

-- Dalibor Straka



Další informace o konferenci Linux