Re: Из за чего медленно работает nginx?
Валентин Бартенев
vbart at nginx.com
Sun Dec 9 15:40:27 UTC 2012
On Sunday 09 December 2012 01:58:15 Renat wrote:
> Попробовал полностью снести ArchLinux, и постановить его снова.
> Сразу же обновился:
> pacman -Syu
> После сделал рестарт и поставил nginx
> pacman -Sy nginx
>
> К сожалению проблема не исчезла, все так же как и было ранее.
Проблема может быть и в самом пакете, что идет к вашему дистрибутиву
ArchLinux ARM. Неизвестно как и где он был собран.
А как вы собирали пакет с debug-ом? Nginx нужно собирать непосредственно на
самом устройстве, нельзя собирать на другой системе и переносить.
Скачайте исходники nginx c http://nginx.org/en/download.html, распакуйте и
запустите ./configure конкретно на той системе, на которой устанавливаете, и
покажите то, что было выведено на консоль.
Nginx должен работать с сокетами в неблокирующемся режиме. Он умеет
устанавливать этот режим тремя способами. Конкретный способ установки, который
поддерживает система определяется на этапе конфигурации. Соответственно если
конфигурация была выполнена на другой системе, а потом nginx был перенесен на
систему, для которой используется иной способ - получим проблему как у вас.
Во время компиляции в исполняемый код в бинарном файле прописываются конкретные
числовые константы, имеющие определенное значение на данной системе. И если
nginx был перенесен на систему, где эти константы отличаются, то соответствующие
системные вызовы в лучшем случае просто не будут работать и получим проблему как
у вас.
Более того, поскольку эти константы берутся не из самого ядра, а из заголовочных
файлов системных библиотек, и если они (библиотеки в вашей системе) не
соответствуют реальному положению дел в ядре, то получим ситуацию как у вас.
И ещё, проверка наличия конкретного системного вызова не гарантирует его
работоспобность, и если в ядре на вашей системе что-то сломано, и сокеты, даже
не смотря на правильную установку флага, всё равно продолжают работать в
блокирующемся режиме - опять получим ситуацию как у вас.
> Сегодня на форуме заметил тему от maxspb85 - Медленно отдаются файлы от
> 128KB, до 128KB - без проблем. (http://forum.nginx.org/read.php?21,233728)
>
> У меня точно так же, маленькие картинки, маленькие странички так же где-то
> до ~128кб, открываются очень быстро. Если же картинка или страница больше
> начинается непонятное торможение.
Эта тема к вашей не имеет никакого отношения. Размер файла в вашем случае имеет
весьма косвенное влияние, у вас просто оба воркера работают в блокирующимся
режиме, т.е. в принципе ваш nginx не способен обрабатывать более двух соединений
одновременно (и работает подобно Апачу с лимитом в два процесса), поэтому
ситуация и улучшается, если вы выключаете keepalive, в этом случае просто
соединения быстро закрываются и это позволяет отрыть новые два, но проблема
остается.
У вас определенно что-то с системой. И если вы хотите все-таки разобраться в чем
именно, то необходимо предоставить информацию, о которой я вас прошу.
Покажите вывод ./configure для nginx на этой системе, и убедитесь, что ядро не
внесено в IgnorePkg.
--
Валентин Бартенев
http://nginx.com/support.html
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru