sendfile - странное поведение

Igor Sysoev is at rambler-co.ru
Thu Mar 6 12:31:26 MSK 2008


On Thu, Mar 06, 2008 at 12:05:15PM +0300, AleXXX V. NovikoFF wrote:

> Раньше был сервер, Debian 4.0 с ядром 2.6.8-686-smp, одноядерный пентиум
> 2.66 и 2 Gb оперативки, на раздаче были файлы, порядка 300 Гб, nginx все
> это отдавал одновременно на 400-500 клиентов, sendfile был включен, чанк
> для него стоял 128k - все работало стабильно долгое время, wait в топе
> был в среднем 50-60.
> 
> Поставил новый сервер, Ubuntu Server 7.10 с ядром 2.6.22-14-server, Core
> 2 Duo 2.66 и 8 Gb оперативки, те же самые файлы на раздаче, nginx с тем
> же конфигом, клиентов 400-500, sendfile включен - wait 80-90%!!!
> 
> Выключаю sendfile - wait падает до 30%, все так же раздается, скорость
> на интерфейсе такая же, но wait почти в 3 раза меньше! С чем может быть
> связана такая ситуация?
> 
> P.S. когда sendfile был отключен на старом сервере - все уходило в
> жуткий своп и умирало, на новом сервере все спокойно, единственное, что
> смущает - 4 воркера - размер каждого 800-900 mb - это нормально, что так
> много?

Начну с последнего, сейчас воркеры занимают 4G, неудивительно, что на 2G
они уходили в своп.

Что касается нормальности - зависит от размера output_buffers. Что стоит
сейчас ?

По поводу wait. wait - это idle time, когда ни один процесс не хотел
работать, но при этом хотя бы один процесс ждал дисковый i/o. Когда
процессор находится в user, system или interrupt time всё равно могут
процессы, которые ждут диск, но в wait time это не учитывается.
Поскольку новая машина быстрее примерно в 4 раза, то user/system/interrupt
у неё уменьшился.

Если выключить sendfile, то nginx копирует данные к себе, а потом обратно
в ядро - system должно вырасти - wait уменьшиться.

PS. офигеть, на это письмо у меня ушло 15 минут.


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list