Redhat7.2 MySQL5.7.18内存占满,重启后3-5天又占满

漫漫dev路 2018-05-10 01:52:43
mysql版本是5.7.18 物理机 128G内存,就只装了个mysql 过3-5天后内存就占满了,占满后会占Swap区。


如果解决问题,可以追加分数。
...全文
1200 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2018-05-14
  • 打赏
  • 举报
回复
mysql 一个表对应至少两个文件,所以 buffer / cached 肯定会用不少,这是为了性能 所以你纠结啥呢?
zjcxc 2018-05-14
  • 打赏
  • 举报
回复
Mem:表示物理内存统计 total:表示物理内存总量(total = used + free) used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。 free:未被分配的内存。 shared:共享内存,一般系统不会用到,这里也不讨论。 buffers:系统分配但未被使用的buffers 数量。 cached:系统分配但未被使用的cache 数量。 对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。 所以从应用程序的角度来说 可用内存=系统free memory+buffers+cached. buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages. cached是用来给文件做缓冲。 那就是说:buffers是用来存储,目录里面有什么内容,权限等等。 而cached直接用来记忆我们打开的文件,如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。
漫漫dev路 2018-05-14
  • 打赏
  • 举报
回复
引用
used 占满正宗得很,只要 buffer + cached > 0 就是正常的 如果 buffer + cached =0 , 那才是真正的用完内存,这个时候你要查具体各进程的物理内存使用 也就是这个值,如果接近你的物理内存量,那么确实是内存用完了你可以具体再查是那些进程占用了内存 ps aux|awk '{sum+=$6} END {print sum/1024/1024}'
free 为空,used、buffer + cached都有值,清掉buffer+cache后 mysql服务还会占到used里面去,物理机只有一个mysql服务,从进程上看也是mysqld服务占用,现在问题是想找出为什么MySQL服务占这么高的内存,怎么优化???
zjcxc 2018-05-11
  • 打赏
  • 举报
回复
used 占满正宗得很,只要 buffer + cached > 0 就是正常的 如果 buffer + cached =0 , 那才是真正的用完内存,这个时候你要查具体各进程的物理内存使用 也就是这个值,如果接近你的物理内存量,那么确实是内存用完了你可以具体再查是那些进程占用了内存 ps aux|awk '{sum+=$6} END {print sum/1024/1024}'
漫漫dev路 2018-05-10
  • 打赏
  • 举报
回复
引用
内存占完时,free -g 的输出是什么
就是全部被used占满,swap区也会占满,造成mysql服务被系统杀死
zjcxc 2018-05-10
  • 打赏
  • 举报
回复
内存占完时,free -g 的输出是什么?
漫漫dev路 2018-05-10
  • 打赏
  • 举报
回复
引用
先看看有没有那个进程很占用资源,是否出现阻塞的情况 再看一下my.cnf 里边的各个配置项,是怎么分配的
my.cnf max_allowed_packet=64M character-set-server=utf8 lower_case_table_names=1 port=3306 server_id=13310 default-storage-engine=INNODB default-tmp-storage-engine=INNODB sql_mode='IGNORE_SPACE,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES' binlog_format=row binlog-ignore-db=mysql log-slave-updates #auto_increment_offset=1 #auto_increment_increment=2 slave_skip_errors=all sync_binlog=1 log_bin_trust_function_creators=TRUE replicate_ignore_db=information_schema max_connections=5000 slow_query_log=1 slow_query_log_file=/opt/fast/mysql/data3306/slowlog/db3306_slow.log long_query_time=0.2 innodb_log_file_size=5G innodb_buffer_pool_size=20G innodb_flush_log_at_trx_commit=2 lower_case_table_names=1 expire_logs_days = 7 performance_schema=OFF
漫漫dev路 2018-05-10
  • 打赏
  • 举报
回复
引用
先看看有没有那个进程很占用资源,是否出现阻塞的情况 再看一下my.cnf 里边的各个配置项,是怎么分配的
物理机只有mysql一个进程,没有阻塞,
二月十六 2018-05-10
  • 打赏
  • 举报
回复
先看看有没有那个进程很占用资源,是否出现阻塞的情况 再看一下my.cnf 里边的各个配置项,是怎么分配的

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧