当前位置: 首页 > news >正文

应用假死?

有个客户10月18日应用接口都访问慢,nginx层面error显示连接拒绝,当时实施同学重启了java应用运行正常,但今天又卡死了,后台登录也登录不上去,看日志没异常,最终找到了数据库层面。

查看数据库相关日志:

/var/log/messages (系统日志)---无error日志

 /mysqld.log  显示以下的warning报错           

这个报错的意思是数据库的缓冲池找不到空闲块了。和缓冲池设置大小有关。

show variables like '%buffer%';

innodb_buffer_pool是 InnoDB 缓冲池,是一个内存区域保存缓存的 InnoDB 数据为表、索引和其他辅助缓冲区。innodb_buffer_pool_size 是这个缓冲池的大小,默认128M(即134217728 bytes)

        如果不设置innodb_buffer_pool_size,在生产环境的sql执行效率将大大下降,原因是缓存的空间变小,能缓存的数据量有限,缓存的命中率大打折扣,会导致反复去磁盘上读数据,众所周知磁盘的速度远远低于内存的执行效率。        

     那设置多大合适呢?如何配置呢?    

两种设置方式,区别在于MySQL的运行状态,静态设置需要重启MySQL,动态设置在MySQL运行期动态调整。

静态设置

  • 修改my.cnf,在[mysqld]作用域添加 innodb_buffer_pool_size=2G
  • 重启mysql。

动态设置

  • 执行SET GLOBAL innodb_buffer_pool_size=计算值; 设置缓冲池大小。
  • 执行SHOW STATUS WHERE Variable_name='InnoDB_buffer_pool_resize_status'; 查询缓冲池大小改变状态,出现 Completed resizing buffer pool at 时间戳 即完成。
  • 执行SELECT @@innodb_buffer_pool_size; 查询当前缓冲池大小。

如何查看系统的物理内存?确认设置的缓冲池大小合适呢?

free -h


http://www.mrgr.cn/news/56202.html

相关文章:

  • C# 文档打印详解与示例
  • 数组算法(代码随想录)
  • 简单的必填验证 不依赖前端框架
  • mysql用户密码基础
  • 阿里字节技术管理岗位面试要求
  • ant design vue TimePicker时间选择器不点击确认也可以设置值
  • 35岁的打工人,生了二胎然后被炒(职场吐槽漫画)
  • 有趣的css - 跷跷板加载动画
  • Mac电脑:资源库Library里找不到WebServer问题的解决
  • 小白对时序数据库的理解
  • 汽车电子行业的LIMS:提升质量与效率的关键助力
  • position: sticky 粘性定位
  • 【最新华为OD机试E卷-支持在线评测】寻找符合要求的最长子串(200分)多语言题解-(Python/C/JavaScript/Java/Cpp)
  • 效果图渲染为什么需要用渲染100云渲染?
  • Web Service
  • 【贪心 临项交换 博弈论】1686. 石子游戏 VI|2000
  • MSE Loss、BCE Loss
  • 跨越数字鸿沟,FileLink文件摆渡系统——您的数据安全高效传输新选择
  • AI江湖 | 开发者招募计划征集令活动参与流程
  • SpringBoot集成Spring security 2024.10(Spring Security 6.3.3)
  • 2024 四川省大学生信息安全技术大赛 安恒杯 部分 WP
  • 【网络原理】HTTP协议
  • 【智能制造-34】机器人算法工程师为什么一定要懂电机?
  • 图形平台API和WebAssembly AI
  • EEE与WOL的关系
  • 玩转springboot之springboot项目监测