客戶端請求發送的資料量較小,每個請求在200個位元組以內,服務器回傳的資料量也一樣小。服務器采用linux + tomcat,每秒鐘會收到約200個來自不同客戶端的請求。請問VPS主機可以嗎?還是需要獨立服務器?VPS主機一年需要幾百塊錢,而獨立服務器一個月就需要幾百塊錢。自己玩能省就省,想問問大家的經驗。
uj5u.com熱心網友回復:
這個要實際壓力測驗吧。如果服務器要訪問檔案或資料庫,很容易在檔案讀寫或資料庫服務器出現瓶頸。按我的猜想,一般的企業Web應用,一臺服務器是搞不定1秒鐘處理200個http請求的
uj5u.com熱心網友回復:
你自己玩搞個作業站電腦應該就可以支持吧uj5u.com熱心網友回復:
由于ajax輪詢方式太耗服務器,所以決定采用html5 WebSocket。但WebSocket需要解決斷網重連問題。網上的文章是采用心跳重連機制。但這個方案我認為并不完美,因為心跳間隔短了,服務器壓力依然會較大,還不如采用ajax輪詢。而間隔長了,實時性上又會打折扣。我認為服務器一般是比較穩定的,斷網主要出在客戶端上。所以我想了個方法,客戶端代碼定時去查詢網路是否連通,但請求不是發到我的服務器上,因為我的服務器太弱了。而是發到某個知名網站上,去申請一個體積比較小的資源。如果申請成功,說明網路通暢,WebSocket也基本確定不會掛。否則說明網路斷了,WebSocket也肯定完蛋,于是向我的服務器發起重連。這樣等于每秒200次的并發讓某知名網站給承擔了,大家說這個方法怎么樣?uj5u.com熱心網友回復:
高并發核心個人認為,就是要合理的利用快取,減少不必要的IO.所以,得看你提供的服務型別,并在合適的層設定快取.假如這200個請求都一樣,那你直接在第一請求后將結果放入快取中,那后面199次請求就非常快了,服務器壓力很小.
但假如這200個請求都不一樣,要分別計算回傳結果,那就要考慮分布式,訊息佇列之類的技術了.還是得看具體業務.
這片博客寫的挺好的,可以看看:https://blog.csdn.net/DreamWeaver_zhou/article/details/78587580
uj5u.com熱心網友回復:
還是具體分析下這200個請求的型別集服務器收到請求后要干什么,對癥下藥.
另外,心跳機制本身沒問題,但是建議還是不要這么做,后面要處理的問題多著呢,客戶端管理,斷線重連,資料斷包,粘包等等,不如使用現成的通訊協議框架,如Mqtt協議等(有各種語言現成的服務端和客戶端實作庫).
uj5u.com熱心網友回復:
你采用什么服務器?tomcat?配置異步了嗎?
你的這個請求處理需要訪問資料庫嗎?還是記憶體快取
如果配置了異步,只是心跳處理,沒有資料庫訪問,單核心就足夠支持。你可以自己用apach ab測驗一下
uj5u.com熱心網友回復:
感謝朋友們的專業回復,我是在做一個在線棋類游戲。設計最多允許200人同時在線對奕。如果采用心跳重連機制,間隔1秒,那么服務器就需要在一秒鐘時間內處理200個客戶請求。而我沒有經濟能力擁有一個強力的服務器,更談不上什么集群和分布了。棋類游戲的通信比較頻繁,但資料量小,每次百十個位元組。大多數時候不需要IO和資料庫操作。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/188050.html
標籤:Web 開發
上一篇:關于list<> 賦值問題
下一篇:Integer包裝類問題
