rsyslog服务异常导致Python rpc服务启动异常的排查

Posted 360技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsyslog服务异常导致Python rpc服务启动异常的排查相关的知识,希望对你有一定的参考价值。

奇技 · 指南

今日分享:rsyslog服务异常导致Python rpc服务启动异常的排查


问题背景

1. 线python rpcagent

2. daemonize

下面是涉及的关键部分的代码

问题排查


直接原因排查

strace⽐⼀息:

  1. 1.       启动异常

    rsyslog服务异常导致Python rpc服务启动异常的排查

  2. 2.       启动正常

    rsyslog服务异常导致Python rpc服务启动异常的排查

通过/dev/log访Connection refused

rsyslog服务异常导致Python rpc服务启动异常的排查

rsyslog服务异常导致Python rpc服务启动异常的排查

在服务能正常启动的服务器上,查看/dev/log文件是哪个程序在占用,可以知道该文件是rsyslogd进程所有:

rsyslog服务异常导致Python rpc服务启动异常的排查

同时,在服务不能正常启动的服务器上,查看rsyslogd服务是否正常,发现服务处于终止状态:

rsyslog服务异常导致Python rpc服务启动异常的排查

在尝试重启rsyslogd服务后,重启rpcagent端服务,已经能正常启动了 


daemonize的逻辑

1.Daemonize 类的初始化函数:

rsyslog服务异常导致Python rpc服务启动异常的排查

2.Daemonize类中的start函数

rsyslog服务异常导致Python rpc服务启动异常的排查

上面的逻辑logger/dev/logrsyslog

rsyslog服务异常导致Python rpc服务启动异常的排查

可以判断出,rsyslog服务为异常终,因此,/dev/log会因为来不及清理残留,导致不可⽤(Connection refused)

问题修复

鉴于上的两点原因,可以从以下两个⽅⾯修复:

1. 在Daemonize类初始化不指定logger时,保证系统rsyslog服务可,或处于正常停的状态(/dev/log残留);

2. Daemonize类初始化时,指定logger;

分别针对上两种修复做了验证,都能解决问题,在法保证rsyslog服务状态(或需通过添加额外的机制检验)时,倾向于使种修复式。


中奖名单公布

在公布中奖名单之前,要提醒各位参与抽奖的朋友

一定要看清楚抽奖条件哦

另外,不要刷票!!!

活动一中奖名单:

一等奖:

rsyslog服务异常导致Python rpc服务启动异常的排查

二等奖:

rsyslog服务异常导致Python rpc服务启动异常的排查

三等奖:

rsyslog服务异常导致Python rpc服务启动异常的排查

活动二中奖名单:

rsyslog服务异常导致Python rpc服务启动异常的排查

rsyslog服务异常导致Python rpc服务启动异常的排查

rsyslog服务异常导致Python rpc服务启动异常的排查

rsyslog服务异常导致Python rpc服务启动异常的排查

小编说了中奖率很高!!

错过了是不是很遗憾!!
往期精彩回顾

技术干货|一手资讯|精彩活动

扫码关注我们

以上是关于rsyslog服务异常导致Python rpc服务启动异常的排查的主要内容,如果未能解决你的问题,请参考以下文章

RPC异常重试机制详解

postfix和dovecot服务异常,重启服务后又会自动停掉的解决办法

类继承导致 RPC 调用 msgpack 序列化问题分析

HBase 客户端避坑指南

servlet 的 GWT RPC 服务分配异常

拦截 GWT RPC 的异步代理服务异常