2010-01-07 70 views
2

我和一個朋友正在與Google桌面瀏覽器和Android客戶端進行聊天,並以Google App Engine作爲服務器進行回合制遊戲。Google App Engine,Java和HTTP性能

我們使用Java API for GAE並使用HTTP與服務器進行通信。我們已經實現了簡單的聊天功能,並且我們在瀏覽器和Android客戶端上收到了不期望的延遲1-3秒,同時發佈了簡單的單詞聊天消息。

我的朋友認爲最好使用XMPP代替HTTP,但我們希望使用Google帳戶cookie進行Android客戶端的身份驗證,並且根據GAE文檔,XMPP客戶端無法使用Google帳戶Cookie,必須使用用戶的密碼。

有沒有人有任何關於延遲可能來自何處,如何排除故障和/或如何處理它的建議?

此外,是否有人知道在Java中完成GAE的聊天(或類似的)的任何開源實現?似乎無法找到任何。

+0

你是如何處理與客戶通信的服務器的?我的意思是。當A向B寫信息時,客戶B如何知道有消息?輪詢?如果是這種情況,延遲會很高,所以我建議研究一下「彗星」。一種實現「服務器推送」的方式:服務器將客戶端寫入所需的準確時間。實現它的方式是通過HTTP。客戶端連接到服務器並等待響應,但服務器必須準備好。同時連接1.000個客戶端(並等待遠距離響應)對於正常的HTTP請求是不可接受的。這是一項工作4comet。 – helios 2010-01-07 15:46:31

+0

helios,關於如何在應用引擎上做彗星的任何提示?我覺得這是不可能的。 – 2010-01-07 22:54:34

+0

我希望找到一種方法來做到這一點。看來,目前沒有辦法與Comet做到這一點。如果您有任何運氣,請發帖 – Hortinstein 2010-03-03 17:13:55

回答

0

分析情況的一種方法是使用Wireshark來查看延遲期間的網絡流量。

0

你不說你的聊天消息是如何從一個JVM獲得的。如果你正在使用數據存儲,也許嘗試使用memcache?

此外,啓動時間往往是一個問題;應用引擎始終啓動和停止JVM,特別是對於低流量的應用。診斷這種情況的一種方法是重新加載頁面(發送更多消息)並查看一段時間後它是否會變得更快。在管理控制檯日誌中分辨差異應該很容易。