筆記 伺服器設計應該注意的地方

2021-06-18 13:06:25 字數 806 閱讀 8025

(1)伺服器在用fork建立子程序後,父程序要關閉accept出來的新socket。因為fork以後,子程序是父程序的乙個複製品,它們都有監聽套接字和連線套接字。如果父程序不關閉連線套接字,當子程序關閉連線字時,這個套接字並不會關閉,因為每個套接字描述符都有乙個「引用計數」,當fork函式返回後,套接字的引用計數變為2,而系統只有在描述符的「引用計數」為0時,才真正關閉該描述符。

(2)子程式退出後,會還回一些狀態資訊給父程序,父程序應該及時捕獲和清理子程序占用的資源。否則子程序終止後將變為殭屍程序,隨著客戶數目增多,殭屍程序也會越來越多,而這些殭屍程序需要消耗掉系統資源,最終將會導致系統資源的消耗殆盡。有兩種方法來防止殭屍程序的產生。一種是父程序接收子程序關閉時傳送的sigchld訊號,然後執行waitpid函式**子程序資源,另一種是呼叫signal函式將sigchld的配置設定為sig_ign,這樣子程序結束時由系統自動**資源,而不會產生殭屍程序。本系統關於伺服器的設計使用了第二種方法。

(3)伺服器在建立socket時,就設定屬性為so_reuseaddr。其目的是伺服器突然停止後,可以保證伺服器能夠立即重啟成功。在預設情況下,如果乙個套介面繫結了某個埠,則該埠將無法再繫結到其他套介面上。在linux系統中,在該套介面正常關閉或程式退出後,在一段時間內該埠將仍保持被繫結的狀態,其他程式(或者重新啟動原程式)無法繫結該埠。為避免出現這種情況,可以通過設定so_reuseaddr屬性來解決。對於該屬性,比較常見的應用場景是伺服器出現故障後停止伺服器並重新啟動。此時,如果不設定該選項,由於剛剛停止的伺服器所持有的tcp連線仍然處在time_wait狀態,在進行繫結操作時將報錯。而通過設定該選項,則可以保證伺服器立即啟動成功。

租用伺服器應該注意的幾點

目前銷量靠前的海外伺服器,除了香港伺服器還有美國伺服器,那麼準備租用美國伺服器的朋友們,如何租用到合適的美國伺服器呢?1 配置上的選擇 選擇美國伺服器還是選擇大陸伺服器,在配置上的選擇注意點都是差不多的。主要還是得依據自己的實際業務來定配置。在配置挑選上,應盡量去詢問專業的idc運營商售前顧問,一般...

地方伺服器託管的注意事項

隨著網際網路的發展,不僅帶動了高新大企業的發展,一些地方小企業家也隨著網際網路的熱浪發展起了線上產品銷售,所以地方伺服器託管市場也在逐步火熱起來,那麼地方伺服器託管有哪些需要注意的事項呢?我們今天一起來聊聊這個話題。地方伺服器託管注意事項 企業只要想託管伺服器,不管企業的大小,都必須先制定適合企業自...

面試應該注意的地方

摘自 size large 面試官是找合適的人,而不是最優秀的人!面試的目的就是希望了解面試者的兩個方面,應聘者是否有足夠的技能,應聘者是否能和現在的團隊融合並完成期望的工作。說實話,面試成功關鍵是看你過去的努力程度和你是個什麼樣的人,技巧的用處很少,因為還有試用期,最終總是會看到你真實的一面,技巧...