cephfs测试中出现的问题
最近重新对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测试中出现的问题的更多相关文章
- Web测试中常见分享问题
Web测试中,由于开发通常指注重完成H5页面的逻辑功能,对各种系统.浏览器等考虑不周,同时Android端各类机型碎片化,容易产生兼容性问题,这其中以分享类型为最. 本文简单分析总结一些测试 ...
- WEB 业务测试中需要关注的问题
汇总起来分为: 1.浏览器自身的一些操作,后退键,刷新键,样式兼容,多浏览器之间的一些操作 2.键盘快捷键的一些支持 3.所有前端校验,必须也在后端代码进行校验,验证后端是否校验可越过前端校验进 ...
- 反向代理在Web渗透测试中的运用
在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现, ...
- Jmeter—7 测试中使用到的定时器和逻辑控制器
1 测试中提交数据有延时1min,所以查询数据是否提交成功要设置定时器. 固定定时器页面:单位是毫秒 [dinghanhua] 2 集合点.Synchronizing Timer 集合点编辑:集合用户 ...
- TV测试中的按键长按操作模拟
从UiAutomator在TV测试中的局限性说起: 智能TV的操作和手机的操作有很大不同,一般智能TV的操作为遥控器按键操作,来向TV OS发送 KeyCode,以完成指定操作. UiAutomat ...
- [转]移动App测试中的最佳做法
Daniel Knott 用过各种不同编程语言和软件质量保证工具.他在软件开发和测试方面干了七年,自2010年起,他一直在德国汉堡的XING AG公司就职,几个项目里,比如XING调查和XING建议, ...
- 算法效果AB测试中的PV-UV不对称性
(转载请注明原创于潘多拉盒子) 算法效果的AB测试,是指在相同的应用场景下,对比不同算法的效果.通常的做法是,按照PV或UV随机分配流量到算法上,计算算法的CTR或转化率进行对比.为了表述简单,我们假 ...
- Junit 4 测试中使用定时任务操作
难度:测试中执行线程操作 package com.hfepc.job.dataCollection.test; import java.util.Date; import java.util.List ...
- app测试中遇到问题总结
工作总结: 1 这两天由于工作,需要进行抓包,使用了Charles,fidder,发现一个坑点: charles没有抓到返回值的时候,默认是不在列表显示请求信息的,能不能设置,我就不知道了,但是可以在 ...
随机推荐
- Codeforces Round #530 (Div. 2) F 线段树 + 树形dp(自下往上)
https://codeforces.com/contest/1099/problem/F 题意 一颗n个节点的树上,每个点都有\(x[i]\)个饼干,然后在i节点上吃一个饼干的时间是\(t[i]\) ...
- machine_math2
1. 2. 3.拉格朗日对偶??? 弱对偶 强对偶: <1>slater条件(强对偶的充分条件): 1.凸函数. 2.存在一个可行解满足不等式成立. 4.KKT条件
- [LeetCode] 919. Complete Binary Tree Inserter 完全二叉树插入器
A complete binary tree is a binary tree in which every level, except possibly the last, is completel ...
- IdentityServer4实现原理
OAuth&OpenIDConnect是什么? 最近因为工作的原因,大概有两个月时间没写博客了,本来今年给自己的目标是每个月写一篇,或许记录工作中踩过的一些坑,或许学习一些新的技术框架.说实话 ...
- 慕课网springboot博客系统开发(一)----spring initializr的使用 gradle构建项目
spring initializr工具的地址:https://start.spring.io/:通过它可以很方便的创建springboot项目 这里我们选择使用gradle作为项目的构建工具,此spr ...
- Springboot启动一直卡在{dataSource-1} inited
Springboot启动一直卡在{dataSource-1} inited 错误原因: 暂时未知,猜测是因为设置端点的问题 解决办法: 去除所有断点: 然后再次启动就好了. 如果还有错: 那么重新导入 ...
- cv2.putText,cv2.rectangle方法
常用方法:cv2.putText(img,xy,(x1,y1), cv2.FONT_HERSHEY_PLAIN, 2, (0, 0, 255), thickness=2)img:要作用的图片xy:显示 ...
- Python之threading多线程,多进程
1.threading模块是Python里面常用的线程模块,多线程处理任务对于提升效率非常重要,先说一下线程和进程的各种区别,如图 概括起来就是 IO密集型(不用CPU) 多线程计算密集型(用CPU) ...
- jdk源码调试进去形参没有值
https://blog.csdn.net/u010407050/article/details/76690478 1.在你的D:盘新建jdk文件夹,然后在文件夹里面分别创建两个文件夹jdk_src( ...
- 本周学习总结(原生+Echarts地图)
本周主要想完成工作中大屏地图相关的知识,所以学习的时间不是很长 dsa.js(数据结构) 拖了两个星期还没看,等啥时候继续研究算法和数据结构再看源码 GoJS 有时间要好好研究下 https://gi ...