服务器规格建议

服务器规格建议

我目前有一个 Linode 512 VPS,搭载 Ubuntu 10.04 LTS(32 位)。

我最近开通了我的网站,它吸引了大量社交网络用户,但最近我的 CPU 出现了一些问题。

我每天大约有 20,000 名用户,今天我不得不多次重新启动 apache 和 MySQL 进程,因为 CPU 使用率太高,我几乎无法输入命令。

我想调整它的大小,但我不确定是否可以做些什么来帮助我解决这个问题。

就编码而言,我没有什么可改变的,我目前正在对 SQL 服务器(在本地主机上)运行最少量的查询,并且我已经尽我所能来改进代码。

我正在运行 GZip,需要说明的是,我网站的主要目的是提供图像服务。

答案1

我正在运行 GZip,需要说明的是,我网站的主要目的是提供图像服务。

这可能就是您的问题所在。Gzip 肯定有助于处理文本内容,因为它很容易压缩,但是图像已经压缩,尝试使用 gzip 进一步压缩它们是徒劳的。关闭 gzip 并查看是否能降低您的 CPU 负载。

如果没有,那么下一步很可能是将数据库拆分到第二个 linode 512。我会在重新调整当前 Linode 的大小之前执行此操作。部署第二台机器时,请确保它位于同一个数据中心,但在不同的主机上。这样 Apache 和 MySQL 就不会争夺磁盘 IO。此外,请记住,您应该使用 Linode 的后端专用网络来进行两台服务器之间的通信。

答案2

今天我不得不多次重启 apache 和 mysql 进程,因为 CPU 使用率太高

那么你没有正确配置你的服务器。确保你有足够的能力来管理服务器是至关重要的。而在网络服务器上,糟糕的性能会滚雪球般越滚越大——最终导致数百人无法使用你的系统。用硬件解决问题是一个临时的解决方案——但你需要学习更多关于如何调整和管理服务器的知识——远远超过这里的答案所能提供的。

然而,是的,可能有一些快速的胜利 - 但你已经提供了有关服务器配置方式和工作负载模式的有用信息。随便猜一下,我建议您查看内容缓存 - 特别是在代理上。去读一些 Mark Nottingham 的在线资料。

您显然不知道系统的哪些部分导致了问题 - 您需要开始在 apache 日志中记录 %D 并分析数据以找出性能问题所在;提示:仅提供静态内容的服务器上 CPU 使用率高的情况非常不寻常 - 您可能认为负载就是来自那里 - 但我对此表示怀疑。

答案3

我同意 symcbean 的观点。获取一些有关问题实际原因的数据是很好的第一步,而缓存可以使轻量级服务器发挥很大作用。

查看 Munin(并启用默认情况下未打开的 MySQL 插件)以获取统计数据。

除了设置缓存标头之外(这里还有一篇 Mark Nottingham 的文章:http://www.web-caching.com/mnot_tutorial/),Varnish可以位于Apache的前端,将静态内容缓存在磁盘或内存中,从而减轻Apache的负载。

其他人则认为 Lighttpd 或 Nginx 可以成为 Apache 静态内容的良好替代品。

如果您想要在 Ubuntu 10 上逐行设置 Munin 或 Varnish,请告诉我,我会发布它们。

答案4

改进代码的最好方法是......让你的代码不被执行。

尝试使用内存使用率低的 Web 服务器,lighttpd 或 nginx。

尝试让您的应用生成要提供的静态内容,并在更新完成后重新生成代码,这样您的网络服务器将尽其所能,提供静态内容,检查您的 html 中的标题和所提供的图像。

相关内容