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没有抓到返回值的时候,默认是不在列表显示请求信息的,能不能设置,我就不知道了,但是可以在 ...
随机推荐
- LG2463/BZOJ4698 「SDOI2008」Sandy的卡片 后缀数组
问题描述 LG2463 BZOJ4698 题解 看到\(n\)个数串,一开始不太好处理,可以很容易想到把这\(n\)个数串连到一起,形成一个大串,但是每个串之间不容易处理. 经过思考,想到在每个串中间 ...
- python3对urllib和urllib2进行了重构
python3对urllib和urllib2进行了重构,拆分成了urllib.request,urllib.response, urllib.parse, urllib.error等几个子模块,这样的 ...
- 原生js-input框全选
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- cf1208G Polygons 欧拉函数
链接 cf 给你两个正整数\(n\)和\(k\),询问在一个圆上你最少需要几个点构才能造出\(k\)个边数小于等于\(n\)的正多边形 思路 深受迫害,所以写的详细一点,不会请留言. 性质1 考虑加进 ...
- 忍者钩爪 ( ninja) 题解———2019.10.19
可以到这里测..嘿嘿嘿 题目: [问题 描述 ] 小 Q 是一名酷爱钩爪的忍者, 最喜欢飞檐走壁的感觉, 有一天小 Q 发现一个练习使用钩 爪的好地方,决定在这里大显身手. 场景的天花板可以被描述为一 ...
- 《Three js开发指南》 PDF
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍:<Three js开发指南> pdf下载地址:链接: https://pan.baidu.com/s/ ...
- 【51Nod1555】布丁怪
[51Nod1555]布丁怪 题面 51Nod 题目大意: 给你一个\(n\times n\)的棋盘以及\(n\)个棋子,每个棋子坐标为\((x_i,y_i)\),保证棋盘的每一行或一列都有且仅有一个 ...
- DP问题(3) : hdu 1080
题目转自hdu 1080,题目传送门 题目大意: 不想翻译! 解题思路: 其实就是一道变异的求lcs(Longest common subsequence 最长公共子序列)的题 不过,它的依据是下面这 ...
- win10安装docker并结合Idea2018.1部署springboot项目
一.准备工作 1..工具:win10,idea2018,maven3.5,jdk8 二.win10安装docker 1.win10安装docker:http://www.runoob.com/dock ...
- GreenPlum 大数据平台--基础使用(二)
连接参数 连接参数 描述 环境变量 应用名称 连接到数据库的应用名称,保存在application_name连接参数中.默认值是psql. $PGAPPNAME 数据库名 用户想要连接的数据库名称.对 ...