解决SpringBoot 链接mysql 时出现 0秒后返回数据报错(mysql参数调优,win服务器tcp调优)错误笔记记录

在项目部署之后,每次在第二天早上就出现tomcat种SpringBoot项目链接不上数据库 0秒后返回数据的错误。重启服务器后就能连上了。(老折磨人了,每天白天上课都要看着服务器,希望别死......)历经磨难终于解决了/(ㄒoㄒ)/~~

第一种情况

网络链接问题,比如断网,内外网的情况。

第二种情况 也是网上回答最多的情况

在保证能ping同不是网络问题之后。

可能会是mysql会将连接池中好久没用的连接断开 而连接池不知道连接断开 就出现连接不上mysql数据库 0秒后返回数据连接断开的情况mysql默认时间为8小时 所以经常会出现早上就不好使的情况

在mysql配置文件my.ini中调大这两个属性。

linux和windows服务器的最大参数不一样 这里为linux最大值

wait_timeout=31536000

interactive_timeout=31536000

这里再给一下mysql基本的参数调优 附带解释和所查询的博客

[mysqld]
#table_cache=1024                      
#innodb_additional_mem_pool_size=4M
innodb_flush_log_at_trx_commit=0
#0 log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。
#1 每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认。
#2 每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。
innodb_log_buffer_size=2M  
#这个参数设置 InnoDB 用来往磁盘上的日志文件写操作的缓冲区的大小。这有点像 Oracle 的 log_buffer ,通过内存缓冲来延缓磁盘 I/O 以提高访问的效率。 因为 MySQL 每秒都会将日志缓冲区的内容刷新到日志文件,因此无需设置超过 1 秒所需的内存空间。通常设置为 8 ~ 16MB 就足够了,默认值是 1MB 。
innodb_buffer_pool_size=8GB
# https://blog.csdn.net/weixin_41782053/article/details/87269158 怎么设置最佳内存帖子
# innodb_buffer_pool_size这个参数一般设成物理内存的70%-80%,
innodb_thread_concurrency=8  
#你的服务器CPU有几个就设置为几,建议用默认一般为8
key_buffer_size=128M
# 为了最小化磁盘的 I/O , MyISAM 存储引擎的表使用键高速缓存来缓存索引,这个键高速缓存的大小则通过 key-buffer-size 参数来设置。如果应用系统中使用的表以 MyISAM 存储引擎为主,则应该适当增加该参数的值,以便尽可能的缓存索引,提高访问的速度。
read_buffer_size=4M
# (数据文件存储顺序)是MySQL读入缓冲区的大小,将对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区,read_buffer_size变量控制这一缓冲区的大小,如果对表的顺序扫描非常频繁,并你认为频繁扫描进行的太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能,read_buffer_size变量控制这一提高表的顺序扫描的效率 数据文件顺序。
# https://blog.csdn.net/wei_wenbo/article/details/50817692
read_rnd_buffer_size=16M
# 是MySQL的随机读缓冲区大小,当按任意顺序读取行时(列如按照排序顺序)将分配一个随机读取缓冲区,进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要大量数据可适当的调整该值,但MySQL会为每个客户连接分配该缓冲区所以尽量适当设置该值,以免内存开销过大。表的随机的顺序缓冲 提高读取的效率。
# https://blog.csdn.net/wei_wenbo/article/details/50817692
sort_buffer_size=32M
# 通过虑增加sort_buffer_size 来加速ORDER BY 或者GROUP BY 操作,不能通过查询或者索引优化的。
max_connections=2048
# 它是用来限制用户资源的
# https://blog.csdn.net/bigtree_3721/article/details/73129091
thread_cache_size=120
# :当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)即可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能。
# https://blog.csdn.net/hll814/article/details/50764666
query_cache_size=64M
# MySQL查询缓存保存查询返回的完整结果。当查询命中该缓存,会立刻返回结果,跳过了解析,优化和执行阶段。 查询缓存会跟踪查询中涉及的每个表,如果这写表发生变化,那么和这个表相关的所有缓存都将失效。 但是随着服务器功能的强大,查询缓存也可能成为整个服务器的资源竞争单点。 
# https://blog.csdn.net/u014044812/article/details/78924315
max_allowed_packet = 4M  
thread_stack = 256K   
join_buffer_size = 8M  
tmp_table_size = 256M  

log-error="C:/ProgramData/MySQL/MySQL Server 5.7/log/error.log"
#log="C:/ProgramData/MySQL/MySQL Server 5.7/log/mysql.log"
##long_query_time=3
#log-slow-queries= "C:/ProgramData/MySQL/MySQL Server 5.7/log/slowquery.log" 
#skip-networking  
skip-name-resolve
wait_timeout=31536000  
interactive_timeout=31536000  

第三种情况 windows服务器TCP链接占满了

在第二种改完不好使之后,又开始了胡乱修改开启了数据压缩,优化了mysql的慢查询,配置了nginx + tomcat负载均衡,修改tomcat链接参数,后来给下入多的地方加上锁,然后居然能保证两天左右死一次了(老感动了)便以为是有线程泄露这种情况出现,对数据库产生大量读写或者查询,把连接数占满了,便开始安装监控软件.

通过安装SpringBoot监控  arthas (阿里监控软件)

观测到出现问题时,没有线程泄露和线程死锁,

安装mysql监控 Neor Profile SQL(一个很简单的监控软件有图形化页面)

观测到出现问题时,mysql未出现死锁,连接数不多,mysql没有死掉

然后开始考虑吧mysql和应用服务器哪还能影响链接。忽然想到居然还有tcp链接,老师在网络原理刚讲过。(果然不听课是有代价的)

windows服务器有服务器链接最大值的限制,并且默认超时断连十分的长

所以我们要对windows的TCP链接进行优化 

修改注册表

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters

新建 DWORD 类型的注册表项,命名为:MaxUserPort

值数据: 100000(用十进制的格式录入进去,此值的有效范围为5000-65534)

新建 DWORD 类型的注册表项,命名为:TCPTimedWaitDelay

值数据: 30(用十进制的格式录入进去,TIME_WAIT的自动断开时间,默认为4分钟)

十分感谢大佬的帖子救我一命 https://www.cnblogs.com/gode/p/9770831.html

另外要十分仔细的查看报错信息  他在其中出现 No buffer space available 这个关键字。

折磨了我一个月的死亡报错就这么解决了,太感动了。

热门文章

暂无图片
编程学习 ·

那些年让我们目瞪口呆的bug

程序员一生与bug奋战,可谓是杀敌无数,见怪不怪了!在某知识社交平台中,一个“有哪些让程序员目瞪口呆的bug”的话题引来了6700多万的阅读,可见程序员们对一个话题的敏感度有多高。 1、麻省理工“只能发500英里的邮件” …
暂无图片
编程学习 ·

redis的下载与安装

下载redis wget http://download.redis.io/releases/redis-5.0.0.tar.gz解压redis tar -zxvf redis-5.0.0.tar.gz编译 make安装 make install快链方便进入redis ln -s redis-5.0.0 redis
暂无图片
编程学习 ·

《大话数据结构》第三章学习笔记--线性表(一)

线性表的定义 线性表:零个或多个数据元素的有限序列。 线性表元素的个数n定义为线性表的长度。n为0时,为空表。 在比较复杂的线性表中,一个数据元素可以由若干个数据项组成。 线性表的存储结构 顺序存储结构 可以用C语言中的一维数组来…
暂无图片
编程学习 ·

对象的扩展

文章目录对象的扩展属性的简洁表示法属性名表达式方法的name属性属性的可枚举性和遍历可枚举性属性的遍历super关键字对象的扩展运算符解构赋值扩展运算符AggregateError错误对象对象的扩展 属性的简洁表示法 const foo bar; const baz {foo}; baz // {foo: "bar"…
暂无图片
编程学习 ·

让程序员最头疼的5种编程语言

世界上的编程语言,按照其应用领域,可以粗略地分成三类。 有的语言是多面手,在很多不同的领域都能派上用场。大家学过的编程语言很多都属于这一类,比如说 C,Java, Python。 有的语言专注于某一特定的领域&…
暂无图片
编程学习 ·

写论文注意事项

参考链接 给研究生修改了一篇论文后,该985博导几近崩溃…… 重点分析 摘要与结论几乎重合 这一条是我见过研究生论文中最常出现的事情,很多情况下,他们论文中摘要部分与结论部分重复率超过70%。对于摘要而言,首先要用一小句话引…
暂无图片
编程学习 ·

安卓 串口开发

上图: 上码: 在APP grable添加 // 串口 需要配合在项目build.gradle中的repositories添加 maven {url "https://jitpack.io" }implementation com.github.licheedev.Android-SerialPort-API:serialport:1.0.1implementation com.jakewhart…
暂无图片
编程学习 ·

2021-2027年中国铪市场调研与发展趋势分析报告

2021-2027年中国铪市场调研与发展趋势分析报告 本报告研究中国市场铪的生产、消费及进出口情况,重点关注在中国市场扮演重要角色的全球及本土铪生产商,呈现这些厂商在中国市场的铪销量、收入、价格、毛利率、市场份额等关键指标。此外,针对…
暂无图片
编程学习 ·

Aggressive cows题目翻译

描述&#xff1a; Farmer John has built a new long barn, with N (2 < N < 100,000) stalls.&#xff08;John农民已经新建了一个长畜棚带有N&#xff08;2<N<100000&#xff09;个牛棚&#xff09; The stalls are located along a straight line at positions…
暂无图片
编程学习 ·

剖析组建PMO的6个大坑︱PMO深度实践

随着事业环境因素的不断纷繁演进&#xff0c;项目时代正在悄悄来临。设立项目经理转岗、要求PMP等项目管理证书已是基操&#xff0c;越来越多的组织开始组建PMO团队&#xff0c;大有曾经公司纷纷建造中台的气质&#xff08;当然两者的本质并不相同&#xff0c;只是说明这个趋势…
暂无图片
编程学习 ·

Flowable入门系列文章118 - 进程实例 07

1、获取流程实例的变量 GET运行时/进程实例/ {processInstanceId} /变量/ {变量名} 表1.获取流程实例的变量 - URL参数 参数需要值描述processInstanceId是串将流程实例的id添加到变量中。变量名是串要获取的变量的名称。 表2.获取流程实例的变量 - 响应代码 响应码描述200指…
暂无图片
编程学习 ·

微信每天自动给女[男]朋友发早安和土味情话

微信通知&#xff0c;每天给女朋友发早安、情话、诗句、天气信息等~ 前言 之前逛GitHub的时候发现了一个自动签到的小工具&#xff0c;b站、掘金等都可以&#xff0c;我看了下源码发现也是很简洁&#xff0c;也尝试用了一下&#xff0c;配置也都很简单&#xff0c;主要是他有一…
暂无图片
编程学习 ·

C语言二分查找详解

二分查找是一种知名度很高的查找算法&#xff0c;在对有序数列进行查找时效率远高于传统的顺序查找。 下面这张动图对比了二者的效率差距。 二分查找的基本思想就是通过把目标数和当前数列的中间数进行比较&#xff0c;从而确定目标数是在中间数的左边还是右边&#xff0c;将查…
暂无图片
编程学习 ·

项目经理,你有什么优势吗?

大侠被一个问题问住了&#xff1a;你和别人比&#xff0c;你的优势是什么呢? 大侠听到这个问题后&#xff0c;脱口而出道&#xff1a;“项目管理能力和经验啊。” 听者抬头看了一下大侠&#xff0c;显然听者对大侠的这个回答不是很满意&#xff0c;但也没有继续追问。 大侠回家…
暂无图片
编程学习 ·

nginx的负载均衡和故障转移

#注&#xff1a;proxy_temp_path和proxy_cache_path指定的路径必须在同一分区 proxy_temp_path /data0/proxy_temp_dir; #设置Web缓存区名称为cache_one&#xff0c;内存缓存空间大小为200MB&#xff0c;1天没有被访问的内容自动清除&#xff0c;硬盘缓存空间大小为30GB。 pro…
暂无图片
编程学习 ·

业务逻辑漏洞

身份认证安全 绕过身份认证的几种方法 暴力破解 测试方法∶在没有验证码限制或者一次验证码可以多次使用的地方&#xff0c;可以分为以下几种情况︰ (1)爆破用户名。当输入的用户名不存在时&#xff0c;会显示请输入正确用户名&#xff0c;或者用户名不存在 (2)已知用户名。…