2014-09-11 43 views
0

我写了一个简单的Web服务,其中手持设备连接到服务器上的Twisted脚本。设备将数据发送到脚本,脚本使用这些数据来查询MySQL数据库,将数据库内容发送回设备。剧本是根据写在本教程中处理数百万个连接的扭曲脚本

http://www.raywenderlich.com/3932/networking-tutorial-for-ios-how-to-create-a-socket-based-iphone-app-and-server

怎么会这样的脚本处理大量连接的脚本?在我的脑海中,它只受服务器限制,服务器内存越高,可以处理的连接数越高。但是脚本能够在大量连接中表现良好吗?对于每个连接,都会创建一个新的连接实例,并在出现查询时为该连接创建一个新的db实例,所以它的所有处理都是异步处理的,我相信,所以服务器cpu的功率和内存?应对高连接量是通过扩展服务器来完成的?对于我的服务,连接可能会在1到3小时之间的任何地方保持打开状态,因此服务器内存可能会填满服务器并导致服务器崩溃。

另外,有没有人知道连接实例的大小是什么?

可能更多的服务器问题比扭曲的问题!但非常感谢阅读!

+0

我想这是更多的内核/ tcp-ip-stack问题,正如你所说 - 我怀疑Twisted强加了它自己的任何特定限制。阅读http://stackoverflow.com/q/2332741/66349,我会建议考虑重新设计你的架构。也许UDP会更合适? – 2014-09-11 09:35:23

+0

没有明确的理由切换到UDP是一个常见的新手错误。谨防! – 2014-09-11 12:14:23

回答

2

您应该执行压力测试。您应该生成大量的连接并查看性能下降的情况。你可能没有问题,但如果你这样做,你应该优化处理连接的代码,规范你的数据库并为你的数据库字段建立索引。但是不需要过早的优化。

+1

很好的答案。测试是确定知道的唯一通用方法。 – 2014-09-11 12:13:42

+0

到目前为止我觉得脚本可以处理无限连接,一旦有无限的CPU和内存。但我也在想这个脚本正在听一个端口。这将导致大量连接的性能问题。这个瓶颈有什么方法吗? – ThriceGood 2014-09-11 13:07:20