改了配置,服务却像没看见
【摘要】 改完配置文件,重启服务,行为一点没变。这种事我碰到过几次,最后都卡在同一处,进程读的根本不是我改的那份配置。先确认进程实际的启动命令。ps 里看完整命令行,很多服务会用参数指定配置文件路径,默认路径和你改的那份不是同一个。有一次我改的是 /etc 下的配置,进程启动时用 -c 指到了安装目录下的一份,老配置原封不动,当然不生效。再看进程的启动时间。配置文件改完之后,进程有没有真的重启过。sy...
改完配置文件,重启服务,行为一点没变。这种事我碰到过几次,最后都卡在同一处,进程读的根本不是我改的那份配置。
先确认进程实际的启动命令。ps 里看完整命令行,很多服务会用参数指定配置文件路径,默认路径和你改的那份不是同一个。有一次我改的是 /etc 下的配置,进程启动时用 -c 指到了安装目录下的一份,老配置原封不动,当然不生效。
再看进程的启动时间。配置文件改完之后,进程有没有真的重启过。systemctl restart 显示成功,不代表新进程已经起来了,也可能主进程没退干净,还是老的那个在跑。对一下进程的启动时间和配置文件的修改时间,顺序不对就先解决重启的问题。
还有一层是覆盖关系。主配置文件里 include 了别的目录,目录里的同名项会覆盖主文件里的;环境变量和启动参数的优先级通常又高于配置文件。改了一处没生效,把这条链从高到低捋一遍,看最终生效值是从哪一层来的,别只盯着自己刚改的那一行。
验证别靠猜。多数服务都留了查看生效配置的办法,有的能直接打印当前配置,有的在启动日志里会写加载了哪个文件。改之前先跑一遍拿到基线,改完再跑一遍对比,值变了才算改对。日志里如果有配置解析报错,服务可能回退到默认配置继续跑,表面看一切正常,这也是一种没生效。
排查顺序固定下来就快了。先看进程读哪份,再看进程是不是新的,最后看有没有更高优先级的值把改动盖掉。三步都过了还不生效,再去怀疑配置项本身写错。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)