当前位置: 首页 > 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.lryc.cn/news/466271.html

相关文章:

  • SAP MM+FI - 物料管理模块与财务会计模块的集成配置
  • 初阶数据结构【3】--单链表(比顺序表还好的一种数据结构!!!)
  • mysql迁移到达梦的修改点
  • Go小技巧易错点100例(十八)
  • 【python】极简教程8-字符串
  • UEFI EDK2框架学习 (四)——UEFI图形化
  • 【C++】— 一篇文章让你认识STL
  • mysql--索引
  • 【linux】线程 (三)
  • c++日常积累
  • 字节流写入文件
  • Torch模型导入
  • 博弈论:博弈类型空间集合;三层博弈拓展式;
  • 数据库表的关联、集合操作
  • word怎么清除格式,Word一键清除所有格式教程
  • ShardingProxy服务端分库分表
  • 开源的 FOC(Field-Oriented Control) 项目
  • 高等数学 5.5 反常积分的审敛法 Γ函数
  • 宝塔安装ffmpeg的方法
  • 案例分享-优秀蓝色系UI界面赏析
  • 陪诊小程序之uniapp(从入门到精通)
  • 深度学习(一)基础:神经网络、训练过程与激活函数(1/10)
  • 源代码加密技术的一大新方向!
  • SVN——常见问题
  • JavaCV 图像灰度化处理
  • 基于Multisim三极管B放大系数放大倍数测量电路设计(含仿真和报告)
  • Molmo模型实战
  • 免费开源的微信开发框架
  • 波形的变化和信号的产生1+multisim仿真
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(3)