作者sudada (嘰咕嘰咕嘰咕)
看板C_and_CPP
標題[問題] linux下socket可以accept的上限?
時間Mon Jan 23 02:28:38 2012
開發平台(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
→ james732:我記得ulimit也會對使用者控制,用root權限跑跑看 01/23 02:43
→ sudada:我用root沒錯啊QQ 01/23 02:44
→ james732:我有做過同時開上萬個socket,不過忘記怎麼做的...XD 01/23 02:44
推 asoedarren:ulimit是在程式中設定的嗎? 01/23 03:11
→ asoedarren:code貼上來看看 01/23 03:11
推 scwg: sysctl fs.file-max 夠大嗎? 改設定檔不會改到目前設定 01/23 03:56
→ sudada:fs.file-max = 152016 這是目前看的狀態 01/23 11:18
→ sudada:ulimit是我在執行程式前直接在console下命令改的 01/23 11:18