首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于高性能服务器编码的是什么?

用于高性能服务器编码的是什么?
EN

Stack Overflow用户
提问于 2011-04-21 13:05:39
回答 4查看 2.9K关注 0票数 1

我需要构建一个服务器来接受一个非常高频率和负载的客户端连接(每个用户将每0.5秒发送一个请求,并且应该在800 of以下得到响应,我应该能够在一台服务器上支持数千个用户)。假设SQL Server是经过精心调整的,不会造成问题。(假设当然可能不是真的)

我想写一个非阻塞的服务器来完成这个任务。我的后端是一个SQL Server,它位于另一台计算机上。它不需要实时更新,所以我想我可以将大部分数据缓存在内存中,并每10-20秒将其转储到DB中。

我是否应该使用C#编写服务器(这与server更兼容)?也许是“旋风”里的Python?在编写高性能服务器时,我应该考虑什么?

编辑:(添加更多信息)

  1. 应用程序是一个游戏服务器。
  2. 我真的不知道实际的流量--但这是预测,服务器应该支持它,并且扩展得很好。
  3. 它是托管在一个数据中心的“云中”。
  4. 语言并不重要。表现确实如此。(可以在Server上公开Web服务,以允许.NET以外的其他语言)
  5. 连接非常频繁,但很小(返回的数据很少,所需的计算也很少)。
  6. 为了获得最快的性能,它应该将大部分数据保存在内存中。

任何想法都会很感激:)

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-21 13:14:20

好吧,如果你真的需要高性能,不要选择C#,但是C/C++,这是显而易见的。

无论如何,进行服务器编程的最快方法(据我所知)是使用IOCP (I/O完成端口)。嗯,这就是我制作MMORPG服务器模拟器时所用的,它比基于C++选择的官方服务器执行得更快。

下面是对C# http://www.codeproject.com/KB/IP/socketasynceventargs.aspx中IOCP的一个非常完整的介绍

祝你好运!

票数 0
EN

Stack Overflow用户

发布于 2011-04-21 13:07:55

使用您最熟悉的编程语言。在您不完全理解的大型应用程序中查找性能问题要昂贵得多。

买更多的硬件要便宜得多。

票数 0
EN

Stack Overflow用户

发布于 2011-04-21 13:15:41

人们会说C++,因为.Net中的垃圾收集可能会减少延迟。但是,如果您很聪明,可以通过重用现有的托管对象来避免垃圾收集。

编辑:您对Server的假设可能是错误的。您需要将状态存储在内存中,以便进行随机访问。如果需要持久化更改,请将其记录到文件系统,并将它们与数据库合并。

编辑2:您将有很多不同的线程在处理相同的数据。为了避免阻塞和死锁,学习无锁编程(Interlocked.CompareExchange等)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5744507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档