Mysql显示不超过5个并发连接

标签 mysql performance testing load-testing

我正在我全新的服务器 Apache/PHP/Mysql(Bitnami LAMP 堆栈。Php 7.0.3/MySQL 5.7.10)上执行一些负载测试。我在 loadBalancer 后面使用带有 1 个 EC2 实例的 AWS。 目前我正在使用 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监控我看到:

Tasks: 34, 245 thr; 2 running

可能是这里的问题?

非常感谢

最佳答案

有两个区域允许并发连接:

<强>1。网络服务器

检查您的网络服务器允许的并发连接数。

  1. The Secret To 10 Million Concurrent Connections -The Kernel Is The Problem, Not The Solution
  2. How many socket connections can a web server handle?
  3. How do you increase the max number of concurrent connections in Apache?
  4. How to optimize apache web server for maximum concurrent connections or increase max clients in apache

明智地选择您的 Web 服务器以处理更多并发连接。

<强>2。数据库和打开文件

检查您的 MySQL 数据库是否能够处理来自 WebServer PHP 的最大并发连接数。

设置max_connections到更高的数量。

set global max_connections := 800;

同时检查您操作系统的 open_files_limit。在 Linux 上,您的进程默认限制为 1024 个文件。这是非常低的,因为每个线程、连接,当然还有文件——在 Linux 中构成一个文件句柄。因此,将 open_files_limit 设置为某个较大的数字(例如 10000)以清除您与操作系统的许多连接。

关于Mysql显示不超过5个并发连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35508031/

相关文章:

javascript - jQuery 代码失败(在所有浏览器上)

mysql:在事件日志中查找开始结束时间 - 按 session 时间分组

css - * css 选择器的实际性能影响是什么?

testing - 如何使用 Cucumber 测试 JQuery UI Sortable

mysql - 从表中选择行并从其他表中选择其他数据(如果存在)

php - "SQLSTATE[42000] [1044] Access denied for user ' 团队 '@' 本地主机 ' to database ' 我的数据库 ''

java - 最佳实践——异常处理

mysql - 使用校验和比较多列上的两个表?

jquery - 如何使用 qUnit 的设置方法创建可用于模块内所有测试的对象/变量?

testing - 从命令行运行时,运行 Mocha 测试(记者 html)的 Backbone Js 挂起