我应该如何确定 Web 服务器上 mysql 的正确 max_connections 值?

我应该如何确定 Web 服务器上 mysql 的正确 max_connections 值?

目前,它没有设置任何内容...它是一台运行 apache、php 和 mysql 的 debian 机器。确定此设置的最佳值的最佳方法是什么?如果您还能详细说明 mysql 如何处理 Web 应用程序的连接,则可以获得加分...

答案1

如果没有明确设置max_connections设置,那么它将被设置为默认值,我认为是151。

当在 Apache 上使用 mod_php 时,假设您正在使用持久连接(mysql_pconnect如果您使用普通的旧 MySQL API 则使用),那么您应该max_connections在 MySQL 中将应用程序的并发请求数设置为您期望的数目,并为管理等保留一些 - 这样,如果您预计在 Web 应用程序上有 500 个并发请求,那么我会将 max_connection 设置为 550 或 600 之类的值。

请注意以下几点:

  1. 并发请求不是用户:如果有 1000 个用户登录到网站,并且每个用户每 10 秒点击一次,那么您可能只有 100 个并发请求(或更少 - 请参阅下一点)。

  2. 并发请求数不是每秒请求数:它是应用程序在任何给定时刻的实时请求数,无论每个请求的速度有多快。例如,假设每秒的恒定负载为 1000 个请求,并且如果应用程序需要 0.5 秒来处理每个请求,那么您就有 500 个并发请求。如果每个 Apache 工作程序每秒处理 2 个请求,则您只需要 500 个工作程序即可每秒处理 1000 个请求。

答案2

确定的方法是使用 Munin 或 Cacti 收集指标,并根据历史数据给自己一点缓冲(25-50%,无论历史最大值是多少)。

答案3

MySQL 处理 Web 应用程序的连接的方式与处理其他客户端的连接的方式并无不同。主要区别在于,Web 应用程序中的连接通常仅在服务器需要处理特定页面时才有效(除非您使用连接池)。因此,Web 应用程序使用大量非常短暂的连接(而桌面应用程序使用少量长寿命连接)。

通常,默认值是一个很好的起点。然后,您可以使用 MySQLAdministrator 监视实际处于活动状态的连接数。这将提供所有活动连接的列表(在“服务器连接”下),以及显示(默认情况下)连接使用情况、流量和查询数量的图表(在“健康”下,第一个选项卡下)。这些图表是高度可配置的,只需右键单击其中一个并进行探索即可。

当您看到连接使用率图表逐渐接近 max_connections 水平时,您必须做出一些决定(我是否有足够的 RAM 来容纳更多连接?我应该增加吗?我是否需要另一台服务器)。显然,其他因素也在这里发挥作用,例如是否可以升级硬件,以及整体服务器性能和优化。

相关内容