五、Linux实用故障排查

1,基础故障排查规则

大数据集群运行在linux系统上总会遇见各种各样的问题,我们要定位问题,基本从这几个方面入手排查:

CPU,

内存,

磁盘IO,

网络,

GC 等等

0,Centos自带的网页监控工具

Cockpit是一个交互式Linux服务器管理接口 、开源的基于web的管理工具,系统管理员可以执行诸如存储管理、网络配置、检查日志、管理容器等任务。通过Cockpit提供的友好的 Web 前端界面可以轻松地管理我们的 GNU/Linux 服务器,非常轻量级,Web 界面也非常简单易用。更重要的是通过Cockpit可以实现集中式管理。
(1),使用yum源的方式进行安装
1,当前机器需要联网,如果没有联网则需要配置本地数据源
## 安装监控工具
yum -y install cockpit
## 添加开机自启动
systemctl enable --now cockpit.socket
## 查看开启状态
systemctl status cockpit.socket

## 如果未开启,则需要手动开启
systemctl start cockpit.socket
(2),使用浏览器登录
登录 cockpit的文本端口是9090   
ip:9090就可以直接访问

## 登录的用户名和密码即为当前主机的用户名和密码

1,CPU

(1).top命令
在生产集群中我们通常通过top来查看cpu的使用率来判断系统的负载情况,Top 然后按1,可以看到cpu的使用率
(2).htop命令
# 先启用 epel 版本
yum -y install epel-release
# 然后安装 htop
yum -y install htop


## htop常用功能键
F1 : 查看htop使用说明
F2 : 设置
F3 : 搜索进程
F4 : 过滤器,按关键字搜索
F5 : 显示树形结构
F6 : 选择排序方式
F7 : 减少nice值,这样就可以提高对应进程的优先级
F8 : 增加nice值,这样可以降低对应进程的优先级
F9 : 杀掉选中的进程
F10 : 退出htop

/ : 搜索字符
h : 显示帮助
l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
u :显示所有用户,并可以选择某一特定用户的进程
s : 将调用strace追踪进程的系统调用
t : 显示树形结构

H :显示/隐藏用户线程
I :倒转排序顺序
K :显示/隐藏内核线程    
M :按内存占用排序
P :按CPU排序    
T :按运行时间排序

上下键或PgUP, PgDn : 移动选中进程
左右键或Home, End : 移动列表    
Space(空格) : 标记/取消标记一个进程。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程

2,内存

# 1,常见内存大小64 G---128G--256G---512G,通过free -g来查看系统内存是否不足
# -g 是以GB的方式显示;也可以使用 -m 是以MB的方式显示
$ free -g

           total        used        free      shared  buff/cache   available
Mem:             15           6           0           0           9           8
Swap:            31           0          31

## 显示结果详解
total 内存总数: 15G
used 已经使用的内存数: 6G
free 空闲的内存数:  0G
shared 当前已经废弃不用,总是0
buffers Buffer 缓存内存数: 298M
cached Page 缓存内存数:14G
available : 可用内存数



# 2,也可以查看详细信息
$ cat /proc/meminfo

3,磁盘 I/O

1.以下列举常见的磁盘种类,一般磁盘2T-4T,服务器支持的最大存储也不同,比较常见的48T,一般服务器可以支持12-24块盘。

  • sata(150M/s左右)
  • sas(300M/S左右)
  • ssd(最快也最贵)

2.查看磁盘I/O情况

# 每两秒刷新一次磁盘的I/O情况
$ iostat -mx 2
# 如果命令不存在,则需要手动安装
yum  install -y sysstat

3,查看磁盘的占用空间情况

$ df -h

4,查看磁盘的格式化格式,主流一般是xfs和ext4,系统盘默认是xfs,后续添加数据盘尽量也是xfs格式这样统一比较好,也方便写脚本批量挂盘

$ df -T
# 或者使用这个命令,并且这个命令还可以识别到ssd盘
$ lsblk

5,查看磁盘与未挂载的磁盘和分区信息

$ fdisk -l

6,查看磁盘挂载信息,新加磁盘要手动永久挂在需要在这个配置文件里添加,6列。

$ cat /etc/fstab

7,磁盘阵列

raid0(无冗余),
raid1(双备份),
raid5(n-1/n,损失其中一块盘的空间)等等

4.网络

1.查看能不能ping通

2.查看某端口是否被监听,如果是被误占用,则可以将穿出来的PID进行杀死

$ netstat -nlp | grep 端口号
$ kill -9 PID

3,网卡的模式配置选择 bound6 : 负载均衡

5.系统负载

  • 使用top命令即可,然后想要查看查看所有的cpu的活动状态可以在按完 top 命令之后,再按数字 1。
  • 使用htop命令:

6.GC问题

jps 查出要查看的 pid,用 jstat -gcutil pid ,看第四列 O 如果100%就是fullGC

7.查看对应的启动日志

找到对应的日志目录的方式:

1.可以通过查看配置文件的目录,

2,还可以通过查看对应进程pid的详细信息,然后查看 "-Dhadoop.log.dir="就可以得到对应的日志文件的目录 了。

$ ps -ef | grep PID
... ...

2.Centos7内核参数优化

(1).单进程最大打开文件数的限制

一般的发行版本,限制单进程最大可以打开1024个,此时是远远不能打开高并发需求的,所以可以做如下调整:

# 1.先查看当前的文件数限制
$ ulimit –n
# 2.设置最大文件数限制为 655535
ulimit –n 65535

(2),iptables 相关

如非必须,关掉或卸载iptables防火墙,并阻止kernel加载iptables模块。这些模块会影响并发性能。

3.安装大数据组件环境基础优化

  1. 系统盘raid1,存储盘raid0,hdfs三备份不用raid造成冗余,若对元数据安全系数特别高,namenode元数据所在磁盘可做raid1双备份。
  2. 关闭硬件节能模式(这个需要在装系统的时候,在bios中修改)
  3. 双网卡模式选择bound6(平衡负载)
  4. 存储盘多块,减少磁盘IO
  5. 禁用swap(虚拟内存)
  6. 时间同步
  7. 关闭selinux
  8. 关闭防火墙iptables
  9. 将root启动的单一进程的最大可以打开的文件数设置为65535个(ulimit–n 65535)

4.挖矿病毒检测


wangyq_sure
21 声望0 粉丝

认真学习、思考、反思、总结、分享日常的编程经验~~