2011-06-07 99 views
0

對不起,這個長度,但更多的信息通常比不夠好......Java的web服務的部署選項

我需要一些基於服務器的功能添加到Android應用程序,我在市場上。我過去的大多數經驗一直在使用.Net Web服務和MSSQL,但是由於Android使用Eclipse & Java我決定使用類似技術創建此Web服務。

通過使用一些各種教程,我開發了一個使用axis2 & mySQL的(自下而上的)Web服務,它在Tomcat7上的本地實例上相當愉快地進行通信。

戰爭文件的部署看起來相當簡單,但我想知道是否有什麼特別的我需要考慮它預計要處理的負載。

該應用程序目前有大約500,000個用戶,每個用戶可能會向服務器發出請求,大概每30秒鐘一次。所以這是目前預計流量最大的。

Web服務在sql數據庫上執行選擇查詢,進行一些計算然後發回響應 - 根本沒有對數據庫進行寫操作。預期的響應時間約爲1-10秒,具體取決於計算的複雜程度。

我真的不知道Tomcat,Java Web Service或mySQL的加載功能,有些Google搜索答案時什麼都沒有。但這可能更多是由於我根本不知道如何尋找基於我缺乏經驗的事實。

基本上我正在尋找是否應該通過單個Tomcat,webservice和mySQL實例來處理上述場景,還是應該採取其他步驟。在這一點上,我不知道自己是否低於能力,甚至不需要擔心,或者如果我以這種方式做出了一個糟糕的決定。因此,如果任何人都能夠回答這個問題,或者只是指向我可以更好地研究這個問題的方向,那麼我將不勝感激。

在此先感謝。

+0

您的請求是否可緩存?我想這是問自己最重要的問題。許多緩存解決方案不依賴於底層堆棧。 – Rom1 2011-06-07 14:32:13

+0

不需要。每個請求都會有所不同,我不認爲有任何方法可以實現緩存解決方案。我曾考慮過在啓動時將mySQL表加載到內存中 - 但是這超過了200,000條記錄,而select語句可以根據請求的要求對其進行過濾。 – Jon 2011-06-07 14:45:47

回答

0

一個好的開始就是加載測試你的web服務,看看它在錯誤和性能受到影響之前能夠處理多少。 你可以使用像SoapUI這樣的工具。 SoapUI工具允許測試套件可以設置爲load test具有不同參數的Web服務。 SoapUI不僅限於Java,並且幾乎可以用於任何Web服務。

如果您發現該服務器無法處理預期的負載,那麼你有幾種選擇

  • 投入更多的硬件吧
  • 調整你的查詢,以確保在最快的網絡 服務調用完成 時間可能
  • 簡介應用程序查找內存和性能瓶頸
  • 在你的數據庫的前面放置一個緩存層(見Ehcache) 10加快閱讀。
+0

我正計劃通過使用一些beta測試人員進行負載測試,並且正在進行階段性推出,以便在所有事情在尖銳的堆裏「實時活動」崩潰之前嘗試識別問題。 SoapUI看起來像是一個很好的解決方案,可以幫助我找到我需要的答案,因爲可能沒有人可以給出確切的答案。 感謝您的幫助,我會看看還有什麼其他答案出現,但我認爲我會將其標記爲最佳解決方案。 – Jon 2011-06-07 15:08:55

+0

你會想看看tomcat每次會產生的最大線程數。我相信默認是200.一旦你有更多的請求,然後最大的線程數量,那麼你將有用戶備份和等待。使用負載測試工具找到您的甜蜜點 – Sean 2011-06-07 15:11:10

+0

這是我期待看到的(並希望避免)更多的答案。通過「默認」,聽起來我可能會增加它,作爲一個專用的服務器,所以我會看到負載測試如何進行,並從那裏進行更多的研究。我想我的算法是儘可能優化的,至少對我的智商,但有關的Ehcache快速閱讀似乎可以很好的避免所有的來電分貝浪費時間和內存我應該找到一個問題的解決方案。 – Jon 2011-06-07 15:24:23