Inetd или нет inetd ... когда я должен использовать inetd для моей программы сетевого сервера? - PullRequest
3 голосов
/ 24 декабря 2008

Может ли кто-нибудь дать краткий набор реальных соображений, которые повлияют на выбор, использовать ли inetd для управления программой, которая действует как сетевой сервер?

(Если используется inetd, я думаю, что это меняет требования к сетевому коду в программе, поэтому я думаю, что это определенно связано с программированием, а не с общими ИТ) *

Вопрос основан на реализации, которую я видел, которая использует управляющую программу, управляемую inetd, для запуска сетевого прослушивателя, который затем работает вечно и принимает постоянную и большую нагрузку. Это не показалось мне подходящим для профиля использования учебника inetd (по требованию, редко используется, легкий) и заинтересовало меня более общим вопросом.

Ответы [ 4 ]

2 голосов
/ 24 декабря 2008

Подключение к inetd немного облегчит управление вашим сервисом с операционной точки зрения, поскольку inetd позволяет системному администратору контролировать практически все, как происходит сетевое взаимодействие с вашей программой. Однако для этого потребуется внести несколько изменений в код вашей программы. Кроме того, это может быть не так эффективно, как просто заставить вашу программу работать как демон.

РЕДАКТИРОВАТЬ: лично я никогда не использую inetd и всегда предпочитаю записывать процессы сервера как автономные демоны.

2 голосов
/ 24 декабря 2008

Это зависит от схемы использования вашего сервиса. Если время запуска вашего демона невелико, и вы ожидаете, что оно будет использоваться нечасто, тогда inted может подойти. Это уменьшает или даже устраняет необходимость писать какой-либо дополнительный сетевой код.

Если ваш демон более тяжелый или более часто используемый, вам, вероятно, лучше написать его автономно. Вы также можете легко написать скрипт init.d и некоторую конфигурацию conf.d, и администратору не составит труда управлять им. Большинство языков программирования в наши дни имеют простые в использовании библиотеки сокетов, поэтому во многих случаях сетевой код может даже не быть таким сложным.

По своему опыту я обнаружил, что немногие администраторы в наши дни знакомы с inetd. Большинство демонов просто предоставляют свой собственный скрипт инициализации. На самом деле, из нескольких сотен систем, которыми я управляю, я не могу вспомнить ни одной, которая вообще запускает что-либо через inetd. Это стоит рассмотреть.

1 голос
/ 24 декабря 2008

Я думаю, что еще один фактор, который стоит учитывать при принятии решения об использовании inetd, - это сколько памяти в среднем занимает процесс, обрабатывающий запрос? Если он достаточно высокий, то при высокой нагрузке вы рискуете исчерпать память (так как inetd разветвляется). Один и тот же сервер может быть реализован многопоточным способом или методом выборочного опроса, возможно, позволяя увеличить нагрузку / меньше памяти на соединение.

0 голосов
/ 24 декабря 2008

Какую альтернативную стратегию вы рассматриваете?

inetd - это хороший способ обеспечить запуск вашего сервера при загрузке ОС на соответствующем уровне запуска. Даже если вы спроектируете свой сервер так, чтобы у него был какой-то другой механизм управления, inetd все равно может просто обернуть все команды. В конце концов, это всего лишь сценарии оболочки.

...