亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用LAMP作為我的游戲的服務器組件是否可行?

使用LAMP作為我的游戲的服務器組件是否可行?

PHP
紅顏莎娜 2022-08-19 15:18:47
我一直在開發一款偽多人游戲,它將每個玩家的重要數據存儲在我的MySQL數據庫中。該游戲類似于部落沖突,玩家建立自己的基地,并可能選擇攻擊其他玩家的基地。為了防止作弊,所有重要的功能都通過PHP在我的服務器上運行。例如,如果玩家想要建造一座房子,服務器會被告知:玩家想要建造BUILDING_A grid{x,y},PHP腳本從數據庫中檢查該區域是否可用,玩家是否有技術,資金等。所有這些函數都相對簡單。他們只是檢查誰試圖訪問數據庫,以及他們是否能做他們想做的事情。然后,服務器將更新數據庫中的玩家數據,并向設備返回一條消息。因此,從本質上講,我的游戲將始終遵循相同的過程:1)播放器設備發出請求,2)服務器對玩家進行身份驗證并允許或拒絕請求,3)服務器向播放器設備發送響應,設備跟隨它。但我不確定我的方法是否可行或可擴展。我剛剛獨自測試了它,效果很好,但假設我在第一周就得到了100或1000名球員。在高峰期,每秒可能有幾百個服務器請求,其中調用PHP腳本并訪問和更新數據庫。如果它成為熱門,并且有成千上萬的人同時訪問我的PHP腳本和數據庫怎么辦?這種方法一開始就可行嗎?如果我的服務器足夠強大,那么一個PHP腳本可以同時被這么多人訪問嗎?服務器能否在一秒鐘內向我的數據庫寫入數百次?它會對操作進行排隊嗎,它會忽略一些操作,重疊的操作會失敗嗎?例如,如果我支付了 AWS EC2 費用并在那里設置了我的 LAMP,那么這種系統是否可以工作,或者我是否會遇到某種我不知道的限制或問題?
查看完整描述

4 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

是的,LAMP環境可以輕松管理每秒超過10k的請求。

這里只有一個建議,而不是使用比服務器性能更好的服務器。在大多數情況下,仍然是性能的更好選擇。Apache2NginxApache2Nginx

參考: https://theorganicagency.com/blog/apache-vs-nginx-performance-comparison/

如果想自己做基準測試,你可以使用:https://www.litespeedtech.com/benchmarks/php-hello-world

當您計劃在EC2上部署它時,您可以首先使用m5a.large,后來在普及創建(克隆)一個m5a.large Ubuntu服務器上,并將它們都放在ELB下。

祝你好運!


查看完整回答
反對 回復 2022-08-19
?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

PHP腳本同時被這么多人訪問,服務器可以在一秒鐘內數百次寫入我的數據庫嗎?它會對操作進行排隊嗎,它會忽略一些操作,重疊的操作會失敗嗎?

  • 每秒數百個 -- 好吧,幾千個 -- 視情況而定。

  • 對操作進行排隊 - 是的,但這相當快;這些操作將主要并行執行。

  • 忽略一些 -- 不。好吧,如果他們保持隊列很長時間,以至于超過,默認為50秒。(不太可能發生。lock_wait_timeout

  • “只是失敗了”——不。

您可能應該計劃有足夠的RAM來處理所涉及的所有數據。(聽起來這不會有問題。如果查詢必須過于頻繁地進入磁盤,將成為擴展游戲的限制。AWS EC2 使用固態硬盤,對嗎?(硬盤太慢。

是否涉及圖形?這是如何處理的?它是否完全在每個用戶的客戶端瀏覽器中?我問,因為如果重繪屏幕涉及SQL查詢,可能是一個沉重的負載。

聽起來典型的“會話”是

  • 啟動 PHP

  • 連接到 MySQL

  • SELECT用戶信息

  • 做一些PHP處理

  • '更新用戶信息

這將發生,平均每隔幾秒鐘發生一次。一千個用戶這樣做應該很容易實現。

這假設它是一個單人游戲。相反,如果它是一個多用戶游戲,那么“新建的房子”難道不需要向所有其他用戶廣播嗎?


查看完整回答
反對 回復 2022-08-19
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

首先,您可能希望查找以您選擇的語言編寫的“AJAX 服務器”或“遠程過程調用 (RPC) 服務器”包。您實際上并不需要“Web服務器”來完成此特定工作。您可以找到專門針對目的的更專業、更輕量級的工具。(對于“容器化部署”,通常用于此類任務。

Rackspace等供應商在其網站上非常廣泛地撰寫了有關部署“動態可擴展服務器”的各種方法的文章。我相信他們仍然有一家公司的文章,該公司銷售“足球媽媽”使用的移動應用程序。當沒有人使用該應用程序時,相應的“容器”不會運行。當周末來臨時,每個媽媽都看著她們的小寶貝在田野里跑來跑去,一個可調節數量的容器動態地上線來處理負載......然后最終再次死亡。

所以,是的,你的推理是合理的,你的要求是一個非常普遍的要求。你可以站在巨人的肩膀上。


查看完整回答
反對 回復 2022-08-19
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

這個問題沒有簡單的答案,但對于一個在配置良好的服務器上運行的編寫良好的應用程序,邏輯的執行只需要處理請求所需時間的一小部分 - 響應時間通常由網絡往返時間和與DBMS通信所花費的時間主導。多用戶系統通常無法擴展的地方是處理并發性;程序員認為并行運行的東西需要按順序運行,并且可能使用鎖定來強制執行。因此,編程語言的選擇(只要它不是CGI,其中程序被聲明來處理每個請求)實際上并不重要。

您需要能夠對其中每個操作進行基準測試 - 收集有關客戶端端到端響應時間的數據,并在中心位置(不一定是實時)收集數據,并在應用程序中收集有關數據庫等待時間的指標。

PHP會話可能是一個主要瓶頸 - 還要盡量減少每個請求對數據庫的調用次數。

我見過臃腫的Wordpress安裝努力在3秒內用256Mb的RAM處理請求,并且在合理的規格主機上不支持超過20個并發連接 - 我也見過內容管理系統能夠在10毫秒內處理請求,RAM限制為4Mb。容量大約相差一千倍以上。


查看完整回答
反對 回復 2022-08-19
  • 4 回答
  • 0 關注
  • 208 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號