我计划在我的 Apache 服务器上运行一个聊天脚本,它每秒使用轮询来接收消息。我知道 Comet 等,但我目前不想使用它们。
我想知道是否有人可以给我它能够处理的并发用户的大致数量?
服务器规格 Ubuntu 服务器,256MB RAM,四核
脚本基本上是一个简单的聊天脚本,如果有任何新消息,它会从 mysql db 读取,如果是,则返回这些消息,否则退出。
感谢您的时间。
我计划在我的 Apache 服务器上运行一个聊天脚本,它每秒使用轮询来接收消息。我知道 Comet 等,但我目前不想使用它们。
我想知道是否有人可以给我它能够处理的并发用户的大致数量?
服务器规格 Ubuntu 服务器,256MB RAM,四核
脚本基本上是一个简单的聊天脚本,如果有任何新消息,它会从 mysql db 读取,如果是,则返回这些消息,否则退出。
感谢您的时间。
因为您的 apache 服务器几乎可以在任何东西上运行,从诺基亚 Internet 平板电脑到满载的 Sun E25K,并且获取消息可以从简单地从文件中读取行到执行昂贵的数据库查询,而您的 apache 可以以近乎无限的方式设置(mpm-wise);你应该:
虽然语气可能带有讽刺意味,但我坚信第二个建议是最好的,我并不想以任何方式冒犯你……
不,其他人也不能,但我可以告诉你如何更清楚地思考这个问题。
从某种意义上说,你的 Apache
MaxClients
设置就是你可以“处理”多少并发用户;很可能你会想要增加它,问题是你是否有足够的内存来运行那么多 Apache 进程而不会点击交换(当然,这取决于你的 Apache 进程在你的构建和配置)以及您的机器及其执行的操作是否足够快以至于内存甚至是一个问题。速度问题会影响您的轮询脚本的性能:如果运行需要 0.01 秒,并且每个用户每秒点击一次,并且您有 4 个 CPU,那么理论上您可能拥有的大多数人没有工作开始等待每个其他是 400。(实际上它会少于这个数,因为作业不是完全有序的,并行化并不完美,而且机器还有其他事情要做。)
但是,你知道,既然我们有这些优雅的降级系统,那并不是一个真正重要的数字。关键是需要多少人才能使系统出于您的主观目的而“降级”太多。如果有人打你的 poller 等待 0.1 秒让它回来,这没关系吗?0.2 秒?3秒?在某处,您会说“好吧,不,这表现太糟糕了”。那时您拥有的用户数量就是您的容量。
它基本上是可用内存的函数 - 你可以持有多少个线程/进程?
在您的情况下,您确实需要对此进行测量,并设置 MaxClients 以便您不会交换,否则游戏就结束了。
如果您每秒轮询一次,则需要决定是否要使用 KeepAlive。
你真的需要阅读这个和这个。
添加到上面所说的混乱:MaxClients。Apache 的硬编码上限为 255,但更改它确实需要重新编译。现在,重新编译 apache 通常非常简单,但您可能需要阅读您的发行版使用的工具以简化未来的升级。
但实际上,如果您在一台服务器上击中 255 个孩子,那么您做错了什么。