优化 Apache-我应该使用 APC/nginx 吗?

优化 Apache-我应该使用 APC/nginx 吗?

我读过很多关于 Apache 优化的文章。在阅读过程中,有两个名字反复出现,nginxphp-apc

我试图了解其中哪些可能对我有帮助,但我找不到明确的答案。我需要我的服务器支持大约 10k 个连接。该服务器有 5GB 的 RAM 和 4 个 CPU。

  1. 我的问题是,如果有的话,我应该使用哪一种?
  2. 我是否需要更改我的代码以更好地使用APCnginx
  3. 使用是否 nginx会从 Web 服务器中删除任何功能?
  4. 我遗漏了什么吗?我是否遗漏了某些基本的东西?

Apache 信息:

[root@web conf]# httpd -V
Server version: Apache/2.2.3
Server built:   Sep  3 2009 17:38:51
Server's Module Magic Number: 20051115:3
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   32-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

谢谢!

编辑

该网站将用于流式传输视频,使用 flash-rtmp 来流式传输视频,并使用 php(cake)和 js 来处理其他一切。

答案1

apc 充当 PHP 模块,而 nginx 是 web 服务器,通过 cgi 接口与 php 一起工作。简而言之,web 服务器配置不是一件容易的事,选择平台取决于很多因素。10k 个连接 - 这是什么意思,10k 个并行下载?如果视频以文件形式传送到同一台服务器 - apache 应该没有问题。最好考虑磁盘 IO 和网络,如果您正在处理视频 - 我确信 CPU 无法处理。如果您正在运行这个 php 网站来支持由其他服务器处理的视频流 - 可能不会有大量与 php 相关的请求,因此您可以使用任何东西来做到这一点,甚至不需要硬优化。

我的问题是,如果有的话,我应该使用哪一种?

  • 在任何情况下你都可以使用 APC,但对于 nginx 则视情况而定。Nginx 默认配置比 apache httpd 更高效,但经过适当配置后,你可能会得到与 httpd 几乎相同的结果。

我是否需要更改我的代码以更好地使用 APC 和 nginx?

  • 对于 APC - 没关系,使用 nginx 时,您将失去更常见的 Apache httpd Web 服务器中的一些附加功能。也许您需要修复某些问题

使用 nginx 是否会从 Web 服务器中删除任何功能?

  • 是的,很多,另一个问题是你是否使用它

我遗漏了什么吗?我是否遗漏了某些基本的东西?

  • 当前工作负载,瓶颈在哪里 - CPU 使用率、网络、连接等。APC 将降低 CPU 使用率,增加 RAM 使用率。http 可以与不同的模型一起使用。据我所知,您使用的是 RHEL5/Centos5 apache,32 位。至少​​,使用相关内核 (kernel-PAE) 来使用所有 5GB RAM。我不建议你使用当前的 apache 模型(在 /etc/sysconfig/httpd 中更改模型)。你可以将 php 用作模块或通过 cgi (mod_fcgid) 使用。

这远非配置细节——有很多东西需要配置,包括进程重生等

答案2

APC 是 PHP 的字节码缓存类型事务,而 nginx 是完全独立的网络服务器。可能有助于明确您计划运行哪种类型的网站。

相关内容