我有一个大型游戏引擎,为手机客户端和网站提供服务。 DB是MSSQL2008,引擎是用C#编写的。
该网站是用ASP.NET MVC构build的,手机的Web服务也是基于ASP.NET MVC(可能将被迁移到WCF或纯套接字服务器)。
Web站点和Web服务位于IIS 7服务器上,而DB位于专用服务器上。 两者都连接在本地快速LAN上。
游戏需要每个用户的实时响应(不到1秒)。 当我对服务进行了一些负载testing时,似乎在〜250个用户上达到了1秒的响应(在50秒左右,大约是200ms)。 它应该支持超过10000个连接的用户。 (我猜是服务器复制)。
我想添加一个层 – 一个专门的游戏Web服务的实时服务器。 我听说Python可以用来构build非常高性能的服务 – 这将是一个聪明的想法来添加这个层? (该层应该有内存中的临时数据库来为实时播放器提供服务,然后每隔X秒将其全部转储到后端数据库)。
我的build筑好吗? 那怎么能改进?
我可以对SQL Server部分说话。
你有什么硬件规格? 什么是您正在使用的SQL Server版本? 虽然您可以将更多的内存添加到框中,并将数据保存在内存中,但解决scheme在一段时间后不会缩放。 如果你想扩展许多用户,你需要在这里使用很多好的实践。
通常的瓶颈是内存,IO,CPU。
参考: http : //dl.dropbox.com/u/13748067/SQL%20Server%202008%20Diagnostic%20Information%20Queries%20%28April%202011%29.sql
http://www.sqlskills.com/BLOGS/KIMBERLY/category/Indexes.aspx
http://www.sqlskills.com/BLOGS/PAUL/category/Indexes-From-Every-Angle.aspx
它接近我,你应该问自己,瓶颈是第一位的。
游戏需要每个用户的实时响应(不到1秒)。
这些都是手机用户,具有不同的服务质量(3G / 3G / 4G / Wi-Fi),接收,延迟,抖动,碎片等,您预计响应时间<1s? 你有没有testing过这一个电话,更不用说数百?