Navicat使用常见的两个问题及解决方法,提高开发效率

Navicat使用常见问题

在我们日常开发过程中,一般不会直接使用命令行来操作 MYSQL 数据库,而会选择一些图形化界面去帮助我们来进行此类操作,常用的有:SQLyog(Logo也是小海豚),Navicat,或者直接使用编辑器自带的图形化界面工具。我这边开发使用的是 Navicat,在日常使用的时候出现过一下的问题:

Too Many Connections - 1040

在 Navicat 的界面中,这是一个很讨人厌的提示框,多人协作开发的时候经常出现。原因有二:

一是 Mysql 数据库的默认最大连接数是:100,

二是 对于多人开发的单体项目来说,虽然我们同时在用的连接不会超过10个,理论上100 绰绰有余,但是除了我们正在使用的连接以外,还有很大一部分 Sleep 的连接,这个才是真正的罪魁祸首。

分析到了问题的根源,我们就需要对症下药,依次解决:

修改 Mysql 最大连接数量

首先查看当前 Mysql 最大连接数量是多少:

show variables like '%max_connections%';

这里我已经修改过了,所以是 1000,没有改过的童鞋应该还是 100,

然后查看从这次 mysql 服务启动到现在,同一时刻并行连接数的最大值:

show status like 'Max_used_connections';

对于 Mysql 的最大连接数设置,在首次配置的时候设置一个较大的数值,以后在使用的过程中,周期的查询 Max_used_connections 然后根据他的值和服务器的性能确定一个最适合当前项目的最大连接数

最大连接数的修改有两种方式

  1. 使用 sql 语句(立即生效,但服务器重启后失效):
set global max_connections = 1000;

  1. 修改 /etc/my.cnf.添加 max_connections = 1000 永久有效。重启后生效

但更改最大连接数只能从表面上解决问题,随着我们开发人员的增多,Sleep 连接也会更多,到时候万一又达到了 1000 的上限,难道我们又得改成 10000 吗?这显然是非常不可取的。所以我们不仅要治标,还要治本。杀掉多余的 Sleep 连接就是治本

杀掉Sleep连接

我们可以通过 show_processlist 命令来查看当前的所有连接状态

可以发现, Sleep 的连接占了绝大多数。

Mysql 数据库有一个属性 wait_timeout 就是 sleep 连接最大存活时间,默认是 28800 s,换算成小时就是 8 小时,我的天呐!这也太长了!严重影响性能。相当于今天上班以来所有建立过而未关闭的连接都不会被清理。

执行命令:

show global variables like '%wait_timeout';

我们将他修改成一个合适的值,这里我改成了 250s。当然也可以在配置文件中修改,添加 wait_timeout = 250。这个值可以根据项目的需要进行修改,以 s 为单位。我在这里结合 navicat 的超时请求机制配置了 240s。

执行命令:

set global wait_timeout=250;

这样,就能从根本上解决 Too Many Connections 的问题了

正在准备...

我们在使用 Navicat 的时候,有时候查询完一次数据之后,就去编写代码,等下次回来的打开表的时候就会出现:正在准备... 等字样,这次查询可能会消耗 20s 以上的时间,这是不能容忍的。

这个时候我们就需要想办法解决他了,首先我想到的是 mysql 的 connection 连接被清理了,通过复现 正在准备... 并同时在 linux 通过 show processlist 命令查看连接状态发现,并不是。这个请求在正在准备的前10几秒并没有和 mysql 建立connection 连接。

那么我分析可能是 navicat 和数据库服务器之间的通信连接断掉了导致了,而根据 navicat 文档说明,在连接高级设置这里有一个保持连接间隔(官方文档-通过 ping 来保持连接。你可以在编辑框中设置 ping 与 ping 之间的间隔)的时长配置:将其设置成 240s。这样每过240s,软件就会像服务器发送心跳请求,以保证连接不被断开。这样我们就不会出现正在准备。。。等字样了

原文地址:https://www.cnblogs.com/keatsCoder/p/11631255.html

时间: 2024-11-07 07:09:02

Navicat使用常见的两个问题及解决方法,提高开发效率的相关文章

WebLogic12.1.1中跨域问题的探讨以及几种常见中间件中跨域问题的解决方法

1.问题描述 扬州现场中最开始安装了中间件WebLogic12.1.1版本,按照公司之前解决WebLogic12的方法,我们在中间件中发布了一个虚拟路径为/,根目目录文件为root的服务. 这个root文件中包含的文件如下: 在程序启动发起跨域访问时,出现了下面这个问题: 如图可见,我们虽然可以访问到crossdomain.xml,并且能得到里面的完整内容,可是程序无法走下去,后面Flash端的跨域访问无法被触发. 2.解决思路 2.1是否是crossdomain.xml内容不对 不同的Flas

如何使用mysql(lamp)分离环境搭建dedecms织梦网站及apache服务器常见的403http状态码及其解决方法

一.实验环境 centos6.5+mysql5.5.32+php5.3.27 软件:DedeCMS-V5.7-GBK-SP1 本实验是使用lamp环境搭建,但mysql数据库与之分离,本实验成功的关键在于防火墙及其selinux关闭的前提下实现. 二.实验步骤 1)下载产品,并解压至www目录内 wget -O /home/chen/tools/  http://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7-GBK-SP1.tar.gz

Oracle常见死锁发生的原因以及解决方法

Oracle常见死锁发生的原因以及解决办法 一,删除和更新之间引起的死锁 造成死锁的原因就是多个线程或进程对同一个资源的争抢或相互依赖.这里列举一个对同一个资源的争抢造成死锁的实例. Oracle 10g, PL/SQL version 9.2 CREATE TABLE testLock(  ID NUMBER, test VARCHAR(100)  ) COMMIT INSERT INTO testLock VALUES(1,'test1'); INSERT INTO testLock VAL

常见的浏览器兼容问题和解决方法

为什么会有兼容问题? 由于市场上浏览器种类众多,而不同浏览器其内核亦不尽相同,所以各个浏览器对网页的解析就有一定出入,这也是导致浏览器兼容问题出现的主要原因,我们的网页需要在主流浏览器上正常运行,就需要做好浏览器兼容. 使用Trident内核的浏览器:IE.Maxthon.TT: 使用Gecko内核的浏览器:Netcape6及以上版本.FireFox: 使用Presto内核的浏览器:Opera7及以上版本: 使用Webkit内核的浏览器:Safari.Chrome. 而我现在所说的兼容性问题,主

Tomcat常见的内存溢出,以及解决方法

一.常见的三种内存溢出错误: 1.java.lang.OutOfMemoryError:java heap space    ====JVM Heap(堆)溢出 JVM再启动的时候回自动设置JVM Heap的值,其初始化空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存. 可以利用JVM提供的-Xmn -Xms -Xmx等选项进行设置. Heap的大小是Young Genration和Tenured Generaion之和. 在JVM中如果98%的时间是用于GC,且可用

移动端前端笔记 — 遇到的常见JS与CSS问题及解决方法

笔者接触移动前端快一年了,特将平时的一些笔记整理出来,希望能够给需要的人一些小小的帮助.同时也由于笔者的水平有限,虽说都是笔者遇到过使用过的,但文中可能也会出现一些问题或不严谨的地方,望各位指出,不胜感激! 一. css部分 body如果设置height:100%;overflow:hidden是依然可以滑动的,如果需禁止,要再加一层div设置 height:100%加overflow:hidden(html,body加height:100%) ,这样元素超出body的高度也不能滑动了.或者同时

常见小票打印机打印故障及解决方法汇总视频教程

通过对"常见小票打印机故障及解决方法汇总视频教程"课程学习,达到以下目的:1.可以独立自主安装打印机驱动以及安装打印机硬件设备 2.可以独立自主排除常见打印机故障学习教程 常见小票打印机故障:[小票打印机不打印故障]1.电脑系统参数设置不正确导致小票打印机不打印故障2.端口不正确导致不打印故障3.属性参数不正确导致不打印故障4.红灯一直闪烁不打印故障5.打印机图标突然消失不打印故障6.默认打印机不正确不打印故障 [虽然打印,但是打印不正常]1.虽然打印,但是打印的字挤压在一起,显示不正

Navicat for mysql远程连接数据库详(1130错误解决方法)

用Navicat for mysql连接数据库测试下连接 如果出现1130错误错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server论坛上有些朋友说关掉防火墙就好了(其实不是防火墙的问题)是无法给远程连接的用户权限问题接下来我们解决这个问题用xshell登录服务器 在执行下登陆命令mysql -u root -p 弹出Enter password:输入您的数据库密码 执行下

iOS常见崩溃情况以及bug调试解决方法

本博客会不定期更新,将我在项目中常见的崩溃情况进行整理后分享给大家: 1.unrecognized seletor.错误:这种情况很简单,给一个对象发送了一条它不认识的消息.比如说你的.h中声明了某一个方法,但是.m中却没有实现,而且你没有对异常消息处理(消息转发)就会造成这种现象.解决办法:首先排查自己的某一些方法是否实现,其次看一下哪些对象接收了它不该接收的消息. 2.index 1 beyond NSArraMu [0,0]数组越界:数组越界这个不多说. 3.NSNul length 这个