目前我有 1000 个并发用户在线。但我的网站速度很慢。我本来可以有 8000 个并发用户,但服务器无法处理流量,导致访客流失。
我的服务器是VPS服务器:
专用 CPU 7.2GHz
内存 4512MB
内存使用量远低于可用资源。(目前为 632 MB)我应该做什么?我应该配置 apache 服务器吗?如果是,该如何配置?缓存怎么样,也许是 memcached?
这是一个由节点构建的虚拟服务器,每个节点代表 600 Mhz CPU 和 376MB RAM。
我正在运行一个用 php 和 mysql 构建的网站。
答案1
基准测试,基准测试,基准测试。这是唯一的解决方案。有无数因素会导致网站变慢。以下是我会采取的措施:
- 使用 Firebug 加载 Firefox。检查网络面板以了解主要请求的加载时间。如果“连接”时间过长,则可能是网络或带宽问题,或者 Apache 无法同时处理那么多请求。如果“等待”或“传输”时间过长,则可能是 PHP 脚本出了问题。它们渲染页面的时间过长。
- 处理 PHP 时,第一个怀疑对象通常是您的 (My)SQL 服务器。如果您使用中央 SQL 库,则对查询进行基准测试应该不会太难。只需跟踪您的页面需要多少查询以及这些查询需要多长时间。将其与总页面渲染时间进行比较。如果您有一个
mysql(i)_
到处使用普通函数的旧应用程序,那么请跳过这两个要点。 - 如果问题出在 MySQL 上,那么第一个怀疑点通常是索引是否正确。对所有查询运行 EXPLAIN,看看是否使用了索引。定义正确的索引。重新进行基准测试。I/O 也是 MySQL 速度变慢的常见原因(使用更大的查询缓存、发出更少的查询(应用程序缓存)、调整 MySQL 设置或只是拆分 Web 服务器和 SQL 服务器。
- 如果问题出在 PHP 本身,请加载 xdebug 并通过分析器运行您的页面(确保仅针对你的请求,否则您的服务器很容易被关闭)。在 KCacheGrind 中加载转储,找出您的应用程序花费所有时间的地方。重构。
这正是我要做的。每一步都很大程度上取决于你在上一步中得到的结果。我们无法给你通用的建议。只需基准测试、基准测试、基准测试,并相应地重构你的代码和服务器设置。
答案2
我的网站开始出现性能下降的情况。我将 memcached 放在一些比较“复杂”的页面上,效果比我想象的要好。有些页面解析需要 0.5 秒,而有些页面解析需要 3 秒(我知道这很丢脸)。我花了不到一个小时的时间将 memcached 放在几个关键位置,现在所有页面的解析时间都少于 0.01 秒。此外,我注意到我的平均负载也下降了很多,因为没有那么多 mysql 查询需要处理。我强烈推荐 memcached :)