mysql 访问量过大,造成链接不上的情况 10C

mysql 访问量过大,造成链接不上的情况
硬件:16核心CPU ,32G内存,100M带宽
软件,php5.6,+mysql 5.7
用途,接口调用
mysql 基本配置:

  [client]
#password   = your_password
port        = 3306
socket      = /tmp/mysql.sock

[mysqld]
binlog_cache_size = 192K
thread_stack = 384K
join_buffer_size = 4096K
query_cache_type = 0
max_heap_table_size = 1024M
port        = 3306
socket      = /tmp/mysql.sock
datadir = /www/server/data
skip-external-locking
performance_schema_max_table_instances=400
table_definition_cache=400
key_buffer_size = 512M
max_allowed_packet = 100G
table_open_cache = 1024
sort_buffer_size = 2048K
net_buffer_length = 8K
read_buffer_size = 2048K
read_rnd_buffer_size = 1024K
myisam_sort_buffer_size = 64M
thread_cache_size = 192
query_cache_size = 0M
tmp_table_size = 1024M

explicit_defaults_for_timestamp = true
#skip-networking
skip-name-resolve
skip-grant-tables
max_connections = 2800
max_connect_errors = 100
open_files_limit = 65535
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#log-bin=mysql-bin
#binlog_format=mixed
server-id   = 1
expire_logs_days = 10
slow_query_log=1
slow-query-log-file=/www/server/data/mysql-slow.log
long_query_time=3
back_log = 900
#log_queries_not_using_indexes=on

#loose-innodb-trx=0
#loose-innodb-locks=0
#loose-innodb-lock-waits=0
#loose-innodb-cmp=0
#loose-innodb-cmp-per-index=0
#loose-innodb-cmp-per-index-reset=0
#loose-innodb-cmp-reset=0
#loose-innodb-cmpmem=0
#loose-innodb-cmpmem-reset=0
#loose-innodb-buffer-page=0
#loose-innodb-buffer-page-lru=0
#loose-innodb-buffer-pool-stats=0
#loose-innodb-metrics=0
#loose-innodb-ft-default-stopword=0
#loose-innodb-ft-inserted=0
#loose-innodb-ft-deleted=0
#loose-innodb-ft-being-deleted=0
#loose-innodb-ft-config=0
#loose-innodb-ft-index-cache=0
#loose-innodb-ft-index-table=0
#loose-innodb-sys-tables=0
#loose-innodb-sys-tablestats=0
#loose-innodb-sys-indexes=0
#loose-innodb-sys-columns=0
#loose-innodb-sys-fields=0
#loose-innodb-sys-foreign=0
#loose-innodb-sys-foreign-cols=0

default_storage_engine = InnoDB
innodb_data_home_dir = /www/server/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /www/server/data
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 512M
innodb_log_buffer_size = 128M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 100
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 16
innodb_write_io_threads = 16

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

一旦并发量有点大,可能会有一个查询阻塞,就会造成链接不上数据库或者php报错:
connect() to unix:/tmp/php-cgi-56.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client:
,问题应该在于数据库这边,数据库是独立的服务器,web有web的服务器,访问走的内网,不占用带宽。

0

6个回答

https://blog.csdn.net/jiedushi/article/details/6015262
MySQL高效处理大量并发的数据库连接方法

0

检查当时的数据库联接数量,是否已经达到你参数里设置的2800,如果已经达到,那么说明连接已经满了,想办法增加最大连接数量。
观察当时cpu 内存的使用量,看看是否因为cpu繁忙导致处理延时而连接不上。
日志里应该有一些信息可供参考。

0
zhangpan_soft
zhangpan_soft 回复qq_29339727: mysql好像最大连接数是3000吧?总之不是你设置多大就是多大,有个上限的,可能已经超过你的mysql本身最大上限,为什么不做读写分离和集群呢?
10 个月之前 回复
qq_29339727
背背山上的小和尚 恩,看到是连接数满了,但是我临时设置到10万,好像还是会报错,并且出现数据库连接不上的错误,CPU 和内存远远没有吃满,CPU 最高才占了30%,内存就更少了,25%
10 个月之前 回复

数据库的硬件配置挺好的,应该是企业生产环境下数据库配置。我谈一下我的思路首先上层应用应该是做了负载均衡会消耗很多连接还有其他的离线计算、定时任务等,所以我建议:
1、首先检查一下连接该数据库应用实例有哪些?每一个实例连接数有多少?这个很关键,一般来说公司规模变大,应用负载均衡添加,再加上离线计算统计分析,这些都会消耗数据库连接数,所以建议先排查一下应用。
2、如果应用连接数配置都正常,建议查找数据库的慢SQL,如果sql质量都很好,哪怕连接数很多也没什么大问题。
3、针对innodb的配置我感觉有些问题,建议去https://tools.percona.com/dashboard生成mysql配置,这样会好很多

0
qq_29339727
背背山上的小和尚 兄弟,这个生成的配置靠谱么
10 个月之前 回复

我贴一个8C16G机器的配置:

# Generated by Percona Configuration Wizard (http://tools.percona.com/) version REL5-20120208
# Configuration name server-28 generated for 1479338858@qq.com at 2017-08-25 12:21:13

[mysql]

# CLIENT #
port                           = 3306
socket                         = /abc/mysql.sock

[mysqld]

# GENERAL #
user                           = mysql
default-storage-engine         = InnoDB
socket                         = /abc/mysql.sock
pid-file                       = /abc/mysql.pid

# MyISAM #
key-buffer-size                = 32M
myisam-recover                 = FORCE,BACKUP

# SAFETY #
max-allowed-packet             = 16M
max-connect-errors             = 1000000

# DATA STORAGE #
datadir                        = /abc/

# BINARY LOGGING #
log-bin                        = /abc/mysql-bin
expire-logs-days               = 14
sync-binlog                    = 1

# REPLICATION #
relay-log                      = /abc/relay-bin
slave-net-timeout              = 60

# CACHES AND LIMITS #
tmp-table-size                 = 32M
max-heap-table-size            = 32M
query-cache-type               = 0
query-cache-size               = 0
max-connections                = 500
thread-cache-size              = 50
open-files-limit               = 65535
table-definition-cache         = 4096
table-open-cache               = 4096

# INNODB #
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-log-file-size           = 256M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 12G

# LOGGING #
log-error                      = /abc/mysql-error.log
log-queries-not-using-indexes  = 1
slow-query-log                 = 1
slow-query-log-file            = /abc/mysql-slow.log

0
weixin_37893887
玄尺 回复qq_29339727: 这个配置是靠谱的,我们服务器一主三从,经过压测测试考验过的。但是生产环境的配置不是上面的配置,可以参考一下。你配置的innodb的缓存太小了,会影响查询性能
10 个月之前 回复
qq_29339727
背背山上的小和尚 最高一次性,能承受多大的压力?
10 个月之前 回复
qq_29339727
背背山上的小和尚 你的这个性能怎么样,并发量大的时候会不会出现问题?
10 个月之前 回复

设置下最大连接用户 希望帮你解决

0
qq_36546907
不忘初心方得始终小飞哥 回复qq_29339727: 设置了最大 还要看看io是否支持,考虑下io
10 个月之前 回复
qq_29339727
背背山上的小和尚 我设置过了,将最大连接数设置到10万,都不起作用
10 个月之前 回复

经过一轮测试:高并发的情况下,会造成数据库连接不上,

0
qq_29339727
背背山上的小和尚 回复weixin_37893887: 优化哪些方面呢
10 个月之前 回复
weixin_37893887
玄尺 这是很正常的情况,这说明数据库已经成为当前的瓶颈。两个建议:1、要求上层应用限流;2、数据库优化
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MYSQL 连接数过多造成挂掉
MYSQL 配置文件 写道 user = mysql port = 3306 socket = /tmp/mysql.sock basedir = /usr/local/mysql datadir = /usr/local/mysql/data open_files_limit = 3072 back_log = 200 max_connections
mysql 连接长时间不访问失效问题
show variables like '%timeout';---查看服务器超时设置 使用连接池的时候 mysql默认一个连接失效时间是8小时 但是如果8小时不用连接池以为连接有效 实际mysql那边连接已经失效 所以会报错: 解决办法可以设置超时时间长一点 比如3天什么的 set wait_timeout=259200;
外网连接不到Mysql
最近在亚马逊云主机上安装MySQL,想远程访问,结果无论如何都访问不了。在踩了若干坑之后,终于访问成功了,在此做一下记录:EC2上安装了MySQL后如何开启远程访问。一、遇到的问题想远程访问EC2上的MySQL,总提示: ERROR 2003 (HY000): Can't connect to MySQL server on 'xx.xx.xx.xx' (111) 或者 Host 'xx.xx.x...
JSP在tomcat服务器下无法连接MySql问题解决方法
我连的是MySQL数据库,但是在服务器下运行jsp文件时会出现如下的状况: 控制台报错:com.mysql.jdbc.Driver  即不能找到驱动程序,通过我的一次次试验,终于得到解决 首先我的代码编写是没有问题的,而且我已经在eclipse下的jar库中导入了jdbc驱动文件。直接运行java应用程序   运行java应用程序,结果如图所示,成功连接上数据库并打印输出了teach
MySQL:记录数多(数据量大)时可能引起的问题
The total number of locks exceeds the lock table size.   感觉innodb引擎的表读取速度不如myisam… 于是我要把innodb的数据全部导入myisam的表。   insert into t_data_myisam (select * from t_data_innodb);   运行了一段时间以后,数据库报错:The t...
MYSQL数据库连接偶尔连不上,几秒后又自动恢复
MYSQL数据库连接偶尔连不上,几秒后又自动恢复
windows平台连接mysql数据库异常(数据量过大)
错误代码如下 org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74) at org.hibernate.excep...
mysql 远程客户端链接不上,开启远程客户端访问权限
今天在Linux上面装完MySQL,却发现在本地登录可以,但是远程登录却报错Host is not allowed to connect to this MySQL server这个错误,其实就是我们的MySQL不允许远程登录,所以远程登录失败了,解决方法如下:在装有MySQL的机器上登录MySQL mysql -u root -p密码执行use mysql;执行update user set h...
mysql客户端连接不上,但是网页端的可以
需要进入网页端执行sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;
MySQL外网连接不上
遇到如上问题,一直以为是root帐号没有远程访问的权限。 可是修改了user表里面的root的Host为%并没有暖用。 找了很久原因,用netstat -tunlp命令看了下监听的端口情况 发现: tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      8954/mysqld
坚持#第275天~防止访问量过大导致mysql数据库挂掉了
不合理的地方在于MaxClients和MaxRequestsPerChild。MaxClients指定的是可以启动的APACHE进程数量上限,对于小内存的主机,这个设置(1024个)很容易把内存用光。 MaxRequestsPerChild指定的是每个APACHE进程可以处理的最多请求次数,达到次数之后这个进程就会退出,然后重新开启新的进程。这一点的意义在于,进程会出现内存泄露的问题,就是进程使用...
mysql 锁表的情况
mysql其实在我们使用的时候比较容易造成表被锁的情况,例如以下的几种方式 目前有表 test , 字段分别有 id,name,age show full PROCESSLIST 查询表的执行情况 1 查询时 mysql的innodb 支持for update 行级锁 select * from test where name='行锁' for update; 如果 nam...
解决因数据库一次查询数据量过大导致的内存溢出问题
刚开始接触项目的实习生,积累经验,欢迎交流 之前做项目,遇到过一次查询数据量过大而导致的内存溢出问题,找了很多办法一直未能实际解决问题, 今天又遇到了,经过前辈的指导,终于解决了问题!! 不过此方法只在DBug启动下有效
连接linuxmysql失败的解决
MySQL配置文件my.ini或my.cnf的位置1、Windows下MySQL的配置文件是my.ini,一般会在安装目录的根目录。2、Linux下MySQL的配置文件是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找。3、Linux用rpm包安装的MySQL是不会安装/etc/my.cnf文件的至于为什么没有这个文件而MySQ...
linux mysql外网连接不成功的可能原因
1. 开启mysql访问权限 mysql -hlocalhost -uroot -P3306 -p; use mysql; select * from user; grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; flush flush privileges; 2. 查...
MAC下MYSQL5.7.17连接不上的问题及解决办法
MAC下  mysql5.7.11无法连接的问题,安装时生成的密码,正确填写也不能连接。 具体表现为:Access denied for user 'root'@'localhost' (using password: YES) Step1: 苹果->系统偏好设置->最下边点MySQL 在弹出页面中 关闭mysql服务(点击stop mysql server); Step2
MySql-- linux下navicat for mysql无法连接问题解决方法
https://blog.csdn.net/q35445762/article/details/51011873
Mysql 插入数据库太大导致异常
之前由于公司业务需要,经常将几w,甚至几十w的手机号作为一条数据写入数据库 发现数据库出错,无法正常写入数据库 查询资料后发现最大可能的原因是 数据量超过了mysql默认允许的最大数据包大小 修改my.ini 增加一行 : max_allowed_packet = 70M 重启mysql服务 问题立马解决
MySQL设置远程访问【解决设置权限后仍然无法连接的情况】
最近在学习数据库,想要实现MySQL的远程访问,但是在网上查了好多资料,只是把mysql数据库中的localhost修改,然后修改权限,但是改完之后还是会出现 ERROR (2003) (HY000): Can’t connect to MySQL server on ‘xxx.xxx.xxx.xxx’ (111) 下面说一下我的全部设置流程。(以下全部操作都在需要被远程访问的MYSQL服务器...
Win10关于MySQL5.7版本连接失败问题
     MYSQL5.7(可能还有其他版本),在Win10中,不知其他电脑会不会,至少我的电脑是会的,默认MySQL服务关闭(MySQL57是我自己在安装MySQL时自定义的名,其余相同),如图       造成不管是什么程序,连接本地数据库都会连接失败,在确认代码无误后,尝试了很多网上的办法,最后在一个不知名的小角落发现这个解决方法,方法如下:     (1)Win10任务栏;(2)右...
linux上java项目链接不上mysql,本地测试无问题
错误部分信息: at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnectio java项目在win7上可以正常运行,部署到linux上启动不了错误部分截图如下: 排错的方式: 在错误中查看并无找不到mysql jar包问题,故分析认为c3p0出了问题,一直在c3p0上排错,浪费了一定的时间。
mysql远程可以链接,但是客户端链接不了的原因
今天遇到一个问题,mysql远程可以链接。但是用navicat客户端在链接的时候一直报错: access denied for user **@**”错误。大概意思就是没有权限。这个时候执行如下命令即可解决问题: mysql 安装好了,服务器登录都正常,在电脑输入正常账号密码登录连接时报错如下,意思是本地IP没有登录权限,root用户默认只能在localhost也就是只能在服务器登录,需要设置...
ubuntu安装mysql不能远程访问的大坑
用腾讯云安装的ubuntu镜像,按照网上的教程一步步安装好了mysql,用navicat远程连接,坑逼的是总是提示10061的错误连接不上,但是服务器上本地连接又可以连上。最后通过百度看csdn博客知道ubuntu默认只允许本地访问mysql,这是因为mysql的bind-address=127.0.0.1,要支持远程连接的话需要把bind-address改成0.0.0.0,网上都说在/etc/m
使用ssm项目对Mysql8进行访问的时候,出现连接失败和一些错误的解决办法
这时候首先要把mysql的驱动的版本号改为如下设置 <!-- 数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0...
Linux安装了mysql,访问不了mysql的问题解决办法
近段时间,花了75美刀,买了一个国外的服务器,搭建了好了基本的web环境后,就安装了一个WordPress博客系统给我弟用,使用过程中,有好几次没人动那个mysql,但是却出现了,mysql连接不上的错误,第一次使用的时候,遇到这个错误,没解决到,只能想到重装系统来解决。昨天是第二次遇到这个情况,感觉不能再这样暴力解决问题了,还有一方面的原因是,我弟在上面已经写好了几篇博客了,我这样重装会导致他的文
MySQL远程连接不上
MySQL本地可以连接但是远程连不上的问题,没有记录,今天在云上新申请的服务器上又遇到这个问题,记录一下解决过程。 1.排除网络或防火墙问题 先看是否能ping通远程服务器,ping 192.168.1.211,如果不可以就是网络问题。然后,检查端口是否被防火墙挡住了,telnet 192.168.1.211 3306,如果连接失败,配置防火墙。配置防火墙,开启3306端口 vi /etc/sysc
MYSQL连接数过大瞬间断开的解决办法
网站经常出现瞬间连不上MYSQL数据库的情况,查了大量资料,发现是微软的一个补丁引起的,即:KB967723 在添加删除程序里卸载掉,重启服务器即可! 解决办法: 打开注册表: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 在里面添加两项: 数值名称: MaxUserPort 值类型: D
mysql优化连接数防止访问量过高的方法
很多开发人员都会遇见”MySQL: ERROR 1040: Too many connections”的异常情况,造成这种情况的一种原因是访问量过高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力;另一种原因就是MySQL配置文件中max_connections值过小。 首先,我们来查看mysql的最大连接数: ? 1 2
mysql远程连接后本地连接不上
这种方式开启远程连接: mysql>updateusersethost='%'whereuser='root'; mysql>FLUSHRIVILEGES 开启远程连接后,本地就没有root@localhost了。 ERROR 1044 (42000): Access denied for user ''@'localhost' to databas...
docker安装mysql后Navicat链接不上的问题
一、docker拉取镜像 docker pull mysql (默认拉取最新版本的) 二、运行mysql docker run -p 3308:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql 容器名:mysql 密码:123456 三、查看是否运行 docker ps -a 四、查看启动日志 docker lo...
window下连接linux虚拟机里面的mysql连不上
mysql远程连接问题 Access denied for user 'root'@'192.168.1.13' (using password: YES) 1.13是你这台机器没有访问1.14的权限 root默认只有本机访问的权限,要通过其他机器访问,必须授权 GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTIFIED BY 'root'
阿里云ECS安装mysql无法远程连接问题
阿里云ECS MySQL无法远程连接,如果你试了网上所有的教程还是无法连接请看下面 首先要检查防火墙,这是最基本的,很多教程会提到,开启3306端口 检查阿里云服务器安全组,看一下是否开启3306的出入站规则,这个真的好坑,不知道什么时候阿里云linux服务器上还有这个东西了,印象中只在Windows server上有 通过工具连接有的时候还是连接不上,会提示跟SSL有关的,我是用IDEA和M
无法连接aws里的MySql
使用SSH tunnel远程连接aws里的MySql
用navicat链接不上ubuntu中的mysql服务器
用navicat链接不上ubuntu中的mysql服务器   1、介绍 自我电脑win7下的虚拟机崩溃后,就很少摆弄mysql了。昨天花了一晚上时间,用windows下的navicat软件连接ubuntu下的mysql服务器,怎么链怎么失败!网上找了各种方法,也是没有效果的,于是当晚放弃。   2、出错现象   3、尝试方法a          根据弹出的错误框,我上百度进行了
mac无法连接数据库
错误描述: 在终端输入,mysql -u root -p,然后输入密码 提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 解决办法: 先启动数据库服务:mysql.server start 再在终端输入:mysql -u...
mycat连接不上mysql数据库
1:首先查看schema.xml中数据库地址和数量是否配置正确 2:查看mycat.log日志看具体什么错误。个人报错  can't connect to mysql server ,errmsg:Host '192.168.100.196' is blocked because of many connection errors  具体意思是:太多错误连接导致被堵塞 原因:同一个ip...
Docker容器Mysql连接问题
wo cao 坑爹 :twisted: db 容器跑起来... [code="java"]docker run -d --name db dbrepos:version[/code] 不但要确保 db容器正常访问,而且要配置 etc/mysql/my.cnf 127.0.0.0 改成 0.0.0.0 并且需要 登录 [code="java...
腾讯云mysql数据库内网连接不上的问题
我的腾讯云主机是广州三区,买的数据库是广州四区的,在同一个区可以使用内网连接,可是我通过数据库的内网ip连接却连接不上,下面记录一下的问题解决的过程  1.建立主机的私有网络 由于我之前的主机一直没有建立私有网络,这样的话是无法通过内网连接其他的服务器的,至于怎么建立并切换私有网络,可以查看腾讯云的攻略快速搭建私有网络 2.开放对应连接端口 mysql数据库默认使用3306端口连接,我...
php 无法连接mysql8
1.找到配置文件,我 的配置文件在 /usr/local/etc/my.cnf,如果找不到可以使用find或者mysqld --help --verbose | less [mysqld] default_authentication_plugin=mysql_native_password character_set_server =utf8 重启mysql 2.更改ROOT用户的native_...
mysql客户端连接不上数据库
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; flush privileges; root 用户名 123456 密码 如果还无法登录就关闭系统防火墙 在linux关闭防火墙可以这样: 1. 重启系统生效  开启: chkc
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 nlp商学院收费情况 做机器学习加班情况