如何提高网络上的MYSQL性能

时间:2011-08-16 23:46:28

标签: php mysql networking nginx replication

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

2 个答案:

答案 0 :(得分:1)

根据你的描述,在黑暗中做很多事情很难做,但这里有一些独立尝试的起点,这有望缩小原因:

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

如果由于远程主机导致的预期降级之外没有其他任何内容,那么请提供可重现的测试用例和完整的MySQL配置(包含敏感数据的编辑)。这将有助于熟练使用MySQL的人帮助您; )

答案 1 :(得分:0)

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

  1. 在应用中进行更多缓存。服务器不经常请求mysql。例如。使用 内存缓存。

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

  3. 使用mysql数据压缩。

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

  5. 萨满教调:

    • 确保没有什么能减慢mysql服务器上的网络:大型防火墙规则集,网络过滤器等。

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

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

    不要以为上述任何一项都有帮助 - 如果网络连接速度很慢,上述任何内容都不会显着加快速度。