每當我打開套接字通道。如果客戶端接受,則在內部創建1個文件描述符,因此我可以在Linux中創建最多1024個客戶端。
但我想沒有Linux的 增加文件描述符限制,以創造更多的客戶(的ulimit -n 20000) 所以,我怎麼能在Java中創建更多的套接字?如何在不增加文件限制的情況下在Java中打開20000個客戶端?
回答
如果您的會話限制爲1024個文件描述符,那麼您不能使用比單個JVM更多的文件描述符。
但由於是的ulimit每個進程的限制,你也許可以避過它通過啓動更多JVM(即獲得2048個連接開始使用每1024 2級的JVM)。
如果您使用的是UDP,您可以在一個本地套接字上自行復用嗎?您將能夠通過其源地址和端口分隔傳入的數據包。
如果它是TCP你的運氣了,和關閉每個插槽會使事情變得更糟後TIME_WAIT時期。
如果你真的在考慮應對大量的連接,那麼可擴展的方法就是實現一個輕量級的dataserver進程,除了接受和轉發數據到父進程之外,它沒有任何責任。
爲每個數據服務器被飽和您只需生成一個新的實例來給自己另一個1024個連接的方式。如果需要,你甚至可以讓它們存在於單獨的機器上。
爲什麼不能增加ulimit?這似乎是一個人爲的限制。 java代碼(afaik)沒有辦法讓你訪問系統來重置ulimit - 它需要在進程啓動之前設置 - 在啓動腳本或類似的東西中。
JBoss的啓動腳本一個[執行「的ulimit -n $ MAX_FD」他們啓動JBoss之前...
萊恩
極限RLIMIT_NOFILE由手術系統執行,限制了最高FD的進程可以創建。一個fd用於打開的每個文件,管道和套接字。
有硬性和軟性限制。任何進程(如shell或jvm)都可以更改軟值,但只有特權進程(如root用戶運行的shell)才能更改硬值。
a)如果您不允許更改限制在機器上,找人是。 b)如果由於某種原因不能打擾ulimit,我想你可以使用JNA調用底層系統調用:man setrlimit(2)。 (.exec()不會做,因爲它是一個內置的命令)
我們最近調升我們的ulimit,因爲我們的java程序被扔大量的「打開的文件太多」的例外。
現在是65536,我們沒有任何問題。
- 1. 如何在不打開Java的情況下打印Word文檔?
- 2. 如何在不阻塞窗口的情況下打開文件?
- 3. 如何在不使用MATLAB的情況下打開.mat文件?
- 4. 在不增加堆大小的情況下修正GC開銷限制
- 5. 如何在沒有WSDL的情況下創建soap客戶端
- 6. 如何在不打開多個outlook窗口的情況下在Outlook中打開.msg文件
- 7. Asp.net如何讓客戶端在localhost中打開文件?
- 8. Java:在不鎖定的情況下從文件中打開並讀取
- 9. 蟒蛇:打開文件的情況下
- 10. 如何在不傳輸整個文件的情況下限制使用JavaScript(或Java)上傳文件的大小?
- 11. 在不打開實際文件的情況下使用JFileChooser
- 12. 在不知名的情況下打開文件
- 13. 如何在不顯示java中的printdialog的情況下打印
- 14. 如何在不打開GUI的情況下在控制檯中啓動apache tika?
- 15. 在不向客戶端應用公開依賴的情況下使用Spring
- 16. 如何在不爲其創建任何客戶端的情況下調用webservice?
- 17. 如何在沒有打開cmd的情況下打開steam/etc?
- 18. 如何在沒有客戶端請求的情況下在signalR中向客戶端發送消息
- 19. Silverlight/C#web應用程序 - 在不打開的情況下將PDF發送到客戶端的打印機
- 20. 在VSCode中,如何在不打開每個文件來保存的情況下「替換文件」?
- 21. 如何在不傳遞參考的情況下在雲端點公開用戶?
- 22. 如何在不修改jmeter.bat文件的情況下增加JMeter堆大小?
- 23. 如何在沒有OpenFileDialog的情況下在SL 4.0中打開文件?
- 24. 如何在不打開的情況下獲取文件的日期?
- 25. 如何在不打開的情況下創建Excel文件的副本
- 26. 如何在不插入值的情況下增加標識列?
- 27. 如何在不更換原件的情況下版本控制展開文件?
- 28. 如何在不進行輪詢的情況下向客戶端發送消息?
- 29. 如何在不使用ASP.NET的情況下從json客戶端調用.NET AuthenticationService
- 30. 如何在沒有文件選擇器的情況下打開文件
您確定這些文件是必要的嗎?它們包含什麼? – 2009-04-29 11:09:31
@Adam:我認爲他的意思是「文件描述符」,一個打開的套接字將佔用一個fd,儘管沒有涉及物理文件。 – unwind 2009-04-29 11:16:53
@unwind:哦,是的。感謝那! :) – 2009-04-29 11:21:52