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

目前,它没有设置…这是一个运行Apache,PHP和MySQL的Debian机器。 确定此设置的最佳值的最佳方法是什么? 奖励积分,如果你还可以详细说明如何处理web应用程序的conecttions …

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

在Apache上使用mod_php时,假设你使用的是持久连接(如果你使用的是普通的旧MySQL API,则使用mysql_pconnect ),那么你应该在MySQL中设置max_connectionst来为你的应用程序设置尽可能多的并发请求,对于pipe理等 – 所以如果你期望在Web应用程序上有500个并发请求,那么我将max_connection设置为550或600。

请注意几件事情:

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

  2. 并发请求不是每秒请求数:它是在任何给定时刻在应用程序上运行的请求数,无论每个请求的速度如何。 例如,假设每秒钟有1000个请求的持续负载,并且如果每个请求都需要半秒的时间由应用程序处理,那么您有500个并发请求:每个Apache工作者每秒处理2个请求,您只需要500工作人员每秒处理1000个请求。

确定的方法是收集与穆宁或仙人掌的指标,并根据历史数据给自己一点点的缓冲(无论历史最大值是25-50%)。

MySQL不处理与任何其他客户端不同的Web应用程序的连接。 主要区别在于,在Web应用程序中,连接通常只在服务器需要处理特定页面(除非使用连接池)的情况下才能连接。 因此,Web应用程序使用很多非常短暂的连接(而桌面应用程序使用很less的长连接)。

默认值通常是一个很好的起点。 然后,您可以使用MySQLAdministrator监视实际存在的连接数。 这提供了所有活动连接的列表(在“服务器连接”下)以及显示(默认情况下)连接使用,stream量和查询数量(在“健康”,第一个标签下)的图表。 这些graphics是高度可configuration的,只需右键单击其中一个并探索。

当你看到连接使用的graphics朝着max_connections级别蠕变时,你将不得不作出一些决定(我有足够的内存用于更多的连接吗?我应该增加吗?是否需要另一台服务器)。 很明显,其他因素也在这里起作用,例如硬件是否可以升级,整体服务器的性能和优化。