我是新系统管理员,负责管理 CentOS 服务器。过去一周是我职业生涯中最激动人心的一周,学到了很多新东西。不过今天我还有另一项任务,那就是确保我们的服务器能够处理比旧共享主机更多的任务。
我们最初在 GoDaddy 共享主机上限制并发连接数为 200。最终,我们超出了这一限制(通常是在活动/营销活动期间),并转向虚拟专用服务器。我假设连接数将由 Apache 处理。
为了允许更多流量进入,我应该注意哪些配置?
答案1
您只是在谈论提供静态网页吗?如果您有任何类型的编程后端,那么对此有很多不同的答案,但对于 Apache 来说,它肯定是进程模型和允许的进程/线程数。您还需要阅读通用的 UNIX Apache 调优指南,并确保每个用户有足够的进程和打开的文件(ulimit -n 和 -u 显示这些;使用 /etc/security/limits.conf 中的 nproc 和 nofile 进行设置,并通过在 /etc/pam.d/login 中添加“session required /lib/security/pam_limits.so”来启用它)。
在旧版 Apache 中,您始终使用“prefork”模型,该模型为每个线程生成一个单独的进程 - 这是旧的 MaxClients 设置。如果您使用一堆模块和其他东西,200-250 个 Apache 进程很容易填满一台只有少量 RAM 的机器。确保您使用的是较新的 Apache 并使用使用不同线程模型的“worker”MPM,它将为您带来更多服务器(需要更多设置来调整)。
如果您需要极高的可扩展性,请从 Apache 过渡到 nginx 或类似产品。但如果场景只是“略多于 200”,Apache 就足够了。
确保将超时时间设置为合理较低的值,除非您要处理较大的文件(例如 30 个左右)。
使用压缩和缓存。
答案2
此外,由于负载会更高,您可能需要调整 Linux 防火墙设置,尤其是 conntack 模块。互联网上有一些文章,我的一篇在这里:http://timanovsky.wordpress.com/2009/04/10/tuning-linux-firewall-connection-tracker-ip_conntrack/