跳到主要内容

如何诊断和修复网站托管的CPU性能问题

本指南将向您展示如何提升网站托管的CPU性能并修复数据库问题,重点介绍解决低效脚本和优化查询的步骤,以实现更流畅的网站运行。Bluehost 在我们的共享服务器上使用CPU保护系统。

  • 什么是CPU保护
  • 如何排查性能问题?
  • 简单修复数据库问题的步骤
  • 高级修复数据库问题的步骤

什么是CPU保护

Bluehost 采用一套监控服务器资源(如CPU和内存)的系统。它确保共享服务器上的每个用户都能公平地获得系统资源,同时防止其他用户导致性能问题影响其他账户。该系统部署在我们的共享服务器上,以最大限度减少用户因其他用户问题而受到影响的可能性。如果发现某用户滥用服务器并影响其他客户,我们将识别该用户并采取纠正措施,有时这意味着暂停该用户。独立服务器和VPS服务器不具备此保护系统。 性能问题和账户暂停通常由以下原因引起:

  • 编码不良的PHP脚本,如多层嵌套循环或无限循环。
  • 主题、插件和附加组件(如果您刚添加了新组件,建议移除以确认是否该组件导致网站性能突然变慢)
  • 返回异常大量数据集的查询(例如,在响应服务器请求时,响应对象中包含10万条记录)
  • 由于缺乏适当索引,在非常大的数据集上执行复杂的聚合命令(如SUM和COUNT)导致查询执行时间过长。
  • 复杂且未优化的嵌套连接查询。
  • 执行大量批量命令的查询,如INSERT、UPDATE或DELETE——这类SQL调用比SELECT查询命令的资源消耗高10倍。
  • DDoS攻击
  • 占用过多内存的进程,如异常的cron作业
  • 过多的并发连接,如下载、FTP、IMAP或PHP连接

要查看服务器状态,请参考 Bluehost 服务器状态页面。

如何排查性能问题?

MySQL慢查询日志可以帮助确定哪些查询或脚本未优化。

  1. 登录您的 Bluehost 账户管理面板。

  2. 点击左侧菜单中的 Hosting

  3. 在托管详情页,点击 CPANEL 按钮。
    Bluehost Account Manager - Hosting Tab Details cPanel

  4. 您的 cPanel 将在新标签页打开。
    Bluehost Account Manager - Hosting Tab - Quick Links - cPanel button - cPanel Dashboard

  5. 找到名为 Files 的部分,点击 File Manager 图标。
    cPanel - Files section - File Manager

  6. 进入文件管理器后,左上角点击 Settings
    cPanel -  File Manager - Settings

  7. 在弹出窗口中勾选 Show Hidden Files,然后点击 Save
    cPanel -  File Manager - Preferences

  8. 在右侧找到名为 tmp 的文件夹并进入。
    cPanel -  File Manager - tmp folder

  9. 进入 tmp 文件夹后,找到名为 mysql_slow_queries 的文件夹并进入。
    cPanel -  File Manager - mysql_slow_queries folder

  10. 查找最近日期的文件,右键点击其中一个文件,选择 Edit

  11. 这将显示日志详情。查找 Query_time 超过2秒的日志。执行时间超过2秒的查询通常需要重构。

这些日志用于帮助排查未优化的数据库查询。定位问题查询和数据库后,通过重写查询、创建合适的数据库索引、修复损坏的数据库等方式进行优化。如果您不熟悉数据库编程,建议寻求网站开发者或程序员的帮助。
重要提示: 强烈建议您在操作数据库前备份数据库。

简单修复数据库问题的步骤

您可以对所有数据库中的所有表执行此优化流程。

修复数据库

您可以对所有数据库执行修复操作。

  1. 在 cPanel 中,向下滚动至 Databases 部分。
    cPanel - Databases Section
  2. 点击 MySQL Databases 图标。
    cPanel - Databases - MySQL Databases
  3. 在修复部分,选择一个数据库,然后点击 Repair Database 按钮。
    cPanel - Databases - MySQL Databases-Repair Database

您可以安全地对所有数据库执行检查和修复操作。

优化数据库

您可以尝试优化所有数据库。

  1. 在 cPanel 中,向下滚动至 Databases 部分。
    cPanel - Databases Section
  2. 点击 phpMyAdmin 图标。
    cPanel - Databases Section - phpMyadmin
  3. 在下一屏幕,从左侧列选择一个数据库。
    phpMyAdmin - Select Database
  4. 表格显示后,滚动到底部,勾选 Check all 复选框。
    phpMyAdmin - Check All table
  5. 使用复选框旁的下拉菜单,选择 Optimize 选项。
    phpMyAdmin - Check All table - Optimize Table

执行以上两个简单步骤不会损害您的重要数据,因为这些步骤属于非破坏性维护操作。但它们可能无法解决核心问题。例如,严重的数据损坏可能导致查询在完全执行前超时。数据损坏难以检测和修复。数据库损坏可能发生在数据库操作未完全成功时。部分数据是一种破坏参照完整性的损坏形式,可能导致您的网页应用失败。简言之,上述免费修复或优化流程可能不足以修复严重的数据库损坏。

高级修复数据库问题的步骤

  1. 您可以将网站下载到本地机器,创建本地网页开发环境进行测试。然后在脚本中设置断点,观察CPU性能,逐步调试堆栈和堆。也可以对查询进行压力测试,查看其负载响应。
  2. 您可以清空仅用于统计的表。当查看表时,可以看到每个表的条目数及占用的KB或MB大小。有时统计表会积累成千上万甚至数百万条记录,如记录网站搜索内容或登录用户等。如果统计表非常大,清除这些表中的记录可能有助于优化网站性能。

警告: 在执行此操作前,请务必咨询脚本供应商或网站开发者——删除数据库中的任何数据都可能导致网页应用崩溃。 3. 您可以重构脚本,使得重度聚合或计算不全部在服务器端进行。例如,重写脚本使用Ajax调用,让部分CPU计算在JavaScript中执行,利用客户端CPU资源,而非仅依赖服务器。 4. 您可以请求我们的团队恢复系统备份(如果我们有为您保存备份)。系统备份是某一日期网站性能的快照。恢复备份不能保证网站问题一定解决,因为核心问题可能在备份创建时已存在。恢复系统备份会还原所有网站,而非部分。欢迎联系我们确认是否有可用的系统备份。 5. 您也可以请求我们完全重置账户。这将删除账户上的所有内容,恢复到您首次注册时的空白状态,不包含任何文件、数据库、邮箱等。这样可以确保全新开始,重新安装脚本和数据库。如果考虑此选项,请先备份数据。

总结

本指南介绍了如何提升网站CPU性能及解决共享主机上的数据库相关问题。内容涵盖了Bluehost的CPU保护系统如何确保账户间资源公平使用,常见性能瓶颈原因,以及您可以采取的诊断和修复步骤。
您将学习如何使用MySQL慢查询日志定位未优化脚本,通过cPanel进行简单的数据库修复和优化,以及应用高级技术如重构查询、本地测试脚本和清理大型表。文章还强调了何时联系支持团队,寻求恢复备份或重置账户以获得全新开始的帮助。