2008-12-24 40 views
3

任何人都可以提供一個簡潔的實際考慮因素集,以便選擇是否使用inetd來管理充當網絡服務器的程序嗎?要inetd或不inetd ...什麼時候應該使用inetd作爲我的網絡服務器程序?

(如果使用的inetd,我認爲它會改變周圍的程序網絡代碼的要求,所以我認爲這是絕對編程有關,而不是一般IT)

的問題是圍繞我已經實現看到使用由inetd管理的控制程序來啓動網絡監聽器,然後該監聽器會永久運行並承擔持續和重負載。它似乎不適合教科書inetd使用情況(按需使用,不常用,輕量級),並讓我對更一般的問題感興趣。

謝謝,

回答

2

這取決於您的服務的使用模式。如果守護進程的啓動時間很短,並且您希望它不經常使用,那麼可能會非常適合。它減少甚至消除了編寫任何附加網絡代碼的需要。

如果您的守護程序更重或更頻繁使用,您可能最好獨立編寫它。您可以輕鬆編寫一個init.d腳本和一些conf.d配置,以便管理員進行管理。現在大多數編程語言都具有易於使用的套接字庫,因此在很多情況下,網絡代碼可能不那麼困難。

我發現在我的經驗中,現在很少有管理員熟悉inetd。大多數守護進程只提供他們自己的init腳本。事實上,在我管理的數百個系統中,我無法想象通過inetd啓動任何內容的單個系統。這是值得考慮的事情。

0

你在考慮什麼替代策略?

inetd是確保服務器在OS以適當的運行級別啓動時啓動的好方法。即使你設計你的服務器有其他的管理機制,inetd仍然可以很簡單地包裝所有的命令。畢竟這只是shell腳本。

+0

好吧 - 另一種策略是直接運行網絡程序我猜,從rc.d腳本開始 – Brabster 2008-12-24 05:58:04

2

掛鉤到inetd將使您的服務從操作的角度來看更容易管理,因爲inetd允許系統管理員實際控制與程序的網絡通信的所有方式。但是,它會要求您對程序進行一些代碼更改。另外,它可能並不像將程序作爲守護進程運行一樣有效。

編輯:我個人從來沒有使用inetd,並總是選擇寫服務器進程作爲獨立的守護進程。

1

我認爲決定使用inetd時需要考慮的另一個因素是處理請求的進程平均消耗多少內存?如果這是相當高的話,那麼在高負載下你可能會用盡內存(因爲inetd分叉)。同一臺服務器可能以多線程或選擇輪詢方式實現,可能允許每個連接的負載更高/內存更少。

相關問題