最近重新对cephfs进行性能测试。

测试步骤:

(1) 选取一个特地版本的操作系统内核,挂载20000个客户端;

(2) 用iozone中的fileop工具,在每隔挂载点上都跑一个fileop进程;

(3)过一段时间看写cephfs的状态,结果就变成下面这样的了。

[root@ceph741 ~]# ceph -s
cluster 1338affa-2d3d-416e-9251-4aa6e9c20eef
health HEALTH_WARN
mds0: Behind on trimming (89/30)
mds0: Client ubuntu:guest failing to respond to capability release
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 36, quorum 0,1,2 ceph741,ceph742,ceph743
fsmap e5976: 1/1/1 up {0=ceph742=up:active}, 2 up:standby
osdmap e65: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v108831: 576 pgs, 3 pools, 27944 MB data, 98330 objects
56925 MB used, 229 GB / 284 GB avail
576 active+clean
client io 8020 B/s rd, 6618 kB/s wr, 1038 op/s rd, 3812 op/s wr

具体这是什么意思?找到了一个比较全的说明。

转载自:https://drunkard.github.io/cephfs/health-messages/

CephFS 健康消息

集群健康检查

在文件系统映射图结构(以及封闭式的 MDS 映射图)变为特定状态时, Ceph 监视器守护进程会产生健康消息。


消息: mds rank(s) ranks have failed

描述: 一或多个 MDS rank 没能分给守护进程,只有可用的替补守护进程启动后集群才能恢复运转。


消息: mds rank(s) ranks are damaged

描述: 一或多个 MDS rank 遇到了损伤严重的元数据,只有修复这些数据它才能再次启动。


消息: mds cluster is degraded

描述: 一或多个 MDS rank 现在的状态不是 up 且未在线运行,此问题解决前客户端只能暂停元数据操作。此情形涉及失效、损坏的 rank ,另外也包括已分到 MDS 但还没进入 active 状态的 rank (如处于 replay 状态的 rank )。


消息: mds names are laggy

描述: 这些 MDS 守护进程至少有 mds_beacon_grace 秒(默认为 15s )没向监视器发送信标消息( beacon message )了,它们本来应该每 mds_beacon_interval 秒(默认为 4s )发送一次的,它们可能崩溃了。 Ceph 监视器会自动用灾备替换掉滞后的守护进程。


消息: insufficient standby daemons available

描述: 一或多个文件系统配置的是需要一定数量的灾备守护进程(包括灾备重放 standby-replay 守护进程),但是集群内却没有足够多的守护进程。非重放的灾备进程可算进任意文件系统(即它们可重叠)。这个警告可用 ceph fs set standby_count_wanted 来配置, count 配置为 0 时禁用此功能。

守护进程报告的健康检查¶

MDS 守护进程能定位各种各样不该出现的状况,并通过 ceph status 出示给操作员。这些状况附带了人类可读的消息,另外 JSON 格式的输出还有一个以 MDS_HEALTH 打头的唯一代码。


消息: “Behind on trimming...”

代码: MDS_HEALTH_TRIM

描述: CephFS 维护着的元数据日志是切成日志片段( log segment )的。日志的长度(按片段数量算)是用 mds_log_max_segments 选项控制的,当片段数量超过配置时, MDS 就开始写回元数据,以便删除(裁剪、 trim )最老的片段。如果回写得太慢,或者软件缺陷妨碍了裁剪,这样的健康消息就可能出现。此消息出现的阈值是片段数量达到 mds_log_max_segments 的两倍。


消息: “Client name failing to respond to capability release”

代码: MDS_HEALTH_CLIENT_LATE_RELEASE, MDS_HEALTH_CLIENT_LATE_RELEASE_MANY

描述: CephFS 客户端收到了 MDS 发出的能力( capabilities ) ,它就像锁。有时候,比如一个客户端需要访问权, MDS 就会让别的客户端释放它们的能力,如果有客户端没响应、或者有缺陷,它就有可能没及时释放、或者根本不释放。如果某个客户端的响应时间超过了 mds_revoke_cap_timeout (默认为 60s ),这条消息就会出现。


消息: “Client name failing to respond to cache pressure”

代码: MDS_HEALTH_CLIENT_RECALL, MDS_HEALTH_CLIENT_RECALL_MANY

描述: 客户端有各自的元数据缓存,客户端缓存中的条目(比如索引节点)也会存在于 MDS 缓存中,所以当 MDS 需要削减其缓存时(保持在 mds_cache_size 以下),它也会发消息给客户端让它们削减自己的缓存。如果有客户端没响应或者有缺陷,就会妨碍 MDS 将缓存保持在 mds_cache_size 以下, MDS 就有可能耗尽内存而后崩溃。如果某个客户端的响应时间超过了 mds_recall_state_timeout (默认为 60s ),这条消息就会出现。


消息: “Client name failing to advance its oldest client/flush tid”

代码: MDS_HEALTH_CLIENT_OLDEST_TID, MDS_HEALTH_CLIENT_OLDEST_TID_MANY

描述: CephFS 的客户端-MDS 协议有一个名为 oldest tid 的字段,可让客户端通知 MDS 哪些请求全部完成了,这样的话它就有可能被 MDS 遗忘。如果一个有缺陷的客户端未能上报这个字段,那么与之相关的 MDS 就不能擅自清理这些请求所占用的资源。如果某个客户端的请求在 MDS 端已完成、但尚未收到客户端上报的 oldest tid 值,这样的请求数量超过 max_completed_requests (默认为 100000 )时,此消息就会出现。


消息: “Metadata damage detected”

代码: MDS_HEALTH_DAMAGE,

描述: 从元数据存储池读取时,遇到了元数据损坏或丢失的情况。这条消息表明损坏之处已经被妥善隔离了,以使 MDS 继续运作,如此一来,若有客户端访问损坏的子树就返回 IO 错误。关于损坏的细节信息可用 damage ls 管理套接字命令获取。只要一遇到受损元数据,此消息就会立即出现。


消息: “MDS in read-only mode”

代码: MDS_HEALTH_READ_ONLY,

描述: MDS 已进入只读模式,任何尝试修改元数据的操作都会收到 EROFS 错误代码。在 MDS 写入元数据存储池时遇到写错误、或者管理员用 force_readonly 管理套接字命令强行设置时, MDS 会进入只读模式。


消息: N slow requests are blocked”

代码: MDS_HEALTH_SLOW_REQUEST,

描述: 一或多个客户端请求没有及时完成,说明 MDS 要么跑得太慢、要么 RADOS 集群没及时确认日志写操作、或者软件有缺陷。可用 ops 管理套接字命令罗列未完成的元数据操作。如果有客户端请求花费的时间超过 mds_op_complaint_time (默认为 30s ),此消息就会出现。


消息: “Too many inodes in cache”

代码: MDS_HEALTH_CACHE_OVERSIZED

描述: MDS 没能成功削减缓存,未能降到管理员设置的上限之下。如果 MDS 缓存涨得太大,守护进程可能会耗尽内存然后崩溃。如果实际的缓存尺寸(按索引节点算)比 mds_cache_size (默认为 100000 )大至少 50% ,这个消息就会出现。


cephfs测试中出现的问题的更多相关文章

  1. Web测试中常见分享问题

         Web测试中,由于开发通常指注重完成H5页面的逻辑功能,对各种系统.浏览器等考虑不周,同时Android端各类机型碎片化,容易产生兼容性问题,这其中以分享类型为最. 本文简单分析总结一些测试 ...

  2. WEB 业务测试中需要关注的问题

    汇总起来分为:    1.浏览器自身的一些操作,后退键,刷新键,样式兼容,多浏览器之间的一些操作 2.键盘快捷键的一些支持 3.所有前端校验,必须也在后端代码进行校验,验证后端是否校验可越过前端校验进 ...

  3. 反向代理在Web渗透测试中的运用

    在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现, ...

  4. Jmeter—7 测试中使用到的定时器和逻辑控制器

    1 测试中提交数据有延时1min,所以查询数据是否提交成功要设置定时器. 固定定时器页面:单位是毫秒 [dinghanhua] 2 集合点.Synchronizing Timer 集合点编辑:集合用户 ...

  5. TV测试中的按键长按操作模拟

    从UiAutomator在TV测试中的局限性说起: 智能TV的操作和手机的操作有很大不同,一般智能TV的操作为遥控器按键操作,来向TV OS发送  KeyCode,以完成指定操作. UiAutomat ...

  6. [转]移动App测试中的最佳做法

    Daniel Knott 用过各种不同编程语言和软件质量保证工具.他在软件开发和测试方面干了七年,自2010年起,他一直在德国汉堡的XING AG公司就职,几个项目里,比如XING调查和XING建议, ...

  7. 算法效果AB测试中的PV-UV不对称性

    (转载请注明原创于潘多拉盒子) 算法效果的AB测试,是指在相同的应用场景下,对比不同算法的效果.通常的做法是,按照PV或UV随机分配流量到算法上,计算算法的CTR或转化率进行对比.为了表述简单,我们假 ...

  8. Junit 4 测试中使用定时任务操作

    难度:测试中执行线程操作 package com.hfepc.job.dataCollection.test; import java.util.Date; import java.util.List ...

  9. app测试中遇到问题总结

    工作总结: 1 这两天由于工作,需要进行抓包,使用了Charles,fidder,发现一个坑点: charles没有抓到返回值的时候,默认是不在列表显示请求信息的,能不能设置,我就不知道了,但是可以在 ...

随机推荐

  1. B1043 输出PATest (20 分)

    一.技术总结: 对于哈希字符处理方式,一般是用一个数组存储字符出现的次数,然后再考虑后续. 同时,在输出时,比如这题要输出指定几个字符,我们可以首先统计下这几个字符一共出现的次数sum,然后输出一个就 ...

  2. ZROI 暑期高端峰会2019 总结

    FBI Warning:以下博客含有 FBI Warning 的都是包含大量人类本质之一的. 前几天听课: Day1 组合计数 Day1 序列数据结构 Day2 线性代数 Day3 图论 Day3 字 ...

  3. [LeetCode] 38. Count and Say 计数和读法

    The count-and-say sequence is the sequence of integers with the first five terms as following: 1. 1 ...

  4. Java 中 override 和 overload 区别

    问题出现: 即使对于一个经验丰富的开发人员来说,方法重载和方法覆盖的区别都能让他犹豫一下, 对于新手来说,经常容易弄混淆. 有没有比较深入浅出的理解方式,能让人过目不忘,用起来还能有条件反射般的速度呢 ...

  5. Qt对话框之二:模态、非模态、半模态对话框

    一.模态对话框 模态对话框:阻塞同一应用程序中其它可视窗口输入的对话框.模态对话框有自己的事件循环,用户必须完成这个对话框中的交互操作,并且关闭了它之后才能访问应用程序中的其它任何窗口. 显示模态对话 ...

  6. 《Linux就该这么学》培训笔记_ch02_一些必须掌握的Linux命令

    本文在原来作者的基础上做一些符合自己的修改.原文参考: <Linux就该这么学>培训笔记_ch02_一些必须掌握的Linux命令.     本章的内容虽然多,基本都是书本原话,但是笔记能精 ...

  7. Redux + React-router 的入门和配置教程

    (转载)原文链接: https://juejin.im/post/5dcaaa276fb9a04a965e2c9b#heading-18 前言

  8. MySQL 快速添加百万条数据

    需要向数据库添加100W条测试数据,直接在普通表中添加速度太慢,可以使用内存表添加,然后将内存表数据复制到普通表 创建表 # 内存表 DROP TABLE IF EXISTS `test_memory ...

  9. 全链路追踪技术选型:pinpoint vs skywalking

    目前分布式链路追踪系统基本都是根据谷歌的<Dapper大规模分布式系统的跟踪系统>这篇论文发展而来,主流的有zipkin,pinpoint,skywalking,cat,jaeger等. ...

  10. 一、hexo+github搭建个人博客的过程记录

    前提: 1.新建一个github仓库 2.安装配置Node.js 3.安装配置Git 前提 步骤1.新建一个github仓库 打开github网站,(注册)登录账号,新建一个仓库; 注:==仓库名称要 ...