linux select 併發連線上不去

2021-07-01 23:15:55 字數 692 閱讀 5669

一般linux下tcp連線的限制在td_setsize,系統預設為1024,由fd_setsize決定。

1.修改方法:

修改/usr/etc/security/limits.conf檔案,加入

*soft nofile 20000

*hard nofile 20000

然後reboot系統。

伺服器就可以建立連線到20000個了,其連線方法是直接用connect,accept。

注意這裡用select是不可以的,在windows上fd_setsize預設64但是並不影響select的併發數!

2.上面的方法在不用select方法的情況下是不可以的,如果你用select,

那麼仍然只能開啟1024個,這是因為select的數目由fd_setsize決定的。

那麼我們可以改用poll來替代select,poll陣列大小可以根據我們自己的需要來定義,

這樣就解決了這個問題。

也可以重新定義fd_setsize的大小來改變select監視最大併發連線數。

3.linux中的是通過檔案方式來管理系統的,因此系統能承載多少tcp連線和系統檔案打

開數目能力是相關的。

另外在/proc/sys/fs/file-max中定義了,系統最多能夠開啟的檔案數目。

linux select函式用法

select系統呼叫是用來讓我們的程式監視多個檔案控制代碼的狀態變化的。程式會停在select這裡等待,直到被監視的檔案控制代碼有乙個或多個發生了狀態改變。關於檔案控制代碼,其實就是乙個整數,我們最熟悉的控制代碼是0 1 2三個,0是標準輸入,1是標準輸出,2是標準錯誤輸出。0 1 2是整數表示的,...

linux select 系統呼叫

linux系統提供系統呼叫 select,它允許程式掛起,並等待從不止乙個檔案描述符的輸入。它的原理如下 獲得所需要的檔案描述符列表 將此描述符傳給 select select 掛起直到任何乙個檔案描述符有資料到達 select 設定乙個變數中的若干位,用來通知哪乙個檔案描述符已經有輸入的資料。se...

linux select 系統呼叫

select 系統呼叫允許程式同時在多個底層檔案描述符上等待輸入的到達 輸出的完成,或產生錯誤資訊。這意味著終端 程式可以一直阻塞到有事情可做為止。select 函式對資料結構 fd set 進行操作,它是由開啟的檔案描述符構成的集合。有一組定義好的巨集可以用來控制這些集合 include incl...