您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

优化mysql in docker

bubuko 2022/1/25 19:58:34 mysql 字数 2299 阅读 750 来源 http://www.bubuko.com/infolist-5-1.html

原文:优化mysql in dockermysql优化有2个关键字 connection pool Thread cache 先简单说下docker + mysql 在docker里运行mysql性能计划没有什么区别, 只要别像我一样用snap安装docker 这样相当于又封了一层, 结果并发只能跑... ...
原文:优化mysql in docker

mysql优化有2个关键字
connection pool
Thread cache

先简单说下docker + mysql
在docker里运行mysql性能计划没有什么区别, 只要别像我一样用snap安装docker 这样相当于又封了一层, 结果并发只能跑3-4QRS
mysql有两个目录需要挂载:
/var/lib/mysql 里面保存数据库数据
/etc/mysql/ 里面保存着数据库配置的参数

比如最大连接数max_connections 默认是 151
show variables like ‘max_connections‘;

修改方式:

  1. 可以直接在数据库中临时修改, mysql重启后丢失

set GLOBAL max_connections=152;

  1. 在配置文件里修改并重启mysql
    配置文件在 /etc/mysql/my.cnf

比如想修改max_connections的话,
在[mysqld]下面添加 max_connections = 152

我没有首先修改max_connections因为默认是151, 但是并发起来200qps连接数只有10左右, 目前的瓶颈应该不是最大连接数的限制,
然后我再django setting 加上了数据库的连接池参数 , 默认为0 不使用连接池

online_database = {
‘default‘: {
‘ENGINE‘: ‘django.db.backends.mysql‘,
‘NAME‘: ‘DB_NAME‘,
‘USER‘: ‘root‘,
‘PASSWORD‘: ‘ddjjhkk‘,
‘HOST‘: ‘192.168.20.211‘,
‘PORT‘: ‘3306‘,
‘CONN_MAX_AGE‘: 60,
}
}

加上之后, 并发由原来的200qps 到了260-300
数据库连接数从10提高到了30-70
按照django 但进程处理一个请求需要2-3ms来算妙并发应该在300左右

连接池这方面也可以直接在mysql这边设置

提高的这50qps说明创建数据库连接浪费了一些资源.

mysql thread_handling 有3种
1 没用thread 好像
2 one-thread-per-connection (每有一个来自客户端的connection就使用一个thread进行处理)

  1. 线程池 (一个线程负责处理多个 connection) 好像

连接池

connection pool 是客户端的概念, Django的话使用CONN_MAX_AGE来使用连接池

Threads Cached: 处于缓存中可以使用的thread,
通过变量thread_cache_size 修改与查看, 默认为8好像

建议修改64 set global thread_cache_size=64;

对于mysql来说, 与客户端的connection跟服务端的thread创建都需要消耗资源, 应该避免过多的创建新资源。

connection 通过客户端的connection pool
thread 通过mysql端的 Thread cache

优化mysql in docker

原文:https://www.cnblogs.com/lonelyxmas/p/12677134.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶