我已經構建了一個MMO遊戲,當很多人連接時我有很多滯後現象。我正在使用UDP和TCP數據包。 TCP看起來工作得很好,有時候UDP會延遲5秒。什麼可能導致此?我使用的是MongoDB,每個客戶端每秒發送數據包30次。謝謝。使用UDP的巨大延遲。爲什麼?
2
A
回答
0
UDP協議不提供包傳遞的保證。所以你的問題可能在此。 http://en.wikipedia.org/wiki/User_Datagram_Protocol
+0
我檢查了它,似乎所有的數據包都來了,但延遲5秒。首次啓動服務器時,一切正常。 2小時後,2秒。 5小時後,5秒延遲等等。所有(大多數)數據包即將到達,但延遲。 – Eli
0
瘋狂猜測:你的UDP數據包接收路徑涉及分配內存,並且你泄漏了內存。收到的數據包越多,分配內存所需的時間就越長。
0
我也猜在這裏,但這種情況可能是您的應用程序是對UDP數據包輪詢一次ñ毫秒(比如,如果你的FPS爲20,然後ň將是50毫秒)。
現在的猜測是,在此期間,您的PC會收到很多UDP數據包,並且它們會被您的操作系統堆積起來。然後,當您輪詢這些數據包時,您或操作系統不會立即清除堆棧。更大的籌碼可能意味着更大的滯後。
我想我已經讀過一些地方,甚至有些路由器試圖變得聰明並且堆疊UDP數據包。但是我無法找到我看到的頁面。
我在這裏已經發布了類似的問題:
Router gets unresponsive when using UDP
和上面的是我現在的理論:),可惜我還不知道如何解決它。我想到的一種可能性是使用一個單獨的線程,它會立即對網絡請求作出反應,而不是每隔n毫秒輪詢網絡。
相關問題
- 1. 巨大的UDP延遲與Android
- 2. 使用kafka mirrormaker時的巨大延遲
- 3. 巨大的運動延遲
- 4. XCode 6.0.1行爲:巨大的延遲?
- 5. 什麼導致udp接收延遲?
- 6. 爲什麼會放大增加延遲?
- 7. 長輪詢造成巨大的延遲
- 8. jquery.form.min.js在巨大的延遲後加載
- 9. ViewFlipper具有'巨大'的延遲
- 10. 巨大的網絡通信延遲
- 11. 延遲加載或巨大的CSS精靈(大小爲9MB)
- 12. UDP延遲潛力
- 13. 巨大的延遲時使用芹菜+ Redis
- 14. 方法更新巨大的延遲後的用戶界面
- 15. 爲什麼延遲工作不使用延遲創建「處理程序」?
- 16. 爲什麼應用程序引擎延遲如此之大?
- 17. 爲什麼Kademlia使用UDP?
- 18. 使用Q延遲有什麼好處?
- 19. 爲什麼我的延遲工作?
- 20. 爲什麼RecyclerView的onDraw延遲
- 21. 爲什麼粘貼事件值延遲?
- 22. 爲什麼google chromes控制檯延遲?
- 23. SCSS編譯爲什麼會有延遲?
- 24. 爲什麼setTimeout無延遲執行timeExpired?
- 25. GTK3和Python:爲什麼set_property延遲?
- 26. 爲什麼phantom.exit()有2秒延遲?
- 27. 觸摸事件爲什麼延遲?
- 28. 爲什麼CSS動畫延遲?
- 29. 爲什麼要做:懸停延遲?
- 30. Netty中的OPEN和BOUND事件之間的巨大延遲
我在跟進這個問題。你解決了嗎?下面的答案是否正確? Thx –