Подтвердить что ты не робот

FastCGI на порту по сравнению с разъемом

Сегодня я настраивал Django на Cherokee (используя SCGI), и я заметил, что в документах Django говорят, что вы можете использовать либо хост /port или сокет для связи между веб-сервером и Django.

Единственное, что они должны сказать по этому поводу, - это

То, что вы выбираете, является способом предпочтения; TCP-сокет обычно проще из-за проблем с разрешениями.

(Кстати, у меня были проблемы с разрешениями при выполнении этого с помощью сокета, но не с хостом:). )

Я смутно помню, как сокеты работают из моего класса системного программирования, но мне действительно интересно узнать, какая эффективная разница между ними. Каждый раз, когда есть выбор чего-то, есть кто-то с мнением по этому вопросу, поэтому я надеялся получить это. В частности, есть ли разница в производительности?

Или, если это действительно не имеет значения, мне просто нужно некоторое подтверждение, поэтому я могу продолжить свое программирование и игнорировать этот материал sysadmin-y.

4b9b3361

Ответ 1

UNIX-сокет управляется как файл в файловой системе. Вам необходимо правильно установить значения пользователя и группы и разрешения. Он также должен быть в любом выкройке, который вы используете (общая ошибка при использовании postfix + mysql).

Вам не нужно делать это для сокета TCP, если вы привязываетесь к порту > 1000.

Сокет UNIX можно считать немного более быстрым, так как он не имеет сетевого протокола и, таким образом, пропускает сетевой стек, но ограничен одной машиной. TCP с других рук позволяет подключаться к службам, запущенным на разных хостах.

Ответ 2

Я думаю, что реальная разница в том, что если у вас действительно высокая скорость соединения с недолговечными соединениями, вы можете выходить из портов, потому что используемые порты в состоянии TIME_WAIT некоторое время работают с TCP. Не так с именованными сокетами.

Я бы использовал именованный сокет для локальных подключений, если знаю, что он будет использоваться только локальным хостом. Но для этого использования... да, это не имеет большого значения. Неэффективность или иное. Легко изменить позже, если вы передумаете. Просто используйте брандмауэр TCP-порт, если вы используете этот параметр.

И снова, сокет TCP также является сокетом.