Mysql显示不超过5个并发连接
Posted
技术标签:
【中文标题】Mysql显示不超过5个并发连接【英文标题】:Mysql show no more than 5 concurrent connection 【发布时间】:2016-06-01 04:29:26 【问题描述】:我正在我的全新服务器 Apache/php/mysql(Bitnami LAMP 堆栈。Php 7.0.3/MySQL 5.7.10)上执行一些负载测试。我在负载平衡器后面使用 AWS 和 1 个 EC2 实例。 目前我正在使用 loader.io 或 jmeter 进行测试。我正在测试一个执行此查询的非常简单的 API:
select *,sleep(0.5) from debug limit 1
我添加了 sleep(0.5) 是因为我想查看服务器在多个并发连接下的行为,但我发现了一个瓶颈:如果我运行“SHOW PROCESSLIST”,即使我有 10 个并发用户,我也只能看到 5 个进程。负载测试显示连接已排队,因为在测试期间响应时间从 500 毫秒增长到几秒(取决于测试的持续时间和并发用户的数量)。
我检查过
select @@max_connections
它是 151(默认值)。 max_user_connections 为 0。 我应该检查哪些其他参数来增加我的数据库上的并发连接数?
如果我对 5 个并发用户运行测试,每个用户都会在 500 毫秒内得到响应。如果我添加的并发用户比响应时间慢。
如果我在不访问数据库的 API 上运行负载测试,即使有 400 个并发用户也不会出现问题。
编辑:
使用 HTOP 进行监控我看到了:
任务:34、245 次; 2 运行
可能是这里的问题?
非常感谢
【问题讨论】:
您能否更详细地描述您的 PHP/MySQL 服务器?您使用的是什么网络服务器? Apache 模块、CGI、FCGI? 您如何运行并发测试?您是否尝试过延长睡眠时间以确保查询持续时间足够长? 只有在调试表中至少有一行数据时,该查询才会休眠。还要检查用户的 MAX_USER_CONNECTIONS 是否为零,因为它可以为每个用户设置。 我更新了描述。我正在使用 Apache。 “保证查询持续足够长的时间”是什么意思? @Steve: MAX_USER_CONNECTIONS 为 0 并且有 1 行数据。如果我用 5 个并发用户运行测试,每个用户都会在 500 毫秒内得到响应 【参考方案1】:有两个区域允许并发连接:
1.网络服务器
检查您的网络服务器允许的并发连接数。
见
-
The Secret To 10 Million Concurrent Connections -The Kernel Is The Problem, Not The Solution
How many socket connections can a web server handle?
How do you increase the max number of concurrent connections in Apache?
How to optimize apache web server for maximum concurrent connections or increase max clients in apache
明智地选择您的网络服务器以处理更多并发连接。
2。数据库和打开文件
检查您的 MySQL 数据库是否能够处理来自 WebServer PHP 的最大并发连接数。
将max_connections 设置为更高的值。
set global max_connections := 800;
同时检查您的操作系统的 open_files_limit。在 linux 上,默认情况下,您的进程限制为 1024 个文件。这是非常低的,因为每个线程、连接,当然还有文件——在 linux 中都为一个文件句柄。因此,请将 open_files_limit 设置为某个大数字(例如 10000)以清除您与操作系统的许多连接。
【讨论】:
【参考方案2】:解决方案其实很简单:
我使用的Bitnami LAMP栈是用PHP-FPM配置的,所以配置不是在apache端而是在php/etc/common.conf
pm=ondemand
pm.max_children=5
pm.start_servers=2
pm.min_spare_servers=1
pm.max_spare_servers=3
增加pm.max_children=5
解决了这个问题。
【讨论】:
所以问题与我的回答中提到的 Web 服务器有关。感谢您为您的问题写出详细的根本原因。 顺便说一句,您仍然可以接受我的回答并奖励我指向解决方案的赏金。无论如何,你不会得到赏金。见How does accepting an answer work?以上是关于Mysql显示不超过5个并发连接的主要内容,如果未能解决你的问题,请参考以下文章