Apache 在正常情况下如何处理c10k 问题?比如说在运行数据很少的非常小的脚本时,或者如果我使用 Apache 是否需要横向扩展?
在后台,一些繁重的工作是由一些运行专门软件来处理请求的服务器完成的,但我想使用 Apache 作为前端。这是一个可行的计划吗?
我认为 Apache 更像是一个源服务器——运行类似 mod_php 或 mod_perl 的东西来生成内容,并且很聪明地路由到适当的系统。
如果您的站点前面有数千个并发点击,并且返回了混合类型的数据(静态和动态),那么您可能会发现在它前面放置一个更优化的系统很有用。
Apache 的经典优化后问题不是生成动态内容(或者至少可以在流程的早期进行优化),而只是等待慢速客户端能够接收正在发送的字节。因此,将 Squid 或 Nginx 形式的反向代理放在服务器前以接管慢速网络客户端的“勺子馈送”,同时允许内容生产充分进行,这可能是一个显着的优势速度,并且以本地网络速度 - 100Mb / 秒甚至千兆速度 - 如果它甚至必须遍历网络。
我假设您可能已经看过这些数据,但如果没有,它可能会给您一些想法。
伙计们,假设您正在运行具有 10K 连接(同时)的 Web 服务器。怎么会这样?
你每秒有很多很多的连接
动态内容
例如,您确定您的 CPU 可以处理那么多 PHP 会话吗?我想不,那你为什么要考虑 C10K 问题?:D
静态内容 - 小文件
还有很多联系吗?在单个服务器上?可能您也遇到了网络/吞吐量问题,或者您是 Google 的未来竞争对手。使用能够解决 C10K 问题且稳定的 lighttpd - fly light。将 Apache 仅用于大型站点的静态文件是显而易见的。
您的客户正在长时间下载大文件 - 静态内容
ISO 映像、档案等
如果您是通过 Web 服务器进行操作 - FTP 可能更合适。
视频流
使用 lighttpd 或专门的软件。仍然......其他资源呢?
我在 apache 服务器前使用 Linux 虚拟服务器作为负载平衡器(带有 LVS-NAT 的特定补丁),我很高兴 :) 这个字符串是您想听到的答案。