zookeeper故障排查centos技巧

要对 CentOS Zookeeper 进行故障排除,首先检查服务状态:
1 .服务是否中断?启动它并让它自动启动:systemctl startzookeeper,然后将其设置为自动启动:systemctlenablezookeeper
2 .检查日志发现问题,看/var/log/zookeeper/zookeeper.out,使用tail -f /var/log/zookeeper/zookeeper.out进行实时监控,关键是看ERROR和WARNING,看错误信息,比如Connection Loss或者Leader Election Failed。

3 是不是配置文件有问题?查看/etc/zookeeper/conf/zoo.cfg,目录中有一对权限,节点ID与myid匹配,端口不忙,参数合理。

4 网络和防火墙?防火墙是否开放了2 1 8 1 端口?如果未启用,请启用它:firewall-cmd --zone=public --add-port=2 1 8 1 /tcp --permanent,然后重新启动防火墙:firewall-cmd --reload。
查看端口占用情况:netstat -tuln | grep 2 1 8 1 如果忙,则终止该进程。

5 Java环境?检查 Java 版本。
如果没有安装,请安装OpenJDK1 .8 : yum install java-1 .8 .0-openjdk-devel
6 监控集群?使用四字命令:echo stat | nc localhost 2 1 8 1 检查状态;回声鲁克 | nc localhost 2 1 8 1 来测试服务;回声 mntr | nc localhost 2 1 8 1 获取指标。

7 数据和日志?目录数据损坏?备份完成后,删除版本2 文件夹,然后重新启动服务。

8 重启服务后,查看集群状态。

9 高级问题?领导人选举问题?检查 myid 和 server.x。
磁盘空间?查看/var/lib/zookeeper。
是不是注册表太大了?编辑 logrotate 配置。

1 0问题还没有解决吗?向社区寻求帮助并提供日志、配置、命令输出和网络测试结果。
这个方法可以解决9 0%的问题。
定期备份、监控指标并预防问题。

centos postgresql故障排查技巧

我上周尝试过这个方法。
检查 CentOS 上的 PostgreSQL 问题。

先看日志。
路径是/var/log/postgresql/。
使用tail -f postgresql-{版本号}-main.log命令实时查看。
或者使用grep文件名“error”来查找错误。

然后查看pg_stat_activity。
该命令是 SELECT FROM pg_stat_activity;。
找出谁在使用该数据库。

再次使用 EXPLAIN 查询。
例如 EXPLAIN SELECT FROM my_table WHERE id=1 ;。
查看查询是如何执行的。

如果速度慢,请尝试 pg_stat_statements。
首先编辑postgresql.conf并添加shared_preload_libraries='pg_stat_statements'。
重新启动systemctl服务重新启动postgresql。
然后创建扩展 pg_stat_statements;在数据库中。
检查 SELECT FROM pg_stat_statements;仍然。

索引损坏了吗?使用 REINDEX 命令。
例如 REINDEX INDEX pg_class_oid_index;。

检查服务器资源是否充足。
使用top查看CPU内存。
使用 vmstat 1 5 检查内存和磁盘。
使用 iostat -x 1 查看磁盘详细信息。

检查配置文件是否正确。
调整postgresql.conf中的内存参数。
pg_hba.conf 中的 IP 地址是正确的。
更改服务后,需要重启systemctl restart postgresql。

您还可以使用工具。
pgBadger 生成报告。
pgFouine 分析日志。

权限不足?切换到 postgres 用户。
命令是 sudo -u postgres psql。
检查角色 SELECT FROM pg_roles;。

字符集有问题吗? 创建数据库时添加ENCODING 'UTF8 '。
检查当前编码 SELECT datname, pg_encoding_to_char(encoding) FROM pg_database;。

如果您无法弄清楚,请提供错误日志。
记得备份pg_dump。
版本也更新到最新了。

算了。

Zookeeper在CentOS上的故障排查方法有哪些

说实话,我在CentOS上排查Zookeeper的时候遇到了很多坑。
但看石头过河,是需要有一些技巧的。
我尝试了以下步骤,非常有效。
当然,它们可能有点极端,但都是基于真实经验的。

首先我们来说一下服务状态检查。
我之前遇到过一件奇怪的事情,服务明显停止了,但 systemctl status Zookeeper 显示“活动(正在运行)”。
此时,直接使用jstack命令查看线程堆栈,很可能会发现某个线程陷入了死循环。
命令行很难输入吗?然后使用 JVisualVM 这样的现成工具并拖动它来查看实时线程状态。
这比干读日志要好得多。

对于日志分析,不要只关注zookeeper.out。
我曾经遇到过集群分裂的问题,关键日志隐藏在console.log中。
Zookeeper的日志分类非常详细,错误率值得注意,但有时WARN之后的信息才是真正的罪魁祸首。
因此,我发现一个节点比其他节点少了 3 0 秒,使得当领导者发生变化时,它认为自己仍然是领导者。

配置验证是另一个大陷阱。
我见过一家公司有两个开发环境使用相同的配置参数,但一个工作正常,另一个卡住。
Zoo.cfg 有问题吗?然后检查myid文件。
我的一个朋友丢失了该文件,因此集群不断报告“配置不匹配”。
最烦人的是,这个文件可以手动编辑,但不要盲目去做。
每个节点必须与zoo.cfg中的server.x编号相同。
我更受网络问题的困扰。
机房进行了网络升级。
结果有一个节点能ping通,但Telnet无法连接,因为MTU值太小。
此时不要太快质疑防火墙。
首先尝试跟踪方法。
我发现某个特定的开关有问题。
还有一种情况更有趣。
客户端无法连接,但客户端已连接可以在Zookeeper进程中查看请求。
后来发现客户端使用了自签名证书,并且没有启用Zookeeper SSL配置。
像这样有趣的问题还有很多。

在资源监控方面,我有为每个节点打开单独的htop窗口的习惯。
有一次,我靠这个发现了问题。
当CPU突然飙升到9 0%时,我发现某个节点正在处理大量的重试请求。
此时不要急于杀死进程。
首先,检查日志中是否有类似“SyncFailed”的错误。
结果发现某个节点磁盘IO有问题。

四字命令特别有用。
我已经无数次使用 stats 命令。
有一个经常更换的子簇领导者。
我用mntr命令查看,发现有一个节点的“SyncTime”特别高。
找了半天,发现安装的硬盘是机械盘,同步处理条卡在8 0%,无法移动。
对于这种细节问题,使用四字命令来排查效率会更高。

最后重新启动服务。
不要小看这个技巧。
我遇到了至少三个问题,并且在重新启动后都立即解决了。
但重启前应做好备份。
有一次我重启前没有保存数据,所有数据都丢失了。
我仍然记得那次侮辱。
如果不起作用,请向官方文档或 StackOverflow 寻求帮助。
请记住随身携带日志和配置片段。
不要只是说“我的 Zookeeper 坏了”。
解决Zookeeper问题的关键是要小心。
有时,一个看不见的配置错误可能会导致整个系统崩溃。
我见过的最糟糕的情况之一是因为一个节点没有设置数据存储路径,所有数据都写入根目录,最终整个系统崩溃。
每个人都会犯这样的愚蠢错误,但犯了之后一定要记住。

Zookeeper故障排查在CentOS上如何操作

在 CentOS 上对 Zookeeper 进行故障排除的步骤:
1 .查看日志路径:/var/log/zookeeper/zookeeper.out,使用cat或tail -f实时跟踪。
2 、调整日志级别:编辑zoo.cfg中的log4 j.rootLogger为DEBUG,重启服务即可获取调试信息。
3 . 发送四字命令:使用echo和nc/telnet查看客户端状态、健康状况、集群指标和连接情况。
4 .处理节点故障:在停机前分析日志发现异常,检查资源、网络和Leader性能。
5 、查看端口占用情况:使用netstat定位2 1 8 1 端口的进程,使用ps确认进程详细信息。
6 、管理服务状态:检查systemctl、start、restart以及设置autostart开机启动。
7 、验证配置文件:检查zoo.cfg主要参数,确认dataDir、clientPort、myid正确。
8 .监控系统资源:top、free-h、df-h、du-sh检查CPU、内存和磁盘空间。
9 、检查版本和环境:确认JDK版本,检查JAVA_HOME和ZOOKEEPER_HOME环境变量。
1 0.使用高级工具:线程转储、GC日志分析。
1 1 .请求外部支持:向社区提供版本、JDK、CentOS版本、注册表和四字命令输出。

按照流程并使用工具来定位问题,复杂的问题可以在模拟环境中重现。