最近项目上了服务之后,稳定运行一段时间后,突然,某天说是数据不对,经过排查后,抽数的服务居然假死了。
什么是假死呢?就是服务看起来是在正常运行,但是实际上已经不跑了,检查了日志后,居然好几天的的日志都不写了。
重启后,服务又再次正常了,但是服务假死的问题,却是不解之谜,今天我们就来分析下原因。
首先,我们先来看下服务的概念,如下:
Windows服务是设计在Windows操作系统中后台运行的程序、脚本或应用程序,无需用户干预。这些服务执行各种任务,如管理硬件设备、提供网络服务、执行定期任务等。
服务关键点如下:
- 后台操作:服务独立于用户会话运行,这意味着它们可以执行任务,即使没有用户登录。
- 控制面板和服务管理器:用户可以通过控制面板或Microsoft管理控制台中的服务管理器来管理服务。
- 启动类型:每个服务都可以配置启动类型,如自动、手动或禁用。这决定了服务在系统启动时是否自动启动或仅在需要时启动。
- 服务依赖性:一些服务依赖于其他服务才能正常运行。这些依赖关系必须满足,服务才能成功启动。
- 服务帐户:服务可以在不同的安全上下文下运行,如本地系统帐户、特定用户帐户或托管服务帐户。帐户的选择会影响服务的特权和访问权限。
- 服务恢复选项:管理员可以为服务配置恢复选项,指定服务失败时要采取的操作,如重新启动服务或运行脚本。
- Windows服务控制管理器(SCM):SCM是负责管理服务的系统组件。它根据配置的启动类型启动服务,并监视其状态。
那我们大概了解了服务的知识跟关键点后,我们接下来就来分析一下,为什么服务会出现假死的情况,毕竟不从根本上解决问题的话。
我们会被同样的问题,一直困扰,一直有问题,我们就要每次都花时间来处理这些问题,对于我们做项目是相当不利的。
根据日志排查,服务停的前一天确实是发生了错误,似乎是查询超时了,导致了服务一直停在程序超时的地方,然后就一直不会继续跑了。
此时,我也是一脸茫然,因为怎么说呢,自己在本地搭建程序后,程序就算报错,也是每天会按时跑程序,可以查询到每天的日志。
并不会产生服务器那种情况,就是服务显示一直在跑,实际上,程序已经不会接着往下跑,产生每天的日志。
这里大概的想法就是,我个人猜测,是这台服务器上,有哪些配置或是程序影响了这些服务的运行。
至于具体是哪些程序,需要根据自己服务器上的配置来排查,大家要是有好的建议,欢迎可以留言,一起学习进步。
以上是自己的做为资深开发的一些个人经历,把这些经验分享给大家,希望以后大家在从事开发中,可以避免不必要的麻烦,跟浪费时间精力。
要是大家喜欢我的文章的话,可以在文章下留言或是联系我,共同进步,共同探讨开发的一些案例,促进彼此间的交流,分享一些日常的开发趣事。
共有 0 条评论