服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

在3G移动networking上iPhone客户端遇到的服务有哪些TCP调优技巧?

我是一个开发者,他有一个很好的devise一个networking服务的不好的情况,很难被iPhone客户打到。 iPhone应用程序在过去一年的下载量超过了10MM,现在我正在把用户在线上互相交stream。 我想调整将承载我的基于TCP的networking服务的服务器的TCP实现。 每个请求的大小发送将是“小”(比如<256字节)。 好吧,你知道了,这是一个游戏服务器(令人震惊)! 仅供参考,对于这种特殊的服务,我不感兴趣UDP(或UDP上的可靠层,例如ENet和RakNet),因为游戏不像Quake一样; 所有的数据包都必须可靠地接收,这就是TCPdevise的。 因此,iPhone客户端和服务之间的连接将是“长久的”(尽可能多 – 隧道和电梯被诅咒!)。 仅供参考,我在运行Linux 2.6.18-164.9.1.el5的服务器上运行100Mbps上行链路上的服务。 我的目标是同时: 保持尽可能低的延迟; 和 尽量减less每个连接的客户端使用的内存量。 有大量的TCP相关的旋钮来调整! 经过一些基础研究之后,似乎大多数人都build议保持原样。 但是,有一些设置似乎应该针对特定情况进行调整。 我知道这有点模糊,这就是为什么我要求帮助。 需要考虑的事情是,尽可能减less内存,尽量减less片状networking上的小请求/响应,这可能是: 内存可用于TCP / IP实现 设置“nodelay”选项(禁用Naglealgorithm,因为这是一个半实时游戏服务器) 拥塞控制algorithm 等等(还有什么?) 考虑TCP 拥塞控制algorithm : reno:几乎所有其他操作系统使用的传统TCP 立方体:CUBIC-TCP bic:BIC-TCP htcp:Hamilton TCP 维加斯:TCP维加斯 westwood:针对有损networking进行了优化 我的服务器默认为bic,其目标是devise一个协议,可以在高速长距离networking中将性能提高到每秒几十吉比特,同时保持强大的公平性,稳定性和TCP友好性。 韦斯特伍德听起来更合适,因为它旨在更好地处理大带宽延迟产品path(大型pipe道),由于传输或其他错误(泄漏pipe道)造成的潜在分组丢失,以及dynamic负载(dynamic负载pipe道)”。 我在这里太深了,还是这个课程的标准? 什么types的东西你们一般调整TCP / IP? 怎么样? 有什么规则可以知道? 你对我的个案有什么智慧的话? 非常感谢!