故障分析 | 数据库服务器内存不足一例分析

Cartographer参数调优指南:如何用Lua配置解决建图漂移问题 本文深入解析Cartographer SLAM系统的Lua参数调优方法,针对建图漂移问题提供完整解决方案。从运动滤波、扫描匹配到多传感器融合,详细讲解关键参数配置技巧,并给出仓库物流和服务机器人等典型场景的优化方案,帮助开发者实现精准建图。 阅读详情

作者:付祥

现居珠海,主要负责 Oracle、MySQL、mongoDB 和 Redis 维护工作。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


现象

监控告警某台机器空闲内存低于10%,执行top命令,按内存降序排序,部分输出如下:

[root@mysql-slaver ~]# top
top - 13:45:43 up 1835 days, 20:52,  2 users,  load average: 0.02, 0.03, 0.05
Tasks: 210 total,   1 running, 208 sleeping,   1 stopped,   0 zombie
%Cpu(s):  0.5 us,  0.6 sy,  0.0 ni, 98.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 32780028 total,   905684 free, 19957900 used, 11916444 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  3448260 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                            
 2677 mysql     20   0   20.1g  15.1g   3392 S   0.0 48.2 430:17.58 mysqld                                                             
10549 polkitd   20   0 3277476   3.1g    632 S   0.3  9.9 146:47.24 redis-server                                                       
18183 root      20   0  877308 215868   1892 T   2.7  0.7   2736:45 xxxxxx
  442 root      20   0  160244  93016  88552 S   0.3  0.3 314:14.86 systemd-journal                                                    
32537 root      20   0  731620  58360  54588 S   0.3  0.2  29:09.61 rsyslogd

total=32G,used=19G,buff/cache=11G,available=3G,最耗内存进程为 MySQL、Redis,总计约18.2G,其他进程占用内存都比较低,buff/cache 内存中只有3G是有效的,剩余8G内存去哪里?

分析

执行 free 命令进一步查看:

[root@MySQL-slaver ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:          32011       19490         881        8762       11639        3366
Swap:             0           0           0

其中shared占用竟然占用了8G内存,通过man查看帮助:

shared Memory used (mostly) by tmpfs (Shmem in /proc/meminfo, available on kernels 2.6.32, displayed as zero  if  not  avail‐
              able)

shared Memory来源于/proc/meminfo中Shmem,被tmpfs使用,df -h查看:

[root@MySQL-slaver ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         16G     0   16G   0% /dev
tmpfs            16G   16K   16G   1% /dev/shm
tmpfs            16G  8.6G  7.1G  55% /run
tmpfs            16G     0   16G   0% /sys/fs/cgroup

目录/run使用了8.6G内存,和shared占用内存一致,内存都消耗到哪些子目录了?

[root@MySQL-slaver ~]# du -am /run|sort -rn -k1|head -10
8761    /run
7137    /run/systemd
7126    /run/systemd/users
1624    /run/log/journal/89308070e0c04c6a86bf577f4064efca
1624    /run/log/journal
1624    /run/log

内存主要消耗在/run/systemd/users和/run/log/journal目录,占用内存分别为7126M、1624M,较为异常的是/run/systemd/users占用内存过高,继续分析这个目录下有哪些文件

[root@MySQL-slaver ~]# ls -l /run/systemd/users
total 44
-rw-r--r-- 1 root root 41056 Mar 23 14:14 0

乍一看,只有一个文件占用约40k,这和du统计的差异也太大了吧,是不是有隐藏文件:

[root@MySQL-slaver ~]# find /run/systemd/users|less
/run/systemd/users
/run/systmd/users/0
/run/systemd/users/.#0kRUlqC
/run/systemd/users/.#0Qxvu5J
/run/systemd/users/.#03DvfrF
......

[root@MySQL-slaver ~]# find /run/systemd/users|wc -l
337632

[root@MySQL-slaver ~]# ls -l /run/systemd/users/.#00009iJ
-rw-r--r-- 1 root root 20480 Sep 26  2018 /run/systemd/users/.#00009iJ
[root@MySQL-slaver ~]# ll /run/systemd/users/.#0SEEqoi
-rw-r--r-- 1 root root 20480 Mar 23 14:34 /run/systemd/users/.#0SEEqoi

[root@MySQL-slaver ~]# uptime
 14:45:13 up 1835 days, 21:51,  2 users,  load average: 0.02, 0.08, 0.12

不看不知道,一看吓一跳,隐藏文件数高达30w+,最早的文件有2018年的,最新的文件今天产生的,随便打开一个文件看看:

[root@MySQL-slaver ~]# less /run/systemd/users/.#03DvfrF

# This is private data. Do not parse.

NAME=root
STATE=active
RUNTIME=/run/user/0
SLICE=user-0.slice
DISPLAY=4231719
REALTIME=1521010223727718
MONOTONIC=79029110787
SESSIONS=4232100 4232099 4232098 ......

保存的是root用户session信息,loginctl查看session信息:

[root@MySQL-slaver ~]# loginctl list-sessions
   SESSION        UID USER             SEAT            
     24597          0 root                             
    146401          0 root                             
    133160          0 root                             
     82494          0 root                             
     82514          0 root                             
    106049          0 root   
......
[root@MySQL-slaver ~]# loginctl list-sessions|awk '{print $3}'|sort|uniq -c
      1 
      1 listed.
   2131 root
      1 USER            

root用户session数竟然高达2131个,随便拿一个session看看:

[root@MySQL-slaver ~]# loginctl session-status 24597
24597 - root (0)
           Since: Tue 2018-03-27 08:35:01 CST; 4 years 11 months ago
          Leader: 25599
         Service: crond; type unspecified; class background
           State: active
            Unit: session-24597.scope
[root@MySQL-slaver ~]# 

crond产生的session,这些session都没有分配相关进程,当前状态为active,按session排序后,挑选最近的session查看,都是2018年产生的:

[root@MySQL-slaver ~]# loginctl session-status 243335
243335 - root (0)
           Since: Sat 2018-07-14 03:29:01 CST; 4 years 8 months ago
          Leader: 28376
         Service: crond; type unspecified; class background
           State: active
            Unit: session-243335.scope
[root@MySQL-slaver ~]# 

做了一个定时任务测试,session能正常分配进程,任务完成后session关闭:

Mar 23 15:20:01 [localhost] CROND[12334]: (root) CMD (sleep 1200)

[root@MySQL-slaver ~]# loginctl session-status 4232206
4232206 - root (0)
           Since: Thu 2023-03-23 15:20:01 CST; 19min ago
          Leader: 12330 (crond)
         Service: crond; type unspecified; class background
           State: opening
            Unit: session-4232206.scope
                  ├─12330 /usr/sbin/CROND -n
                  └─12334 sleep 1200
[root@MySQL-slaver ~]# loginctl session-status 4232206
Failed to get session: No session '4232206' known


[root@MySQL-slaver ~]# lsof -p `pidof dbus-daemon`|grep sessions|wc -l
2126
[root@MySQL-slaver ~]# lsof -p `pidof dbus-daemon`|tail -5
dbus-daem 560 dbus 2139w     FIFO               0,18      0t0  416861417 /run/systemd/sessions/156582.ref
dbus-daem 560 dbus 2140w     FIFO               0,18      0t0  417383549 /run/systemd/sessions/156774.ref
dbus-daem 560 dbus 2141w     FIFO               0,18      0t0  417291412 /run/systemd/sessions/156740.ref
dbus-daem 560 dbus 2142w     FIFO               0,18      0t0  620267085 /run/systemd/sessions/242902.ref
dbus-daem 560 dbus 2143w     FIFO               0,18      0t0  621086290 /run/systemd/sessions/243335.ref
[root@MySQL-slaver ~]# 

解决

个人觉得可选解决方案如下:

1、服务器上主要服务为MySQL和Redis,MySQL作为从库使用,未承载业务读流量,Redis近期将会迁移,/run/systemd/users目录占用内存虽然在增长,5年了也只占用8G,增量很缓慢,故可以在线收缩MySQL innodb_buffer_pool_size使用内存,释放一部分内存给操作系统,等Redis迁移了再做机器重启处理。

2、假设主机不可以重启,通过lsof可知这些隐藏文件当前未被使用,故可以迁移到其他磁盘目录,看看是否能达到释放内存目的,且这些session都是crond 2018年产生的,并未分配相关进程,故通过loginctl kill-session ID干掉。

目前采取方案1处理。

一个 ABAP 工具,能打印系统里某个用户对 BSP 应用的浏览历史记录 只要一个用户在 SAP ABAP 系统里浏览过 BSP 页面,会留下浏览历史记录。本工具会解析出这些记录,打印出该用户浏览的历史事件,和浏览过的页面名称。 阅读详情

相关推荐

C# 操作Excel的时候,出现"被呼叫方拒绝接受呼叫的异常"的解决方案(参考官方给出的解决方案)

首先官方有对这个错误给出解释和解决方案,连接如下: https://docs.microsoft.com/zh-cn/previous-versions/ms228772(v=vs.120)#%E5%8F%AF%E9%9D%A0%E7%BC%96%E7%A8%8B 简单来说,貌似是线程问题,我猜。。。 之前我尝试着在代码中添加 Thread.Sleep(1000); 来进行解决,这种办...

Ck_Max的博客 5767

mysql 数据库内存不足_MySQL数据库内存不足怎么办 MySQL数据库使用教程

MySQL内存不足的解决方法:1、增加swap交换空间,代码为【dd if=/dev/zero of=/swapfile bs=1M count=1024】;2、增加自动挂载,在文件【/etc/fstab中加入/swapfileswap】。MySQL内存不足的解决方法:1、启动MySQL时一直不成功,查看错误日志 /var/log/mysql/error.log2、主要的错误信息有如下几条:[ER...

weixin_32275943的博客 2134

保姆级教程:在S32K312上配置C40驱动,实现Flash读写(基于RTD 4.4.2)

本文详细介绍了在S32K312微控制器上配置C40驱动实现Flash读写的全流程,基于RTD 4.4.2库。内容涵盖环境搭建、外设配置、Flash操作实战代码及高级应用场景,特别针对LLD驱动和FLS存储操作中的常见问题提供了解决方案,帮助开发者快速掌握嵌入式Flash存储技术。

weixin_28684757的博客 253

达梦报内存不足

达梦报内存不足

qq_39693441的博客 2855

VIVADO中的IP核在MATLAB中仿真

VIVADO中的IP核在MATLAB中仿真项目简述VIVADO建立FFT IP核MATLAB调用FFT IP核 项目简述 我们都会用MATLAB进行算法验证,但是经常会发现如果VIVADO中调用了IP核,那么最终会发现VIVADO与MATLAB之间的数据不可以统一的对应起来。那么,MATLAB验证的效果就会大大下降,那么可不可以想办法将VIVADO中的IP核封装成一个函数在MATLAB中调用呢?答案是可以的。这篇博客主要以FFT的IP核为例讲解封装成一个函数并且成功在MATLAB中调用。 本次实验所使用的软

zhangningning1996的博客 6989

CTF密码学奇技淫巧:当Base64遇到ROT13与Atbash

本文深入解析CTF竞赛中Base64、ROT13与Atbash的复合编码技术,提供Python实现与CyberChef可视化处理方案,帮助选手掌握密码学题目的解题技巧。通过NewStarCTF2025实战案例,对比脚本化与可视化工具的优劣,提升Web安全竞赛中的编码处理能力。

weixin_29001683的博客 507

服务器内存不足解决方法

最近,在阿里云ECS尝试搭建两个应用。 (服务器硬件信息:CPU:1核 内存:1 GiB) 1.在指定端口号启动war包 nohup java -jar jenkins.war --httpPort=8088 & 2.启动另外一个应用 nohup java -jar my-site-1.0.2.RELEASE.jar & 3.结果 发现启动后一个应用,系统会把前一个应用ki...

samuelandkevin的专栏 5282

汽车电子 静态电流

**静态电流(Static Current 或 Quiescent Current, IQ)** 是指汽车在 **熄火 / 关机 / 睡眠模式** 下,电子控制单元(ECU)或电子元件仍然保持基本功能(RTC、存储保持、Wake-up 监测、CAN/LIN 监听等)所消耗的微弱电流。

天赐好车的博客 755

Linux进程与服务管理

Linux进程与服务管理

weixin_48195231的博客 583

使用Python实现深度学习模型:智能极端天气事件预测

在本项目中,我们成功利用Python和Keras库构建了一个基于LSTM的极端天气预测模型。通过时间序列数据,模型能够识别天气趋势并预测未来的极端天气事件。尽管这是一个简化的示例,但它为实际应用中如何利用深度学习进行天气预测提供了一个很好的基础。随着更精确的数据和更多的特征信息,类似的模型可以进一步扩展到其他极端事件预测上,如风暴预警、气象灾害评估等。

Echo_Wish 730

LabVIEW实现TCP通信

在本节中,我们将简要探讨TCP通信的基础知识,并以工业物联网平台TLINK中的云端设备数据发布设计为例,详细阐述在互联网环境下TCP客户端应用程序设计的基本方法。

不脱发的程序猿 1959

网络故障分析

网络故障分析 一、网络应用访问缓慢 故障详细描述:(1)同一VLAN的内网主机之间访问速度非常缓慢,如互相PING,网上邻居拷贝文件等操作。(2)不同VLAN间的主机,访问速度非常缓慢。(3)内网主机可以打开网页,但速度非常缓慢。(4)内网主机PING外网域名或DNS服务器时,返回时间较大。(5)网络中的各种应用出现时断时续的现象。(6)内网主机打开网络中某业务 系统时,响应非常缓慢,甚至出 现假...

chanbeng5693的博客 1249

基于卷积神经网络CNN实现电力负荷多变量时序预测(PyTorch版)

随着智能电网的发展,精准的电力负荷预测对能源调度和电网稳定具有重要意义。本文基于PyTorch框架,提出一种基于卷积神经网络(CNN)的多变量时间序列预测模型,用于电力负荷的短期预测。

时序笔记 988

[转]F5负载均衡环境下某应用故障分析案例

本文来自互联网,非我原创,原文章名为《高级TCP/IP网络排错》,该案例出自其第三节:用OmniPeek解决网络中的难题。 如该案例作者看到我的转载请跟我联系,可以做个朋友,切磋一下技术问题,如果哪位网友知道该案例的原作者,也烦请留言告知。 【我的点评】: 1,充分运用了中间设备自带的抓包功能(对中间设备自带抓包功能感兴趣的兄弟,请参阅我的文章《常见系统和网关设备自

fly2004jun的专栏 9807

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

网络应用故障分析

故障现象 故障详细描述 故障原因分类 故障详细成因 故障分析定位分类 推荐解决方法 网络应用访问缓慢 1.同一VLAN的内网主机之间访问速度非常缓慢,如互相PING,网上邻居拷贝文件等操作。                 2.不同VLAN间的主机,访问速度非常缓慢。          3.内网主机可以打开网页,但速度非常缓慢。          4.内网主机PING外网域名或DNS服...

小哲的博客 941

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数据库服务器显示网卡断开连接,数据库服务器故障分析与处理.doc

数据库服务器故障分析与处理摘要:目前,数据库服务器的重要性已经在校园网内逐渐体现出来,但是数据库服务器不可避免地会发生故障,破坏甚至丢失重要的数据信息将会为院校带来不可预计的经济损失,因此需要使用快速诊断的方法来排除故障。该文总结出排查故障的思路和流程以便快速完成故障定位和处理。关键词:数据库服务器故障;定位和处理   中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017...

weixin_32459883的博客 764

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

技术实践|高斯集群服务器双缺省网关故障分析

检查主机路由发现CN1服务器的默认路由和其他3台CN服务器不同,CN1服务器bond1的Metric值为301,而其他CN服务器bond1的Metric值为300,根据路由选择的优先级规则,Metric值越小优先级越高,所以CN1服务器的缺省网关为bond0,其他CN服务器的缺省网关为bond1。),故而称为二层交换机。管理面和业务面的网络都为双万兆网口,管理面网段:172.18.10.0/24,业务面网段:172.18.20.0/24,数据库服务器双网口,Bond1:业务面,Bond0:管理面。

zhongdianjinxin的博客 671

数据库服务器硬盘故障分析及建议

产品信息: 产 品:DL580 G5 型 号:487381-B21 序列号:CNG941S242 硬件架构: DL580 G5单机 系统架构: REDHAT LINUX ENTERPRISE 5 + ORACLE DATABASE 故障现象: 一台DL580 G5 BAY5上一块300G硬盘与06月07日亮红灯报警,在06月08日惠普金牌服务工程师更换上新硬盘后,后台...

62

故障分析 | Greenplum 集群 standby 故障处理

客户测试环境Greenplum集群中,standby节点数据目录被误删除,导致standby节点不可用。如果此时由于其它各种原因导致master节点也不可用,则集群将无法对外提供服务,因此现需尽快恢复standby节点。1)库由Master Severs和Segment Severs组成。2)Master Server:3)Segment Severs:3.1、本地Greenplum集群环境:3.2、模拟master standby坏掉: 4、故障分析及解决: 4.1、检查状态: 可以看到:Standby

ActionTech的博客 959

AgentCPM在运维领域的应用:自动化生成系统故障分析与复盘报告

本文介绍了如何在星图GPU平台上自动化部署📑AgentCPM深度研报助手镜像,实现运维领域的智能分析。该镜像能够自动分析监控告警、日志等数据,快速定位系统故障根因,并自动化生成结构清晰、内容详尽的故障复盘报告,极大提升运维团队的事后分析效率。

weixin_42323064的博客 206

WebSphere连接池夯住故障分析

本文节选自《云和恩墨技术通讯》(10月刊) 问题表现 WebSphere连接池夯住的主要表现为:WebSphere在运行过程中出现页面操作偶尔长时间没有反应,有时jdbc连接数达到最大值,同时发现数据库监听中的jdbc连接数飙高,运行不稳定。 分析过程 1. 监控连接池是否泄露 为运行server添加连接池诊断跟踪参数ConnLeakLogic=all: ./wsadmin.sh -user wa...

oracle_awen的专栏 853

故障分析 | MySQL 无法启动,提示 missing……

作者:姚远 专注于 Oracle、MySQL 数据库多年,Oracle 10G 和 12C OCM,MySQL 5.6,5.7,8.0 OCP。现在鼎甲科技任顾问,为同事和客户提供数据库培训和技术支持服务。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 故障描述 MySQL 数据库服务器的 CPU 和主板都换了,重新开机,发现 MySQL 无法启动!!! 提示: Ignoring the redo log due to missing MLOG_C.

ActionTech的博客 764

mysql打不开显示没有磁盘_故障分析 | MySQL 无法启动,提示 missing……

作者:姚远专注于 Oracle、MySQL 数据库多年,Oracle 10G 和 12C OCM,MySQL 5.6,5.7,8.0 OCP。现在鼎甲科技任顾问,为同事和客户提高数据库培训和技术支持服务。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。故障描述MySQL 数据库服务器的 CPU 和主板都换了,重新开机,发现 MySQL 无法启动!!!...

weixin_29415429的博客 773

故障分析 | 是谁偷走了我的 IO

作者:孙桥 爱可生DBA团队成员,主要负责MySQL和DMP平台日常的维持工作,对数据库自动化运维存有浓厚兴趣。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 前言 对于刚接触 MySQL 数据库不久的小伙伴来说,或多或少会遇到一些棘手的小问题;比如在数据库磁盘无损坏的情况下,我们经常会遇到数据库服务器的磁盘IO压力很大,但由于服务器上只有 MySQL 程序,我们第一想法肯定是某个连接用户在连到数据库后,背着我们在瞎搞着什么;然而直接通过 show.

ActionTech的博客 622

一个典型业务系统卡顿故障分析

背景提要: 今年在一家客户单位驻场,遇到了一个很是经典的业务系统故障。首先是客户反馈的信息成扩大化和添油化,某日下午17点接到前台的一个科室故障反馈,第二天又反馈已经有一周了,第三天又反馈全单位都有系统使用卡顿情况,同时有反馈情况出现有半个月了。其次是无法测试定位,因为出现这种情况随机测试并无发现卡顿情况,爆发卡顿情况的时间和情况比较笼统,当前台反馈后,后端直接测试访问无异常。最后是时间,由于客户单位负责人性格直率,发现问题要求立刻解决,对于问题产生的情况原因漠不关心,急促的要...

littleandbig的专栏 2945

故障分析 | MySQL OOM 故障应如何下手

作者:孙祚龙 爱可生南区分公司交付服务部成员,实习工程师。负责公司产品问题排查及日常运维工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 引言 前阵子处理这样一个案例,某客户的实例 mysqld 进程内存经常持续增加导致最终被 OOM killer。作为 DBA 肯定想知道有哪些原因可能会导致 OOM(内存溢出)。 此篇文章叙述个人的...

ActionTech的博客 509
上一篇: 技术分享 | OceanBase 手滑误删了数据文件怎么办
下一篇: 技术分享 | OceanBase 使用全局索引的必要性
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值