我試圖建立一個套接字服務器在PHP中,但發現,因爲缺乏多線程能力在PHP中,如果服務器加載連接(可以說,即使是少量的300連接),服務器將會非常慢。Java套接字服務器保持活着執行
我已經切換到java,並構建了一個多線程套接字服務器,並試圖在10秒內用100個連接重載它,我必須說它勇敢地承擔了..我自己的電腦(這使得過載)成爲在這個過程中真正的緩慢,但服務器看起來像他沒事。
因爲我建立一個服務器應該同時運行大量的連接,我試圖使高效率,而不是讓任何鬼連接打開。
那裏因爲我正在執行「Keep Alive」方法,我的問題如下: 如果我在服務器中打開了600個打開的連接,並且顯然需要服務器在所有線程之間運行以檢查keep活着,甚至是從客戶那裏得到保持活着的消息 - 應該檢查是否發送了保持活動消息的適當時間。 我想過2分鐘左右 - 所以服務器要忙,另一方面我不希望我的客戶經常發送數據。 有什麼建議嗎?
你對每個插槽的每個線程使用阻塞套接字嗎?我建議您切換到java.nio,因爲您可以避免使用單個線程爲您完成這項工作,並且可以大大提高應用程序的性能。 – Buchi
你的意思是在我的服務器端?你能給我更多的信息嗎?現在我在我的主函數接受一個套接字並啓動一個新的線程來處理它 –
我讀過關於SocketChannel對象和ServerSocketChannel對象。 如果我理解正確,它具有更好的性能,因爲新線程只在有新任務要執行的地方打開(讀取,寫入等),所以基本上大部分時間少的線程會同時運行,而不是在我的代碼中運行連接有一個線程,不管它是否有任務去執行或者不是。這是正確的嗎? –