nginx/apache/php 与 nginx/php
Posted
技术标签:
【中文标题】nginx/apache/php 与 nginx/php【英文标题】:nginx/apache/php vs nginx/php 【发布时间】:2011-05-05 19:28:35 【问题描述】:我目前有一台带有 nginx 的服务器,它反向代理到 apache(同一台服务器)来处理 php 请求。我想知道我是否放弃了 apache,所以如果我看到任何形式的性能提升,我会运行 nginx/fastcgi 到 php。我假设我会因为 Apache 相当臃肿,但同时我不确定 fastcgi/php 的可靠性如何,尤其是在高流量情况下。
我的网站每月获得大约 200,000 名唯一身份访问者,每月从搜索引擎抓取大约 6,000,000 次页面。这个数字正在稳步增加,所以我正在考虑性能选项。
我的网站在代码方面非常优化,没有任何缓存(也不想要),每个页面最多有 2 个 sql 查询,其他表没有任何连接,索引也很完美。
大约一年后,我将重写所有内容以使用 ClearSilver 作为模板,然后可能使用 python 或 c++ 来获得极好的性能。
我想我或多或少地从任何熟悉 nginx/fastcgi 并且愿意提供一些基准的人那里寻求任何建议。我的站点是一台带有 1 个四核至强、8gb 内存、150gb velociraptor 驱动器的服务器。
【问题讨论】:
【参考方案1】:nginx 肯定会比 Apache 运行得更快。我无法谈论 fastcgi,因为我从未将它与 nginx 一起使用,但这个解决方案似乎在多台服务器上更有意义(一个用于静态内容,一个用于 fastcgi/PHP)。
如果您真的以性能为目标——甚至考虑 C/C++——那么您应该尝试 G-WAN,这是一种提供(非常快)C 脚本的一体化服务器。
G-WAN 不仅内存占用小得离谱 (120 KB),而且它的扩展能力也无与伦比。如果您从 PHP 迁移,您还有很多工作要做,但您可以从性能关键任务开始并逐步迁移。
我们已经跳槽了,不能考虑回到 Apache!
【讨论】:
G-WAN 看起来非常非常漂亮!您是否碰巧知道它每秒可以处理多少个连接? 我测得 G-WAN 每秒有 200,000 个请求。鉴于动物是一个 32 位进程这一事实,当它以 64 位代码运行时还有进步的空间(所有其他 Web 服务器在 64 位编译时比在 32 位编译时要快得多)。跨度> 并非总是如此。在非常重的并发负载(动态页面)上,Apache 在大型多核机器上的运行速度比 nginx 快得多。 Nginx 适用于静态文件或我们将其用作代理时。 @iddqd:你能提供一些支持吗? @Wernight:只有自己的测试。一年前我在 64cpu 机器上测试过它。并行度从 100 到 500。与 Apache 相比,Nginx 处理小型静态文件的速度要快得多,并且不使用 RAM。测试 Nginx 时,中大文件速度没有差别,内存占用大。服务动态页面 Django (fastcgi/mod_python) (parallelizm 500 sim. conn.) session,cache,sometimes sql,Nginx 比 Apache 慢两倍。【参考方案2】:这是一个图表,显示了 nginx、apache 和 g-wan 各自的性能:
g-wan.com/imgs/gwan-lighttpd-nginx-cherokee.png
apache 似乎并不领先(这是一个 -Quad XEON @ 3GHz)。
【讨论】:
请注意,此图表直接来自g-wan,因此更有可能偏向g-wan。【参考方案3】:这是 g-wan 与 nginx、varnish 等的独立基准测试http://nbonvin.wordpress.com/2011/03/14/apache-vs-nginx-vs-varnish-vs-gwan/
g-wan 每秒处理更多请求,而 CPU 时间更少。
【讨论】:
你怎么知道它是独立的? ;) ...只是好奇。 @STATUS_ACCESS_DENIED,g-wan 和 nginx 作者对该博客文章发表了评论,甚至建议对其服务器的基准进行一些调整;这对我来说表明基准没有缺陷并且做得很公平。复制那篇文章开头详述的基准测试,并让我们知道你得到了什么,独立;),g-wan 现在声称比 nginx 更好的内存管理,它消耗的内存是基准测试中所有其他 Web 服务器最少的。【参考方案4】:NGINX 是当今网络服务器的最佳选择。
-
Apache 和 NGINX 的主要区别在于它们的设计
建筑学。 Apache 使用流程驱动的方法并创建一个
每个请求的新线程。而 NGINX 使用事件驱动
在一个线程中处理多个请求的架构。
就静态内容而言,Nginx 超越了 Apache。
两者都擅长处理动态内容。
Apache 可在所有操作系统上运行,例如 UNIX、Linux 或 BSD 和
完全支持 Microsoft Windows 和 NGINX 还可以在多个平台上运行
现代类 Unix 系统并支持 Windows,但它的
Windows 上的性能不如 UNIX 平台上的稳定。
Apache 允许在每个目录的基础上通过以下方式进行附加配置
.htaccess 文件。 Nginx 不允许额外配置的地方。
请求解释-Apache pass 文件系统位置。 Nginx
传递 URI 以解释请求。
Apache有60个官方动态加载模块,可以
打开/关闭。Nginx 有 3rd Party 核心模块(不是动态的
loadable).NGINX 提供了 Web 服务器的所有核心功能,
在不牺牲轻量级和高性能品质的情况下
这使它成功。
Apache 支持通过动态模块自定义 Web 服务器。
Nginx 不够灵活,无法支持动态模块和加载。
Apache 确保在其服务器上运行的所有网站都是
免受任何伤害和黑客攻击。 Apache 提供了以下配置提示
DDoS 攻击处理,以及 mod_evasive 模块
响应 HTTP DoS、DDoS 或暴力攻击。
何时选择 Apache 而不是 NGINX?
当需要 .htaccess 文件时,您可以覆盖系统范围的设置 以每个目录为基础。 在共享主机环境中,Apache 工作得更好,因为它 .htaccess 配置。 如果出现功能限制 - 使用 Apache何时选择 NGINX 而不是 Apache?
快速静态内容处理 非常适合高流量网站同时使用两者时
用户可以在Apache前面使用Nginx作为服务器代理。
【讨论】:
以上是关于nginx/apache/php 与 nginx/php的主要内容,如果未能解决你的问题,请参考以下文章
隐藏nginx,Apache,php,tomcat服务版本号
linux中查看nginxapachephpmysql配置文件路径的方法