我對監聽系統調用積壓值有疑問。從聽系統呼叫的手冊頁。監聽系統調用積壓值
如果backlog參數大於/ proc/sys/net/core/somaxconn中的值,則將其自動截斷爲該值;這個文件的默認值是128.
這意味着我的服務器一次只能接受< 128個連接。如果我想接受更多連接> 128?我可以簡單地將值設置爲可能的最大數量,以便我可以訪問更多數量的連接?
我對監聽系統調用積壓值有疑問。從聽系統呼叫的手冊頁。監聽系統調用積壓值
如果backlog參數大於/ proc/sys/net/core/somaxconn中的值,則將其自動截斷爲該值;這個文件的默認值是128.
這意味着我的服務器一次只能接受< 128個連接。如果我想接受更多連接> 128?我可以簡單地將值設置爲可能的最大數量,以便我可以訪問更多數量的連接?
該號碼只是連接隊列的大小,其中新連接等待有人接受它們。一旦您的應用程序調用accept()
,就會從該隊列中刪除等待連接。所以,你絕對可以處理128個以上的同時連接,因爲他們通常只在隊列中花費很短的時間。
看起來很簡單直接。但是將積壓值增加到最大值會增加內核中爲偵聽隊列分配的內存。有沒有什麼叫合理價值,不會增加開銷並提供更好的性能? – codingfreak
呃...儲存東西通常需要記憶。如果你需要更大的積壓量,但不願意花費內存來存儲它......我不知道你能做什麼,我害怕。 – unwind
積壓值不是最大連接數,而是未完成連接的數量,即您不能接受的連接數():ed。
@Greg - 所以積壓值僅指示連接隊列的大小,但不表示要接受的連接數。一旦接受完成,它將從爲其他連接提供空間的隊列中刪除。 – codingfreak
是的,這是正確的。 –