Re: Медленная отдача статики

Anatoly Mikhailov anatoly at sonru.com
Mon Nov 4 18:09:57 UTC 2013


On 30 Oct 2013, at 12:08, Maxim Dounin <mdounin at mdounin.ru> wrote:

> Hello!
> 
> On Mon, Oct 28, 2013 at 12:34:33PM -0400, buddha wrote:
> 
>> Привет всем. 
>> Знаю что вопрос уже обсуждался - почитал, попробовал - не выходит.
>> 
>> Есть проблема с медленной отдачей статики. Что это значит:
>> 
>> Отдача файла(js) ~40kb за 300-400ms
>> на drive.ru или ya 40kb за 70-90ms
>> 
>> Т.е. разница в разы. и она ощутима.
>> 
>> ping до сервера ~70ms
>> до drive и ya ~ 20-30ms
>> 
>> отдает Nginx, config:
>> 
>> location / {
>>   sendfile on;
>>   access_log off;
>>   expires 4M;
>> 
>>   root /var/www/static
>> }
>> 
>> сервер находится у хетцнера.
>> 
>> Подскажите как можно приблизить скорость отдачи к drive или ya.
>> Если сервер, диск(хотя iowait 0.01-0.05), то подскажите на что его можно
>> заменить
> 
> Судя по цифрам, то, что у вас получается - это в первую очередь 
> результат большого RTT + работы механизмов Congestion Control 
> протокола TCP.
> 
> Можно пытаться походить в сторону тюнинга initial congestion 
> window size.  Но, строго говоря, много это всё равно не даст - 
> где-то пару round trip'ов можно сэкономить при использовании 
> сейчас усиленно продвигаемого initial cwnd в 10 пакетов (и чем 
> больше ответ - тем меньше разница).  Ну и на всякий случай 
> напомню, что с тюнингом таких вещей следует быть осторожным, т.к.  
> подобные действия отражаются на всех в сети.  Прежде, чем 
> ковыряться - лучше как минимум ознакомиться с теоретической 
> стороной вопроса.

Максим, разве Google не провел исследования, по результатам
которых они подняли icwnd до 10 на своих серверах?

В последних версиях Linux kernel icwnd уже 10 по умолчанию
и может дать обратный эффект только в очень редких случаях
на сегодняшний день.

TCP fast open в kernel 3.6+ следующей шаг, в который Google 
вкладывает силы и деньги. 

> 
> Вообще, IMHO, в первую очередь имеет смысл смотреть за тем, чтобы 
> с клиентами обеспечивались постоянные соединения.  В nginx'е они 
> по умолчанию включены, но лишний раз проверить не помешает.  В 
> частности - посмотреть на директиву keepalive_timeout и убедиться, 
> что там никто не написал 0 в попытке поэкономить соединения.
> 
> -- 
> Maxim Dounin
> http://nginx.org/en/donation.html
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20131104/55df214c/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru