【问题标题】:How to improve MYSQL performance on a network如何提高网络上的 MYSQL 性能
【发布时间】:2011-10-28 12:36:30
【问题描述】:

我们的数据库服务器与我们的网络服务器分开。数据库服务器被复制(我们知道这里有开销)。然而,即使关闭了复制,PHP 脚本中大量查询的性能也比我们在同一台机器上拥有 db 和 apache 的登台服务器慢 4 倍。我意识到网络延迟和其他网络问题意味着它们不可能相等,但我们的生产服务器功能呈指数级增长,我们的生产网络都在千兆交换机上。我们已经尽我们所能调整了 MYSQL,但性能标记仍然慢了 4 倍。我们在 nginx 上运行 Apache 代理和复制的 MYSQL 数据库。 UCarp 也在运行。对于需要改进性能的领域有哪些建议?如果生产速度慢两倍,我会很高兴。

【问题讨论】:

  • 这对于外部人员来说很难诊断和提出建议,可能值得雇佣一个预期的承包商几个小时。

标签: php mysql networking nginx replication


【解决方案1】:

鉴于您的描述,除了在黑暗中刺伤之外,很难做更多的事情,但这里有一些独立尝试的起点,希望能缩小原因:

  • 将暂存数据库移至另一台主机
  • 将暂存主机添加到生产池并删除其他主机
  • 分析您的 PHP 脚本以确保它是导致延迟的查询
  • 使用单独的 MySQL 服务器而不是通过负载平衡器
  • 测量从 MySQL 客户端对生产池和登台服务器的单个查询
  • 在您的 Web 服务器和数据库集群之间运行 netperf
  • 使用 [gb]prof 配置 Web 服务器
  • 使用 [gb]prof 分析接收查询的 MySQL 服务器

如果这些都没有说明由于远程主机导致的预期性能下降,那么请提供一个可重现的测试用例和您的完整 MySQL 配置(敏感数据已编辑)。这将有助于更熟练的 MySQL 人员为您提供帮助; )

【讨论】:

    【解决方案2】:

    并非网站上的每个 Web 请求(如果设计得当)都需要 mysql 连接。最有可能的是,如果您在每个 http 请求上都需要连接,那么您的应用程序将无法扩展并且很快就会开始出现问题。

    1. 在应用程序中进行更多缓存。服务器请求 mysql 的频率较低。例如。采用 内存缓存。

    2. 尝试使用从应用程序到 mysql 服务器的持久连接。

    3. 使用mysql数据压缩。

    4. 缩小数据(限制您的选择,在选择语句中使用列名而不是“*”)

    萨满调音:

    • 确保没有任何东西会降低 mysql 服务器的网络速度:大型防火墙规则集、网络过滤器等。

    • 为应用添加另一个(客户端无法访问)网络接口。服务器 和mysql服务器。

    • 调整应用程序之间的网络连接。服务器和mysql。有时你 可以通过创建硬编码的网络路由来赢得几毫秒。

    不要认为以上任何方法都有帮助 - 如果网络连接速度很慢,以上任何方法都不会显着加快速度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多