我是 LAMP 新手。我安装了带有 Mysql 和 Apache 的 Ubuntu 服务器。一切都很顺利,直到一天内 Web 服务器上的请求数达到 10000。之后服务器宕机并且无法工作。评估硬件要求有什么作用吗?我应该配置 Apache 还是 Mysql?
答案1
您实际上并没有给我们提供太多信息。每天 10000 个请求意味着每 9 秒 1 个请求。如今您能获得的任何硬件/vps(甚至是 TomTom 的智能手机)都应该能够处理这个请求。无论您的问题是什么,都不太可能是硬件问题。如果您查看屏幕右侧 ---> 在相关下,您会发现一堆问题及其答案,它们应该可以帮助您缩小问题范围。
答案2
直接回答:在 3k 个并发请求下,它不再是儿童游乐场了。找一个好的系统管理员,他可以追踪瓶颈并修复它们。通常这将转化为修改的系统设计/架构,但如果你很幸运,它只是一个编写糟糕的(可能是 php)应用程序,缺少 mysql 索引,apache 配置不当。
答案很长而且远非完整,盲目地试图引导你走上正确的道路:
- 估计硬件需求:容量规划是一个很长的故事。如果你想做对,你需要读一本关于系统架构和容量规划的好书
- 您肯定必须重新审视 apache 和 mysql 配置。ubuntu 默认配置远远达不到生产就绪的质量。禁用 keepalive、增加子进程数量、禁用 dns 查找等等……
- 不要运行带有 mod_php 的线程 apache;php 模块通常不是以线程安全为考虑编写的;始终使用带有 mod_php 的预分叉 apache
- 尝试在路径中的某处使用 memcache。查看您的应用是否支持 memcache
- 制定一个经验法则,将静态内容分离到另一个 http 服务(nginx、lighttpd)上
- 您最终可以在 fastcgi 服务器下使用 php;php 5.3 附带一个 fastcgi 服务器;如果这样做,您可以使用更快的 http 服务器作为前端,并永久放弃 apache(nginx 附带良好的 fastcgi 客户端支持)
- 在 php 中使用 APC
- 记录慢速 mysql 查询;确保对被 mysql 标记为慢速的查询有正确的索引
还有很多要说的,系统管理员可以写一本书,介绍如何将虚拟的 LAMP ubuntu 安装转变为可用于生产、快速、可扩展的安装……我就到此为止吧。
答案3
您需要调整所有三个: 硬件要求: 确实,硬件是您首先应该关注的事情。Apache 提供的内容有两种类型:静态和动态。对于静态内容,Apache 可以轻松处理超过 2000-3000 个请求,其性能经过调整,硬件规格如下:Corei3 2.13Ghz 处理器、4GB RAM。但对于动态内容,真正的游戏才刚刚开始。基于 PHP 的动态页面需要大量内存和 CPU 资源,我将在下面的相应部分中对此进行解释。
Apache:可以通过改变 Apache 的许多参数轻松调整其性能。例如,这些是我的 wordpress 的一些运行参数,它上面有大量流量。
Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 6
####Maximum Client Connections
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 512
MaxClients 512
MaxRequestsPerChild 4000
</IfModule>
每个 Apache 进程需要大约 10-30MB 的空间(如果 php 页面很大,可能会很大)来处理 php 请求。计算 maxclients 的公式为:
MaxClients ≈ (RAM - size_all_other_processes)/(size_apache_process) 有关针对 php 调整 apache 的详细和分步过程,请关注此文章: Apache 性能调优
MySQL的:
对于 mySQL:将以下内容添加到 my.cnf
query_cache_type = 1
查询缓存大小 = 26214400
这使得性能有了显著的提升。另请参阅这篇文章,其中解释了“安装后在 MySQL Server 中需要调整什么” http://www.mysqlperformanceblog.com/2006/09/29/mysql-server-installation之后的调整方法/