cephfs时我们产品依赖的主要分布式操作系统,但似乎很不给面子,压力测试的时候经常出问题。

背景

集群环境出现的问题: mds0: Many clients (191) failing to respond to cache pressure

背景:三个节点,100多个客户端mount,服务器可用内存仅剩100MB,ceph报错如下:

[root@node1 ceph]# ceph -s
cluster 1338affa-2d3d-416e-9251-4aa6e9c20eef
health HEALTH_WARN
mds0: Many clients (191) failing to respond to cache pressure
monmap e1: 3 mons at {node1=192.168.0.1:6789/0,node2=192.168.0.2:6789/0,node3=192.168.0.3:6789/0}
election epoch 22, quorum 0,1,2 node1,node2,node3
fsmap e924: 1/1/1 up {0=node1=up:active}, 2 up:standby
osdmap e71: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v48336: 576 pgs, 3 pools, 82382 MB data, 176 kobjects
162 GB used, 5963 GB / 6126 GB avail
576 active+clean
client io 0 B/s rd, 977 kB/s wr, 19 op/s rd, 116 op/s wr

至今问题也没有解决。(我的意思是说没有弄清楚Capacity的机制,如果抱着解决不了问题,就解决提出问题的人的思路,可以参考第三部分。)

mds日志如下:

2019-11-12 16:00:17.679876 7fa6a5040700  0 log_channel(cluster) log [WRN] : 1 slow requests, 1 included below; oldest blocked for > 34.236623 secs
2019-11-12 16:00:17.679914 7fa6a5040700 0 log_channel(cluster) log [WRN] : slow request 34.236623 seconds old, received at 2019-11-12 15:59:43.326917: client_request(client.154893:13683 open #1000005cb77 2019-11-12 15:59:43.293037) currently failed to xlock, waiting
2019-11-12 16:03:27.614474 7fa6a5040700 0 log_channel(cluster) log [WRN] : 1 slow requests, 1 included below; oldest blocked for > 34.350555 secs
2019-11-12 16:03:27.614523 7fa6a5040700 0 log_channel(cluster) log [WRN] : slow request 34.350555 seconds old, received at 2019-11-12 16:02:53.263857: client_request(client.155079:5446 open #1000003e360 2019-11-12 16:02:54.011037) currently failed to xlock, waiting
2019-11-12 16:03:57.615297 7fa6a5040700 0 log_channel(cluster) log [WRN] : 1 slow requests, 1 included below; oldest blocked for > 64.351379 secs
2019-11-12 16:03:57.615322 7fa6a5040700 0 log_channel(cluster) log [WRN] : slow request 64.351379 seconds old, received at 2019-11-12 16:02:53.263857: client_request(client.155079:5446 open #1000003e360 2019-11-12 16:02:54.011037) currently failed to xlock, waiting
2019-11-12 16:03:58.181330 7fa6a5040700 0 log_channel(cluster) log [WRN] : client.155079 isn't responding to mclientcaps(revoke), ino 1000003e360 pending pAsxLsXsxFcb issued pAsxLsXsxFsxcrwb, sent 64.458260 seconds ago

后续的努力

自己找环境重现,用的一个测试服务器,安装了一个Ubuntu系统,然后进行测试。惊喜的发现,同一个客户端不管我mount多少个目录,与后端的连接始终都只有那两个。

但重现过程中还是出现类似的问题了。

mds0: Client ubuntu:guest failing to respond to capability release

静置一段时间之后出现了如下错误:

[root@ceph741 ~]# ceph -s
cluster 1338affa-2d3d-416e-9251-4aa6e9c20eef
health HEALTH_WARN
mds0: Client ubuntu:guest failing to respond to capability release
mds0: Client ubuntu:guest failing to advance its oldest client/flush tid
monmap e2: 3 mons at {ceph741=192.168.15.112:6789/0,ceph742=192.168.15.113:6789/0,ceph743=192.168.15.114:6789/0}
election epoch 38, quorum 0,1,2 ceph741,ceph742,ceph743
fsmap e8989: 1/1/1 up {0=ceph743=up:active}, 2 up:standby
osdmap e67: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v847657: 576 pgs, 3 pools, 20803 MB data, 100907 objects
44454 MB used, 241 GB / 284 GB avail
576 active+clean
client io 59739 B/s rd, 3926 kB/s wr, 58 op/s rd, 770 op/s wr

临时的解决办法

临时的解决办法就是把出问题的客户端干掉。

步骤主要命令:

ceph tell  mds.0 session ls
ceph tell mds.0 session evict id=249632

其中id是问题client的id。那么问题客户端比其他客户端哪里不同呢,实话说,我也不知道,大家可以看下:

参考:

https://www.jianshu.com/p/d1e0e32346ac

http://www.talkwithtrend.com/Article/242905

https://www.jianshu.com/p/fa49e40f6133

mds0: Many clients (191) failing to respond to cache pressure的更多相关文章

  1. MDS 多活配置

    CephFS 介绍及使用经验分享 阅读 1179 收藏 2 2019-01-14 原文链接:www.jianshu.com WebRTC SFU中发送数据包的丢失反馈juejin.im 目录 Ceph ...

  2. cephfs测试中出现的问题

    最近重新对cephfs进行性能测试. 测试步骤: (1) 选取一个特地版本的操作系统内核,挂载20000个客户端; (2) 用iozone中的fileop工具,在每隔挂载点上都跑一个fileop进程; ...

  3. cephfs删除报nospace的问题

    ceph Vol 45 Issue 2 CephFS: No space left on device After upgrading to 10.2.3 we frequently see mess ...

  4. Java性能提示(全)

    http://www.onjava.com/pub/a/onjava/2001/05/30/optimization.htmlComparing the performance of LinkedLi ...

  5. Chapter 6 — Improving ASP.NET Performance

    https://msdn.microsoft.com/en-us/library/ff647787.aspx Retired Content This content is outdated and ...

  6. smb.conf - Samba组件的配置文件

    总览 SYNOPSIS smb.conf是Samba组件的配置文件,包含Samba程序运行时的配置信息.smb.conf被设计成可由swat (8)程序来配置和管理.本文件包含了关于smb.conf的 ...

  7. SQL Server 内存相关博文

    Don’t confuse error 823 and error 832 本文大意:      错误832:           A page that should have been const ...

  8. Goal driven performance optimization

    When your goal is to optimize application performance it is very important to understand what goal d ...

  9. 如何使用event 10049分析定位library cache lock and library cache pin

    Oracle Library Cache 的 lock 与 pin 说明 一. 相关的基本概念 之前整理了一篇blog,讲了Library Cache 的机制,参考: Oracle Library c ...

随机推荐

  1. Maven的Scope区别笔记

    依赖的Scopescope定义了类包在项目的使用阶段.项目阶段包括: 编译,运行,测试和发布. 分类说明compile 默认scope为compile,表示为当前依赖参与项目的编译.测试和运行阶段,属 ...

  2. docker的一些常用操作

    镜像:一个打包好的应用,还有应用运行的系统.资源.配置等容器:镜像的实例,一个镜像可以有一个或多个实例(容器)对docker容器的变更时写到容器的文件系统的,而不是写到docker镜像中的,可以用一个 ...

  3. 使用Intellij idea新建Java Web项目(servlet) 原理及初步使用

    准备 JDK       (配置JDK_HOME\bin   和 CLASSPATH)   注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本)     对于我们新手来说,JD ...

  4. Django 数据库同步命令

    版本1.8.2 检查数据库配置是否有错 Python manage.py validate/check 创建对应书看的映射语句 Python manage.py makemigrations 同步或者 ...

  5. 基于Tendermint的区块链漂流瓶简单实现

    本文主要借demo介绍基于Tendermint的区块链应用开发,这个demo很简单,主要包含以下功能: 扔漂流瓶 捞漂流瓶 之后投放者和打捞者可以相互传递[加密]信息 代码已上传至github. Te ...

  6. docker 安装 apollo

    apollo作为携程开源的配置中心,很多大厂在使用,在此记录下安装历程 服务器环境: 安装mysql 1.拉取镜像 docker pull idoop/docker-apollo 2.新建3个数据库, ...

  7. fiddler抓包-4-简单对数据进行mock

    前言 Fiddler中有一个 AutoRespinder 选项,我们可以用它作为mock数据,可以修改它的参数等等.所有信息的返回,与我们断点类似,但这里也可以mock状态码直接是404或者跳转至另一 ...

  8. CentOS安装vsftpd FTP后修改默认21端口方法

    第一步:修改配置文件 vi /etc/vsftpd/vsftpd.conf 首先需要在vsftpd配置文件中添加: listen_port=1802pasv_enable=YESpasv_min_po ...

  9. log4j2记录日志到数据库(完美支持mysql使用DruidDataSource)

    引用 log4j-core-2.12.1.jar log4j-web-2.12.1.jar 1:配置数据源 2:调用类 3:写入

  10. javascript时间戳与日期格式的相互转换

    这里总结下JavaScript中时间戳和日期格式的相互转换方法(自定义函数). 将时间戳转换为日期格式 function timestampToTime(timestamp) { var date = ...