[問題] linux下socket可以accept的上限?

看板C_and_CPP作者 (嘰咕嘰咕嘰咕)時間14年前 (2012/01/23 02:28), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux C (Ubuntu 11.10) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) libev 問題(Question): 請問 我的socket只要一accept超過1023 馬上就會return -1 errno=EMFILE 我查了很久的資料 有關於這個file descriptor的上限都是用ulimit打開的 我也去 /etc/security/limits.conf 裡面將soft和 hard都改成65535 再回到ulimit看都是正常的 但是一到1024還是馬上就錯掉... 因為我的API是用epoll 應該也沒有1024這個問題 EMFILE指的是單一一個程式裡面的檔案上限 不知道我有沒有什麼地方漏改的呢 另外我如果一個程式裡面一直用socket開fd是沒有問題的 但是一個socket一直接收連線就會出現錯誤 請指教了 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.150

01/23 02:43, , 1F
我記得ulimit也會對使用者控制,用root權限跑跑看
01/23 02:43, 1F

01/23 02:44, , 2F
我用root沒錯啊QQ
01/23 02:44, 2F

01/23 02:44, , 3F
我有做過同時開上萬個socket,不過忘記怎麼做的...XD
01/23 02:44, 3F

01/23 03:11, , 4F
ulimit是在程式中設定的嗎?
01/23 03:11, 4F

01/23 03:11, , 5F
code貼上來看看
01/23 03:11, 5F

01/23 03:56, , 6F
sysctl fs.file-max 夠大嗎? 改設定檔不會改到目前設定
01/23 03:56, 6F

01/23 11:18, , 7F
fs.file-max = 152016 這是目前看的狀態
01/23 11:18, 7F

01/23 11:18, , 8F
ulimit是我在執行程式前直接在console下命令改的
01/23 11:18, 8F
文章代碼(AID): #1F75LQxX (C_and_CPP)